diff --git a/.eleventy.js b/.eleventy.js deleted file mode 100644 index d602de1458..0000000000 --- a/.eleventy.js +++ /dev/null @@ -1,19 +0,0 @@ -import handlebarsPlugin from '@11ty/eleventy-plugin-handlebars'; - -export default (eleventyConfig) => { - eleventyConfig.addPlugin(handlebarsPlugin); - eleventyConfig.addPassthroughCopy('pages/styles/protocol.css'); - eleventyConfig.addPassthroughCopy('pages/images/'); - eleventyConfig.addPassthroughCopy('search_index/'); - eleventyConfig.addPassthroughCopy('.nojekyll'); - eleventyConfig.addPassthroughCopy('pages/service-worker.js'); - - return { - pathPrefix: '/devtools-protocol/', - dir: { - input: 'pages', - output: 'devtools-protocol', - data: '_data', - }, - }; -}; diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index cd2b23b2ef..739163bff1 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -8,5 +8,4 @@ ### What is the expected result? - ### What happens instead of that? diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ef7fee2baf..7820842a83 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,34 +4,30 @@ on: push: branches: - master +permissions: + contents: read + jobs: build_test: - runs-on: ubuntu-latest + permissions: + contents: read steps: - - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Install pnpm + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 - name: Set up Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 with: node-version-file: '.nvmrc' - cache: npm - - - run: npm ci - - run: npm run build - - - name: primitive test - run: npm run test + cache: pnpm - - name: install lhci - run: npm install @lhci/cli@latest + - run: pnpm install --frozen-lockfile + - run: pnpm run build -# - name: run lhci -# run: | -# npx lhci autorun \ -# --collect.url=http://localhost:8696/devtools-protocol/ \ -# --collect.url=http://localhost:8696/devtools-protocol/tot/Page/ \ -# --upload.target=temporary-public-storage + - name: preflight + run: pnpm run preflight diff --git a/.lighthouserc.js b/.lighthouserc.js deleted file mode 100644 index d282b21df2..0000000000 --- a/.lighthouserc.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -module.exports = { - ci: { - collect: { - numberOfRuns: 3, // ignored due to https://github.com/treosh/lighthouse-ci-action/issues/48 - startServerCommand: "npm run serve", - startServerReadyPattern: "Served by", - }, - assert: { - preset: "lighthouse:no-pwa", - "assertions": { - // TODO(paulirish): fix these - "color-contrast": "warn", - "unsized-images": "warn", - "cumulative-layout-shift": "warn", - "render-blocking-resources": "warn", - "uses-long-cache-ttl": "warn", - "tap-targets": "warn", - "dom-size": "warn", - "csp-xss": "warn", - "label": "warn", - } - } - }, -}; diff --git a/.nojekyll b/.nojekyll deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.nvmrc b/.nvmrc index 2bd5a0a98a..a45fd52cc5 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +24 diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 0000000000..cee34fc1a6 --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "ignorePatterns": ["data/**", "devtools-protocol/**", "node_modules/**"] +} diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000000..dc03ff28b2 --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,24 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["typescript", "unicorn", "oxc"], + "categories": { + "correctness": "error" + }, + "env": { + "node": true, + "browser": true, + "builtin": true + }, + + "ignorePatterns": ["data/**", "devtools-protocol/**", "node_modules/**"], + "rules": { + "no-unused-vars": [ + "error", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^.*$" + } + ] + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json index b6cc2aae60..beddc4ffd4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,6 @@ // Place your settings in this file to overwrite default and user settings. { "search.exclude": { - "devtools-protocol/**": true, - "bower_components/**": true + "devtools-protocol/**": true } } diff --git a/create-search-index.cjs b/create-search-index.cjs deleted file mode 100644 index caac650cda..0000000000 --- a/create-search-index.cjs +++ /dev/null @@ -1,143 +0,0 @@ -'use strict'; - -/** - * Utility command that creates the search index for pages/_data/?.json. - */ - -const fs = require('fs'); -const VERSIONS_FILE = 'pages/_data/versions.json'; - -const versionsText = fs.readFileSync(VERSIONS_FILE); -const versions = JSON.parse(versionsText); - -versions.forEach(generateSearchIndex); - -function generateSearchIndex(version) { - const protocolText = fs.readFileSync(`pages/_data/${version.slug}.json`); - const protocol = JSON.parse(protocolText); - - // Set up Keyword bank - // Split up search keywords into primary and secondary matches. - // Primary kewords - event, domain, command names; plus type ids. - // Secondary keywords - command parameter names, event parameter names, type - // properties. - // Reasoning: Primary keyword matches will appear at the top of the search - // result list, while secondary matches, which are likely to have duplicates, - // will appear at the bottom. - - var PageRefType = { - DOMAIN: '0', - EVENT: '1', - PARAM: '2', - TYPE_ID: '3', - COMMAND: '4' - }; - // Optional root path to be prepended to page reference URLs. - var SITE_ROOT = ''; - var MAX_DESCRIPTION_LENGTH = 200; - - function getShortDescription(description) { - return description && description.length > MAX_DESCRIPTION_LENGTH ? - description.substr(0, MAX_DESCRIPTION_LENGTH) + '...' : description; - } - - // Represents a page reference. - var PageReference = { - init: function(domain, type, description) { - this.domain = domain; - this.type = type; - this.description = description - }, - createPageReference: function(title, type, description) { - var ref = Object.create(PageReference); - ref.init(title, type, getShortDescription(description)); - return ref; - }, - setHrefs: function(href, domainHref) { - this.domainHref = domainHref; - if (href) { - this.href = href; - } - } - }; - - // Represents a keyword match, which may have many page references. - var KeyRecord = { - init: function(keyword) { - this.keyword = keyword; - this.pageReferences = []; - }, - addReference: function(pageRef) { - this.pageReferences.push(pageRef); - }, - createKeyRecord: function(keyword, opt_pageRef) { - var keyRecord = Object.create(KeyRecord); - keyRecord.init(keyword); - if (opt_pageRef) { - keyRecord.addReference(opt_pageRef); - } - return keyRecord; - } - }; - - // Used to store our key records. - var keywordMap = { - // Lazily creates a KeyRecord. - addReferenceForKey: function(keyword, pageRef) { - const key = keyword.toLowerCase(); - var record = this[key]; - if (record) { - record.addReference(pageRef); - } else { - this[key] = KeyRecord.createKeyRecord(keyword, pageRef); - } - } - }; - - (protocol.domains).forEach(function (domain, idx) { - var domainName = domain.domain; - var domainPath = SITE_ROOT + version.slug + '/' + domainName + '/'; - // Reminder: You may have multiple pages per keyword. - // Store domain name as a page reference under itself as a keyword. - var ref = PageReference.createPageReference( - domainName, PageRefType.DOMAIN, domain.description); - ref.setHrefs('', domainPath); - keywordMap.addReferenceForKey(domainName, ref); - - if (domain.commands) { - domain.commands.forEach(function(command) { - var commandName = command.name; - var commandNameHref = '#method-' + commandName; - var ref = PageReference.createPageReference( - domainName, PageRefType.COMMAND, command.description); - ref.setHrefs(commandNameHref, domainPath); - keywordMap.addReferenceForKey(`${domainName}.${commandName}`, ref); - }); - } - if (domain.events) { - domain.events.forEach(function(event) { - var eventName = event.name; - var eventNameHref = '#event-' + eventName; - var ref = PageReference.createPageReference( - domainName, PageRefType.EVENT, event.description); - ref.setHrefs(eventNameHref, domainPath); - keywordMap.addReferenceForKey(`${domainName}.${eventName}`, ref); - }); - } - if (domain.types) { - domain.types.forEach(function(type) { - var typeName = type.id; - var typeNameHref = '#type-' + typeName; - var ref = PageReference.createPageReference( - domainName, PageRefType.TYPE_ID, type.description); - ref.setHrefs(typeNameHref, domainPath); - keywordMap.addReferenceForKey(`${domainName}.${typeName}`, ref); - }); - } - // TODO(ericguzman): Index other keyword types. - }); - - const fileName = `search_index/${version.slug}.json`; - const content = JSON.stringify(keywordMap); - fs.writeFileSync(fileName, content); -} diff --git a/pages/_data/tot.json b/data/tot.json similarity index 100% rename from pages/_data/tot.json rename to data/tot.json diff --git a/pages/_data/v8.json b/data/v8.json similarity index 100% rename from pages/_data/v8.json rename to data/v8.json diff --git a/generate-sidenav-html.cjs b/generate-sidenav-html.cjs deleted file mode 100644 index 125bd959bb..0000000000 --- a/generate-sidenav-html.cjs +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; - - -const verSlugs = require('./pages/_data/versions.json').map(e => e.slug); - -const allDomains = {}; - -for (const slug of verSlugs){ - const protocol = require(`./pages/_data/${slug}.json`); - const domains = protocol.domains; - domains.forEach(domain => { - const id = domain.domain; - const tags = allDomains[id] || []; - tags.push(slug); - - // Annotate with tot's experimental / deprecated status - if (slug === 'tot') { - if (domain.experimental) tags.push('experimental'); - if (domain.deprecated) tags.push('deprecated'); - } - allDomains[id] = tags; - }); -} - -const str = Object.entries(allDomains).sort(([domainA, tagsA], [domainB, tagsB]) => { - // Disable grouping by tag https://github.com/ChromeDevTools/debugger-protocol-viewer/pull/179 - // const isExpOrDepr = a => a === 'experimental' || a === 'deprecated'; - // const getTagsStr = tags => tags.filter(isExpOrDepr).join(''); - // const tagSortResult = getTagsStr(tagsA).localeCompare(getTagsStr(tagsB)); - // if (tagSortResult !== 0) return tagSortResult; - return domainA.localeCompare(domainB); - }) - .map(([id, versions]) => ` ${id}`) - .join('\n'); - - -process.stdout.write('\n' + str + '\n'); - -// And update shell.hbs with the output - diff --git a/make-stable-protocol.cjs b/make-stable-protocol.cjs deleted file mode 100644 index c650083e8b..0000000000 --- a/make-stable-protocol.cjs +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -/** - * - */ - -const fs = require('fs'); -const tot = JSON.parse(fs.readFileSync(__dirname + '/pages/_data/tot.json', 'utf8')); - - -const isNotExperimentalOrDeprecated = item => !item.experimental && !item.deprecated; - -const stableProtocol = tot; - - -stableProtocol.domains = stableProtocol.domains.filter(isNotExperimentalOrDeprecated); -stableProtocol.domains.forEach(domain => { - if (domain.types) - domain.types = domain.types.filter(isNotExperimentalOrDeprecated); - - if (domain.commands) - domain.commands = domain.commands.filter(isNotExperimentalOrDeprecated); - - if (domain.events) - domain.events = domain.events.filter(isNotExperimentalOrDeprecated); -}); - -// filter out command params, too? -fs.writeFileSync(__dirname + '/pages/_data/1-3.json', JSON.stringify(stableProtocol, null, 2)); - diff --git a/merge-protocol-files.cjs b/merge-protocol-files.cjs deleted file mode 100644 index 4ba991182d..0000000000 --- a/merge-protocol-files.cjs +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -/** - * Utility command that merges two protocol files together - */ - -const fs = require('fs'); - -const args = process.argv.slice(2); - -const protocol1Text = fs.readFileSync(args[0]); -const protocol1 = JSON.parse(protocol1Text); - -const protocol2Text = fs.readFileSync(args[1]); -const protocol2 = JSON.parse(protocol2Text); - -var mergedDomains = []; -mergedDomains.push(...protocol1.domains); -mergedDomains.push(...protocol2.domains); - -const protocolMerged = { - domains: mergedDomains -}; - -console.log(JSON.stringify(protocolMerged, null, ' ')); diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 769b45fba3..0000000000 --- a/package-lock.json +++ /dev/null @@ -1,3522 +0,0 @@ -{ - "name": "debugger-protocol-viewer", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "debugger-protocol-viewer", - "version": "1.0.0", - "license": "Apache2", - "devDependencies": { - "@11ty/eleventy": "^3.1.2", - "@11ty/eleventy-plugin-handlebars": "^1.0.0", - "@rollup/plugin-node-resolve": "^16.0.1", - "@rollup/plugin-terser": "^0.4.4", - "lit-html": "^3.3.1", - "marked": "^16.1.2", - "rimraf": "^6.0.1", - "rollup": "^4.46.2", - "statikk": "^2.2.2" - } - }, - "node_modules/@11ty/dependency-tree": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree/-/dependency-tree-4.0.0.tgz", - "integrity": "sha512-PTOnwM8Xt+GdJmwRKg4pZ8EKAgGoK7pedZBfNSOChXu8MYk2FdEsxdJYecX4t62owpGw3xK60q9TQv/5JI59jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.1" - } - }, - "node_modules/@11ty/dependency-tree-esm": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@11ty/dependency-tree-esm/-/dependency-tree-esm-2.0.0.tgz", - "integrity": "sha512-+4ySOON4aEAiyAGuH6XQJtxpGSpo6nibfG01krgix00sqjhman2+UaDUopq6Ksv8/jBB3hqkhsHe3fDE4z8rbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.1", - "acorn": "^8.14.0", - "dependency-graph": "^1.0.0", - "normalize-path": "^3.0.0" - } - }, - "node_modules/@11ty/eleventy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@11ty/eleventy/-/eleventy-3.1.2.tgz", - "integrity": "sha512-IcsDlbXnBf8cHzbM1YBv3JcTyLB35EK88QexmVyFdVJVgUU6bh9g687rpxryJirHzo06PuwnYaEEdVZQfIgRGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@11ty/dependency-tree": "^4.0.0", - "@11ty/dependency-tree-esm": "^2.0.0", - "@11ty/eleventy-dev-server": "^2.0.8", - "@11ty/eleventy-plugin-bundle": "^3.0.6", - "@11ty/eleventy-utils": "^2.0.7", - "@11ty/lodash-custom": "^4.17.21", - "@11ty/posthtml-urls": "^1.0.1", - "@11ty/recursive-copy": "^4.0.2", - "@sindresorhus/slugify": "^2.2.1", - "bcp-47-normalize": "^2.3.0", - "chokidar": "^3.6.0", - "debug": "^4.4.1", - "dependency-graph": "^1.0.0", - "entities": "^6.0.1", - "filesize": "^10.1.6", - "gray-matter": "^4.0.3", - "iso-639-1": "^3.1.5", - "js-yaml": "^4.1.0", - "kleur": "^4.1.5", - "liquidjs": "^10.21.1", - "luxon": "^3.6.1", - "markdown-it": "^14.1.0", - "minimist": "^1.2.8", - "moo": "^0.5.2", - "node-retrieve-globals": "^6.0.1", - "nunjucks": "^3.2.4", - "picomatch": "^4.0.2", - "please-upgrade-node": "^3.2.0", - "posthtml": "^0.16.6", - "posthtml-match-helper": "^2.0.3", - "semver": "^7.7.2", - "slugify": "^1.6.6", - "tinyglobby": "^0.2.14" - }, - "bin": { - "eleventy": "cmd.cjs" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-dev-server": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-dev-server/-/eleventy-dev-server-2.0.8.tgz", - "integrity": "sha512-15oC5M1DQlCaOMUq4limKRYmWiGecDaGwryr7fTE/oM9Ix8siqMvWi+I8VjsfrGr+iViDvWcH/TVI6D12d93mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.1", - "chokidar": "^3.6.0", - "debug": "^4.4.0", - "finalhandler": "^1.3.1", - "mime": "^3.0.0", - "minimist": "^1.2.8", - "morphdom": "^2.7.4", - "please-upgrade-node": "^3.2.0", - "send": "^1.1.0", - "ssri": "^11.0.0", - "urlpattern-polyfill": "^10.0.0", - "ws": "^8.18.1" - }, - "bin": { - "eleventy-dev-server": "cmd.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-plugin-bundle": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-bundle/-/eleventy-plugin-bundle-3.0.6.tgz", - "integrity": "sha512-wlEIMa1SEe6HE6ZyREEnPQiTw72337a2MPkyn0D1IzrqHrKU9euB17mv27LnnnyKvMJamCCqtU0985F5yyDL8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@11ty/eleventy-utils": "^2.0.2", - "debug": "^4.4.0", - "posthtml-match-helper": "^2.0.3" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-plugin-handlebars": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-plugin-handlebars/-/eleventy-plugin-handlebars-1.0.0.tgz", - "integrity": "sha512-LdAqMv5CWcmufl8LB4zCCKyIHcVYnkp0rPHn6RAyJjQAmAi6aRGK7C8RSR5R9SgE2JU9OIowcXdiaJiqFtrGdQ==", - "dev": true, - "dependencies": { - "@11ty/eleventy-utils": "^1.0.3", - "debug": "^4.3.5", - "fast-glob": "^3.3.2", - "handlebars": "^4.7.8" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-plugin-handlebars/node_modules/@11ty/eleventy-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-1.0.3.tgz", - "integrity": "sha512-nULO91om7vQw4Y/UBjM8i7nJ1xl+/nyK4rImZ41lFxiY2d+XUz7ChAj1CDYFjrLZeu0utAYJTZ45LlcHTkUG4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "normalize-path": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/eleventy-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@11ty/eleventy-utils/-/eleventy-utils-2.0.7.tgz", - "integrity": "sha512-6QE+duqSQ0GY9rENXYb4iPR4AYGdrFpqnmi59tFp9VrleOl0QSh8VlBr2yd6dlhkdtj7904poZW5PvGr9cMiJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/lodash-custom": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@11ty/lodash-custom/-/lodash-custom-4.17.21.tgz", - "integrity": "sha512-Mqt6im1xpb1Ykn3nbcCovWXK3ggywRJa+IXIdoz4wIIK+cvozADH63lexcuPpGS/gJ6/m2JxyyXDyupkMr5DHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/11ty" - } - }, - "node_modules/@11ty/posthtml-urls": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@11ty/posthtml-urls/-/posthtml-urls-1.0.1.tgz", - "integrity": "sha512-6EFN/yYSxC/OzYXpq4gXDyDMlX/W+2MgCvvoxf11X1z76bqkqFJ8eep5RiBWfGT5j0323a1pwpelcJJdR46MCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "evaluate-value": "^2.0.0", - "http-equiv-refresh": "^2.0.1", - "list-to-array": "^1.1.0", - "parse-srcset": "^1.0.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@11ty/recursive-copy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@11ty/recursive-copy/-/recursive-copy-4.0.2.tgz", - "integrity": "sha512-174nFXxL/6KcYbLYpra+q3nDbfKxLxRTNVY1atq2M1pYYiPfHse++3IFNl8mjPFsd7y2qQjxLORzIjHMjL3NDQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "errno": "^1.0.0", - "junk": "^3.1.0", - "maximatch": "^0.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", - "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz", - "integrity": "sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-terser": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", - "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "serialize-javascript": "^6.0.1", - "smob": "^1.0.0", - "terser": "^5.17.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", - "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", - "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", - "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", - "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", - "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", - "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", - "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", - "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", - "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", - "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", - "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", - "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", - "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", - "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", - "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", - "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", - "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", - "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", - "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", - "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", - "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sindresorhus/slugify": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.1.tgz", - "integrity": "sha512-MkngSCRZ8JdSOCHRaYd+D01XhvU3Hjy6MGl06zhOk614hp9EOAp5gIkBeQg7wtmxpitU6eAL4kdiRMcJa2dlrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/transliterate": "^1.0.0", - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, - "node_modules/@sindresorhus/transliterate": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz", - "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/a-sync-waterfall": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", - "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "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/sponsors/jonschlinkert" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bcp-47": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", - "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "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/sponsors/wooorm" - } - }, - "node_modules/bcp-47-match": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", - "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "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/sponsors/wooorm" - } - }, - "node_modules/bcp-47-normalize": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bcp-47-normalize/-/bcp-47-normalize-2.3.0.tgz", - "integrity": "sha512-8I/wfzqQvttUFz7HVJgIZ7+dj3vUaIyIxYXaTRP1YWoSDfzt6TUmxaKZeuXR62qBmYr+nvuWINFRl6pZ5DlN4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "bcp-47": "^2.0.0", - "bcp-47-match": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "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/sponsors/wooorm" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/connect/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", - "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "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/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "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/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "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/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "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/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "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/fb55/domutils?sponsor=1" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "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/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/errno/-/errno-1.0.0.tgz", - "integrity": "sha512-3zV5mFS1E8/1bPxt/B0xxzI1snsg3uSCIh6Zo1qKg6iMw93hzPANk9oBFzSFBFrwuVoQuE3rLoouAUfwOAj1wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, - "node_modules/esm-import-transformer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/esm-import-transformer/-/esm-import-transformer-3.0.5.tgz", - "integrity": "sha512-1GKLvfuMnnpI75l8c6sHoz0L3Z872xL5akGuBudgqTDPv4Vy6f2Ec7jEMKTxlqWl/3kSvNbHELeimJtnqgYniw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/evaluate-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/evaluate-value/-/evaluate-value-2.0.0.tgz", - "integrity": "sha512-VonfiuDJc0z4sOO7W0Pd130VLsXN6vmBWZlrog1mCb/o7o/Nl5Lr25+Kj/nkCCAhG+zqeeGjxhkK9oHpkgTHhQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/filesize": { - "version": "10.1.6", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", - "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 10.4.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "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/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", - "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, - "funding": [ - "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/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "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/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "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/fb55/entities?sponsor=1" - } - }, - "node_modules/http-equiv-refresh": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-equiv-refresh/-/http-equiv-refresh-2.0.1.tgz", - "integrity": "sha512-XJpDL/MLkV3dKwLzHwr2dY05dYNfBNlyPu4STQ8WvKCFdc6vC5tPXuq28of663+gHVg03C+16pHHs/+FmmDjcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "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/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "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/sponsors/wooorm" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "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/sponsors/ljharb" - } - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "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/sponsors/wooorm" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-json": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-json/-/is-json-2.0.1.tgz", - "integrity": "sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iso-639-1": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/iso-639-1/-/iso-639-1-3.1.5.tgz", - "integrity": "sha512-gXkz5+KN7HrG0Q5UGqSMO2qB9AsbEeyLP54kF1YrMsIxmu+g4BdB7rflReZTSTZGpfj8wywu6pfPBCylPIzGQA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/junk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", - "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/liquidjs": { - "version": "10.21.1", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.21.1.tgz", - "integrity": "sha512-NZXmCwv3RG5nire3fmIn9HsOyJX3vo+ptp0yaXUHAMzSNBhx74Hm+dAGJvscUA6lNqbLuYfXgNavRQ9UbUJhQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^10.0.0" - }, - "bin": { - "liquid": "bin/liquid.js", - "liquidjs": "bin/liquid.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/liquidjs" - } - }, - "node_modules/list-to-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/list-to-array/-/list-to-array-1.1.0.tgz", - "integrity": "sha512-+dAZZ2mM+/m+vY9ezfoueVvrgnHIGi5FvgSymbIgJOFwiznWyA59mav95L+Mc6xPtL3s9gm5eNTlNtxJLbNM1g==", - "dev": true, - "license": "MIT" - }, - "node_modules/lit-html": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", - "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@types/trusted-types": "^2.0.2" - } - }, - "node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/luxon": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.1.tgz", - "integrity": "sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "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/fb55/entities?sponsor=1" - } - }, - "node_modules/marked": { - "version": "16.1.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.1.2.tgz", - "integrity": "sha512-rNQt5EvRinalby7zJZu/mB+BvaAY2oz3wCuCjt1RDrWNpS1Pdf9xqMOeC9Hm5adBdcV/3XZPJpG58eT+WBc0XQ==", - "dev": true, - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/maximatch": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/maximatch/-/maximatch-0.1.0.tgz", - "integrity": "sha512-9ORVtDUFk4u/NFfo0vG/ND/z7UQCVZBL539YW0+U1I7H1BkZwizcPx5foFv7LCPcBnm2U6RjFnQOsIvN4/Vm2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-differ": "^1.0.0", - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "minimatch": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "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/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "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/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/moo": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", - "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/morphdom": { - "version": "2.7.7", - "resolved": "https://registry.npmjs.org/morphdom/-/morphdom-2.7.7.tgz", - "integrity": "sha512-04GmsiBcalrSCNmzfo+UjU8tt3PhZJKzcOy+r1FlGA7/zri8wre3I1WkYN9PT3sIeIKfW9bpyElA+VzOg2E24g==", - "dev": true, - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-retrieve-globals": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/node-retrieve-globals/-/node-retrieve-globals-6.0.1.tgz", - "integrity": "sha512-j0DeFuZ/Wg3VlklfbxUgZF/mdHMTEiEipBb3q0SpMMbHaV3AVfoUQF8UGxh1s/yjqO0TgRZd4Pi/x2yRqoQ4Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.1", - "acorn-walk": "^8.3.4", - "esm-import-transformer": "^3.0.3" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nunjucks": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", - "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "a-sync-waterfall": "^1.0.0", - "asap": "^2.0.3", - "commander": "^5.1.0" - }, - "bin": { - "nunjucks-precompile": "bin/precompile" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "chokidar": "^3.3.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/nunjucks/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/sponsors/jonschlinkert" - } - }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver-compare": "^1.0.0" - } - }, - "node_modules/posthtml": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.16.6.tgz", - "integrity": "sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "posthtml-parser": "^0.11.0", - "posthtml-render": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/posthtml-match-helper": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/posthtml-match-helper/-/posthtml-match-helper-2.0.3.tgz", - "integrity": "sha512-p9oJgTdMF2dyd7WE54QI1LvpBIkNkbSiiECKezNnDVYhGhD1AaOnAkw0Uh0y5TW+OHO8iBdSqnd8Wkpb6iUqmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "posthtml": "^0.16.6" - } - }, - "node_modules/posthtml-parser": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.11.0.tgz", - "integrity": "sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "htmlparser2": "^7.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/posthtml-render": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-3.0.0.tgz", - "integrity": "sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-json": "^2.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "license": "MIT" - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "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/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "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/sponsors/jonschlinkert" - } - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "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/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^11.0.0", - "package-json-from-dist": "^1.0.0" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", - "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.46.2", - "@rollup/rollup-android-arm64": "4.46.2", - "@rollup/rollup-darwin-arm64": "4.46.2", - "@rollup/rollup-darwin-x64": "4.46.2", - "@rollup/rollup-freebsd-arm64": "4.46.2", - "@rollup/rollup-freebsd-x64": "4.46.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", - "@rollup/rollup-linux-arm-musleabihf": "4.46.2", - "@rollup/rollup-linux-arm64-gnu": "4.46.2", - "@rollup/rollup-linux-arm64-musl": "4.46.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", - "@rollup/rollup-linux-ppc64-gnu": "4.46.2", - "@rollup/rollup-linux-riscv64-gnu": "4.46.2", - "@rollup/rollup-linux-riscv64-musl": "4.46.2", - "@rollup/rollup-linux-s390x-gnu": "4.46.2", - "@rollup/rollup-linux-x64-gnu": "4.46.2", - "@rollup/rollup-linux-x64-musl": "4.46.2", - "@rollup/rollup-win32-arm64-msvc": "4.46.2", - "@rollup/rollup-win32-ia32-msvc": "4.46.2", - "@rollup/rollup-win32-x64-msvc": "4.46.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "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/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "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/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/serve-static/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "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/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slugify": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", - "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/smob": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", - "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/ssri": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-11.0.0.tgz", - "integrity": "sha512-aZpUoMN/Jj2MqA4vMCeiKGnc/8SuSyHbGSBdgFbZxP8OJGF/lFkIuElzPxsN0q8TQQ+prw3P4EDfB3TBHHgfXw==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/statikk": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/statikk/-/statikk-2.2.2.tgz", - "integrity": "sha512-eTqeqGQx2woToraQsIJ7VcjYL8HP1efahr1/aNqnm6RblobsunOGELNLrLmP4pm8V7lqRxrvQkhs6kn9a3QLXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "compression": "^1.7.4", - "connect": "~3.7.0", - "cors": "^2.8.5", - "extend": "~3.0.2", - "nopt": "~5.0.0", - "serve-static": "^1.14.2" - }, - "bin": { - "statikk": "bin/statikk" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "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/sponsors/ljharb" - } - }, - "node_modules/terser": { - "version": "5.43.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", - "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "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/sponsors/SuperchupuDev" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/urlpattern-polyfill": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", - "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "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/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "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/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "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/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - } - } -} diff --git a/package.json b/package.json index 8769e1ad84..47ec5d8bea 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,38 @@ { "name": "debugger-protocol-viewer", "version": "1.0.0", - "main": "index.js", - "repository": "git@github.com/chromedevtools/debugger-protocol-viewer.git", - "author": "Google Inc.", - "license": "Apache2", "private": true, + "license": "Apache2", + "author": "Google Inc.", + "repository": "git@github.com/chromedevtools/debugger-protocol-viewer.git", "type": "module", - "devDependencies": { - "@11ty/eleventy": "^3.1.2", - "@11ty/eleventy-plugin-handlebars": "^1.0.0", - "@rollup/plugin-node-resolve": "^16.0.1", - "@rollup/plugin-terser": "^0.4.4", - "lit-html": "^3.3.1", - "marked": "^16.1.2", - "rimraf": "^6.0.1", - "rollup": "^4.46.2", - "statikk": "^2.2.2" - }, "scripts": { - "build": "rimraf devtools-protocol/ && node node_modules/.bin/eleventy && rollup -c rollup.config.js", + "build": "node scripts/generate-stubs.js", "prep": "bash prep-tot-protocol-files.sh", - "test": "bash test/primitive_tests.sh", - "serve": "echo 'Open http://localhost:8696/devtools-protocol/ for built site'; statikk --port 8696 ." - } + "typecheck": "tsc --noEmit", + "lint": "oxlint", + "lint:fix": "oxlint --fix", + "format": "oxfmt", + "format:check": "oxfmt --check", + "test": "pnpm run typecheck && pnpm run test:node", + "test:node": "node --test test/**/*.test.js", + "test:unit": "node --test test/protocol-model.test.js", + "test:stubs": "node --test test/stubs.test.js", + "test:e2e": "node --test test/e2e.test.js", + "preflight": "pnpm run typecheck && pnpm run lint && pnpm run format:check && pnpm test", + "serve": "echo 'Open http://localhost:8696/devtools-protocol/ for built site'; statikk --port 8696 .", + "deploy": "pnpm run build && node scripts/deploy-gh-pages.js" + }, + "devDependencies": { + "@types/node": "^26.5.0", + "devtools-protocol": "^0.0.1693794", + "oxfmt": "^0.67.0", + "oxlint": "^1.82.0", + "statikk": "^3.1.0", + "typescript": "^7.0.2" + }, + "engines": { + "node": ">=22.0.0" + }, + "packageManager": "pnpm@10.30.3" } diff --git a/pages/1-2.11ty.js b/pages/1-2.11ty.js deleted file mode 100644 index 670a487580..0000000000 --- a/pages/1-2.11ty.js +++ /dev/null @@ -1,7 +0,0 @@ -import {DomainGenerator} from './domainGenerator.js'; - -export default class extends DomainGenerator { - constructor() { - super('1-2'); - } -} diff --git a/pages/1-2.md b/pages/1-2.md deleted file mode 100644 index 6793fcf17e..0000000000 --- a/pages/1-2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: shell.hbs -title: Chrome DevTools Protocol - stable (1.2) -version: 1-2 ---- -The **1.2 version of the protocol** is the latest stable release of the protocol, tagged at Chrome 54. -It includes a smaller subset of the complete protocol compatibilities. diff --git a/pages/1-3.11ty.js b/pages/1-3.11ty.js deleted file mode 100644 index e43421af99..0000000000 --- a/pages/1-3.11ty.js +++ /dev/null @@ -1,7 +0,0 @@ -import {DomainGenerator} from './domainGenerator.js'; - -export default class extends DomainGenerator { - constructor() { - super('1-3'); - } -} diff --git a/pages/1-3.md b/pages/1-3.md deleted file mode 100644 index de95fa3af4..0000000000 --- a/pages/1-3.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: shell.hbs -title: Chrome DevTools Protocol - stable (1.3) -version: 1-3 ---- -The **1.3 version of the protocol** is the "living" stable channel of the protocol. -It's a subset of the complete protocol, [excluding](https://github.com/ChromeDevTools/debugger-protocol-viewer/blob/d84a0457b8d5b6c4a7a2947572b83239d8fb5954/make-stable-protocol.js) items that are experimental or deprecated. diff --git a/pages/404.md b/pages/404.md deleted file mode 100644 index 47c826d823..0000000000 --- a/pages/404.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: shell.hbs -title: Chrome DevTools Protocol - 404 -version: tot -permalink: 404.html ---- -Oops you hit a 404! diff --git a/pages/_data/1-2.json b/pages/_data/1-2.json deleted file mode 100644 index 225b481534..0000000000 --- a/pages/_data/1-2.json +++ /dev/null @@ -1,4292 +0,0 @@ -{ - "version": { "major": "1", "minor": "2" }, - "domains": [ - { - "domain": "Page", - "description": "Actions and events related to the inspected page belong to the page domain.", - "dependencies": [ - "Debugger", - "DOM" - ], - "types": [ - { - "id": "ResourceType", - "type": "string", - "enum": [ - "Document", - "Stylesheet", - "Image", - "Media", - "Font", - "Script", - "TextTrack", - "XHR", - "Fetch", - "EventSource", - "WebSocket", - "Manifest", - "Other" - ], - "description": "Resource type as it was perceived by the rendering engine." - }, - { - "id": "FrameId", - "type": "string", - "description": "Unique frame identifier." - }, - { - "id": "Frame", - "type": "object", - "description": "Information about the Frame on the page.", - "properties": [ - { - "name": "id", - "type": "string", - "description": "Frame unique identifier." - }, - { - "name": "parentId", - "type": "string", - "optional": true, - "description": "Parent frame identifier." - }, - { - "name": "loaderId", - "$ref": "Network.LoaderId", - "description": "Identifier of the loader associated with this frame." - }, - { - "name": "name", - "type": "string", - "optional": true, - "description": "Frame's name as specified in the tag." - }, - { - "name": "url", - "type": "string", - "description": "Frame document's URL." - }, - { - "name": "securityOrigin", - "type": "string", - "description": "Frame document's security origin." - }, - { - "name": "mimeType", - "type": "string", - "description": "Frame document's mimeType as determined by the browser." - } - ] - } - ], - "commands": [ - { - "name": "enable", - "description": "Enables page domain notifications.", - "handlers": [ - "browser", - "renderer" - ] - }, - { - "name": "disable", - "description": "Disables page domain notifications.", - "handlers": [ - "browser", - "renderer" - ] - }, - { - "name": "reload", - "parameters": [ - { - "name": "ignoreCache", - "type": "boolean", - "optional": true, - "description": "If true, browser cache is ignored (as if the user pressed Shift+refresh)." - }, - { - "name": "scriptToEvaluateOnLoad", - "type": "string", - "optional": true, - "description": "If set, the script will be injected into all frames of the inspected page after reload." - } - ], - "description": "Reloads given page optionally ignoring the cache.", - "handlers": [ - "browser", - "renderer" - ] - }, - { - "name": "navigate", - "parameters": [ - { - "name": "url", - "type": "string", - "description": "URL to navigate the page to." - } - ], - "returns": [ - { - "name": "frameId", - "$ref": "FrameId", - "experimental": true, - "description": "Frame id that will be navigated." - } - ], - "description": "Navigates current page to the given URL.", - "handlers": [ - "browser", - "renderer" - ] - }, - { - "name": "setGeolocationOverride", - "description": "Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.", - "parameters": [ - { - "name": "latitude", - "type": "number", - "optional": true, - "description": "Mock latitude" - }, - { - "name": "longitude", - "type": "number", - "optional": true, - "description": "Mock longitude" - }, - { - "name": "accuracy", - "type": "number", - "optional": true, - "description": "Mock accuracy" - } - ], - "redirect": "Emulation", - "handlers": [ - "browser" - ] - }, - { - "name": "clearGeolocationOverride", - "description": "Clears the overriden Geolocation Position and Error.", - "redirect": "Emulation", - "handlers": [ - "browser" - ] - }, - { - "name": "handleJavaScriptDialog", - "description": "Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).", - "parameters": [ - { - "name": "accept", - "type": "boolean", - "description": "Whether to accept or dismiss the dialog." - }, - { - "name": "promptText", - "type": "string", - "optional": true, - "description": "The text to enter into the dialog prompt before accepting. Used only if this is a prompt dialog." - } - ], - "handlers": [ - "browser" - ] - } - ], - "events": [ - { - "name": "domContentEventFired", - "parameters": [ - { - "name": "timestamp", - "type": "number" - } - ] - }, - { - "name": "loadEventFired", - "parameters": [ - { - "name": "timestamp", - "type": "number" - } - ] - }, - { - "name": "frameAttached", - "description": "Fired when frame has been attached to its parent.", - "parameters": [ - { - "name": "frameId", - "$ref": "FrameId", - "description": "Id of the frame that has been attached." - }, - { - "name": "parentFrameId", - "$ref": "FrameId", - "description": "Parent frame identifier." - } - ] - }, - { - "name": "frameNavigated", - "description": "Fired once navigation of the frame has completed. Frame is now associated with the new loader.", - "parameters": [ - { - "name": "frame", - "$ref": "Frame", - "description": "Frame object." - } - ] - }, - { - "name": "frameDetached", - "description": "Fired when frame has been detached from its parent.", - "parameters": [ - { - "name": "frameId", - "$ref": "FrameId", - "description": "Id of the frame that has been detached." - } - ] - }, - { - "name": "javascriptDialogOpening", - "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to open.", - "parameters": [ - { - "name": "message", - "type": "string", - "description": "Message that will be displayed by the dialog." - }, - { - "name": "type", - "$ref": "DialogType", - "description": "Dialog type." - } - ] - }, - { - "name": "javascriptDialogClosed", - "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been closed.", - "parameters": [ - { - "name": "result", - "type": "boolean", - "description": "Whether dialog was confirmed." - } - ] - }, - { - "name": "interstitialShown", - "description": "Fired when interstitial page was shown", - "handlers": [ - "browser" - ] - }, - { - "name": "interstitialHidden", - "description": "Fired when interstitial page was hidden", - "handlers": [ - "browser" - ] - }, - { - "name": "navigationRequested", - "description": "Fired when a navigation is started if navigation throttles are enabled. The navigation will be deferred until processNavigation is called.", - "parameters": [ - { - "name": "isInMainFrame", - "type": "boolean", - "description": "Whether the navigation is taking place in the main frame or in a subframe." - }, - { - "name": "isRedirect", - "type": "boolean", - "description": "Whether the navigation has encountered a server redirect or not." - }, - { - "name": "navigationId", - "type": "integer" - }, - { - "name": "url", - "type": "string", - "description": "URL of requested navigation." - } - ], - "handlers": [ - "browser" - ] - } - ] - }, - { - "domain": "Emulation", - "description": "This domain emulates different environments for the page.", - "types": [ - { - "id": "ScreenOrientation", - "type": "object", - "description": "Screen orientation.", - "properties": [ - { - "name": "type", - "type": "string", - "enum": [ - "portraitPrimary", - "portraitSecondary", - "landscapePrimary", - "landscapeSecondary" - ], - "description": "Orientation type." - }, - { - "name": "angle", - "type": "integer", - "description": "Orientation angle." - } - ] - } - ], - "commands": [ - { - "name": "setDeviceMetricsOverride", - "description": "Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media query results).", - "parameters": [ - { - "name": "width", - "type": "integer", - "description": "Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override." - }, - { - "name": "height", - "type": "integer", - "description": "Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override." - }, - { - "name": "deviceScaleFactor", - "type": "number", - "description": "Overriding device scale factor value. 0 disables the override." - }, - { - "name": "mobile", - "type": "boolean", - "description": "Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more." - }, - { - "name": "fitWindow", - "type": "boolean", - "description": "Whether a view that exceeds the available browser window area should be scaled down to fit." - }, - { - "name": "scale", - "type": "number", - "optional": true, - "experimental": true, - "description": "Scale to apply to resulting view image. Ignored in |fitWindow| mode." - }, - { - "name": "offsetX", - "type": "number", - "optional": true, - "deprecated": true, - "experimental": true, - "description": "Not used." - }, - { - "name": "offsetY", - "type": "number", - "optional": true, - "deprecated": true, - "experimental": true, - "description": "Not used." - }, - { - "name": "screenWidth", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Overriding screen width value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." - }, - { - "name": "screenHeight", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Overriding screen height value in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." - }, - { - "name": "positionX", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Overriding view X position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." - }, - { - "name": "positionY", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Overriding view Y position on screen in pixels (minimum 0, maximum 10000000). Only used for |mobile==true|." - }, - { - "name": "screenOrientation", - "$ref": "ScreenOrientation", - "optional": true, - "description": "Screen orientation override." - } - ], - "handlers": [ - "browser" - ] - }, - { - "name": "clearDeviceMetricsOverride", - "description": "Clears the overriden device metrics.", - "handlers": [ - "browser" - ] - }, - { - "name": "setTouchEmulationEnabled", - "parameters": [ - { - "name": "enabled", - "type": "boolean", - "description": "Whether the touch event emulation should be enabled." - }, - { - "name": "configuration", - "type": "string", - "enum": [ - "mobile", - "desktop" - ], - "optional": true, - "description": "Touch/gesture events configuration. Default: current platform." - } - ], - "description": "Toggles mouse event-based touch event emulation.", - "handlers": [ - "browser", - "renderer" - ] - }, - { - "name": "setEmulatedMedia", - "parameters": [ - { - "name": "media", - "type": "string", - "description": "Media type to emulate. Empty string disables the override." - } - ], - "description": "Emulates the given media for CSS media queries." - } - ], - "events": [] - }, - { - "domain": "Network", - "description": "Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.", - "dependencies": [ - "Runtime", - "Security" - ], - "types": [ - { - "id": "LoaderId", - "type": "string", - "description": "Unique loader identifier." - }, - { - "id": "RequestId", - "type": "string", - "description": "Unique request identifier." - }, - { - "id": "Timestamp", - "type": "number", - "description": "Number of seconds since epoch." - }, - { - "id": "Headers", - "type": "object", - "description": "Request / response headers as keys / values of JSON object." - }, - { - "id": "ConnectionType", - "type": "string", - "enum": [ - "none", - "cellular2g", - "cellular3g", - "cellular4g", - "bluetooth", - "ethernet", - "wifi", - "wimax", - "other" - ], - "description": "Loading priority of a resource request." - }, - { - "id": "CookieSameSite", - "type": "string", - "enum": [ - "Strict", - "Lax" - ], - "description": "Represents the cookie's 'SameSite' status: https://tools.ietf.org/html/draft-west-first-party-cookies" - }, - { - "id": "ResourceTiming", - "type": "object", - "description": "Timing information for the request.", - "properties": [ - { - "name": "requestTime", - "type": "number", - "description": "Timing's requestTime is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this requestTime." - }, - { - "name": "proxyStart", - "type": "number", - "description": "Started resolving proxy." - }, - { - "name": "proxyEnd", - "type": "number", - "description": "Finished resolving proxy." - }, - { - "name": "dnsStart", - "type": "number", - "description": "Started DNS address resolve." - }, - { - "name": "dnsEnd", - "type": "number", - "description": "Finished DNS address resolve." - }, - { - "name": "connectStart", - "type": "number", - "description": "Started connecting to the remote host." - }, - { - "name": "connectEnd", - "type": "number", - "description": "Connected to the remote host." - }, - { - "name": "sslStart", - "type": "number", - "description": "Started SSL handshake." - }, - { - "name": "sslEnd", - "type": "number", - "description": "Finished SSL handshake." - }, - { - "name": "workerStart", - "type": "number", - "description": "Started running ServiceWorker.", - "experimental": true - }, - { - "name": "workerReady", - "type": "number", - "description": "Finished Starting ServiceWorker.", - "experimental": true - }, - { - "name": "sendStart", - "type": "number", - "description": "Started sending request." - }, - { - "name": "sendEnd", - "type": "number", - "description": "Finished sending request." - }, - { - "name": "pushStart", - "type": "number", - "description": "Time the server started pushing request.", - "experimental": true - }, - { - "name": "pushEnd", - "type": "number", - "description": "Time the server finished pushing request.", - "experimental": true - }, - { - "name": "receiveHeadersEnd", - "type": "number", - "description": "Finished receiving response headers." - } - ] - }, - { - "id": "ResourcePriority", - "type": "string", - "enum": [ - "VeryLow", - "Low", - "Medium", - "High", - "VeryHigh" - ], - "description": "Loading priority of a resource request." - }, - { - "id": "Request", - "type": "object", - "description": "HTTP request data.", - "properties": [ - { - "name": "url", - "type": "string", - "description": "Request URL." - }, - { - "name": "method", - "type": "string", - "description": "HTTP request method." - }, - { - "name": "headers", - "$ref": "Headers", - "description": "HTTP request headers." - }, - { - "name": "postData", - "type": "string", - "optional": true, - "description": "HTTP POST request data." - }, - { - "name": "mixedContentType", - "optional": true, - "type": "string", - "enum": [ - "blockable", - "optionally-blockable", - "none" - ], - "description": "The mixed content status of the request, as defined in http://www.w3.org/TR/mixed-content/" - }, - { - "name": "initialPriority", - "$ref": "ResourcePriority", - "description": "Priority of the resource request at the time request is sent." - } - ] - }, - { - "id": "SignedCertificateTimestamp", - "type": "object", - "description": "Details of a signed certificate timestamp (SCT).", - "properties": [ - { - "name": "status", - "type": "string", - "description": "Validation status." - }, - { - "name": "origin", - "type": "string", - "description": "Origin." - }, - { - "name": "logDescription", - "type": "string", - "description": "Log name / description." - }, - { - "name": "logId", - "type": "string", - "description": "Log ID." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Issuance date." - }, - { - "name": "hashAlgorithm", - "type": "string", - "description": "Hash algorithm." - }, - { - "name": "signatureAlgorithm", - "type": "string", - "description": "Signature algorithm." - }, - { - "name": "signatureData", - "type": "string", - "description": "Signature data." - } - ] - }, - { - "id": "SecurityDetails", - "type": "object", - "description": "Security details about a request.", - "properties": [ - { - "name": "protocol", - "type": "string", - "description": "Protocol name (e.g. \"TLS 1.2\" or \"QUIC\")." - }, - { - "name": "keyExchange", - "type": "string", - "description": "Key Exchange used by the connection." - }, - { - "name": "keyExchangeGroup", - "type": "string", - "optional": true, - "description": "(EC)DH group used by the connection, if applicable." - }, - { - "name": "cipher", - "type": "string", - "description": "Cipher name." - }, - { - "name": "mac", - "type": "string", - "optional": true, - "description": "TLS MAC. Note that AEAD ciphers do not have separate MACs." - }, - { - "name": "certificateId", - "$ref": "Security.CertificateId", - "description": "Certificate ID value." - }, - { - "name": "subjectName", - "type": "string", - "description": "Certificate subject name." - }, - { - "name": "sanList", - "type": "array", - "items": { - "type": "string" - }, - "description": "Subject Alternative Name (SAN) DNS names and IP addresses." - }, - { - "name": "issuer", - "type": "string", - "description": "Name of the issuing CA." - }, - { - "name": "validFrom", - "$ref": "Timestamp", - "description": "Certificate valid from date." - }, - { - "name": "validTo", - "$ref": "Timestamp", - "description": "Certificate valid to (expiration) date" - }, - { - "name": "signedCertificateTimestampList", - "type": "array", - "items": { - "$ref": "SignedCertificateTimestamp" - }, - "description": "List of signed certificate timestamps (SCTs)." - } - ] - }, - { - "id": "Response", - "type": "object", - "description": "HTTP response data.", - "properties": [ - { - "name": "url", - "type": "string", - "description": "Response URL. This URL can be different from CachedResource.url in case of redirect." - }, - { - "name": "status", - "type": "number", - "description": "HTTP response status code." - }, - { - "name": "statusText", - "type": "string", - "description": "HTTP response status text." - }, - { - "name": "headers", - "$ref": "Headers", - "description": "HTTP response headers." - }, - { - "name": "headersText", - "type": "string", - "optional": true, - "description": "HTTP response headers text." - }, - { - "name": "mimeType", - "type": "string", - "description": "Resource mimeType as determined by the browser." - }, - { - "name": "requestHeaders", - "$ref": "Headers", - "optional": true, - "description": "Refined HTTP request headers that were actually transmitted over the network." - }, - { - "name": "requestHeadersText", - "type": "string", - "optional": true, - "description": "HTTP request headers text." - }, - { - "name": "connectionReused", - "type": "boolean", - "description": "Specifies whether physical connection was actually reused for this request." - }, - { - "name": "connectionId", - "type": "number", - "description": "Physical connection id that was actually used for this request." - }, - { - "name": "remoteIPAddress", - "type": "string", - "optional": true, - "experimental": true, - "description": "Remote IP address." - }, - { - "name": "remotePort", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Remote port." - }, - { - "name": "fromDiskCache", - "type": "boolean", - "optional": true, - "description": "Specifies that the request was served from the disk cache." - }, - { - "name": "fromServiceWorker", - "type": "boolean", - "optional": true, - "description": "Specifies that the request was served from the ServiceWorker." - }, - { - "name": "encodedDataLength", - "type": "number", - "optional": false, - "description": "Total number of bytes received for this request so far." - }, - { - "name": "timing", - "$ref": "ResourceTiming", - "optional": true, - "description": "Timing information for the given request." - }, - { - "name": "protocol", - "type": "string", - "optional": true, - "description": "Protocol used to fetch this request." - }, - { - "name": "securityState", - "$ref": "Security.SecurityState", - "description": "Security state of the request resource." - }, - { - "name": "securityDetails", - "$ref": "SecurityDetails", - "optional": true, - "description": "Security details for the request." - } - ] - }, - { - "id": "CachedResource", - "type": "object", - "description": "Information about the cached resource.", - "properties": [ - { - "name": "url", - "type": "string", - "description": "Resource URL. This is the url of the original network request." - }, - { - "name": "type", - "$ref": "Page.ResourceType", - "description": "Type of this resource." - }, - { - "name": "response", - "$ref": "Response", - "optional": true, - "description": "Cached response data." - }, - { - "name": "bodySize", - "type": "number", - "description": "Cached response body size." - } - ] - }, - { - "id": "Initiator", - "type": "object", - "description": "Information about the request initiator.", - "properties": [ - { - "name": "type", - "type": "string", - "enum": [ - "parser", - "script", - "other" - ], - "description": "Type of this initiator." - }, - { - "name": "stack", - "$ref": "Runtime.StackTrace", - "optional": true, - "description": "Initiator JavaScript stack trace, set for Script only." - }, - { - "name": "url", - "type": "string", - "optional": true, - "description": "Initiator URL, set for Parser type only." - }, - { - "name": "lineNumber", - "type": "number", - "optional": true, - "description": "Initiator line number, set for Parser type only (0-based)." - } - ] - } - ], - "commands": [ - { - "name": "enable", - "description": "Enables network tracking, network events will now be delivered to the client.", - "parameters": [ - { - "name": "maxTotalBufferSize", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc)." - }, - { - "name": "maxResourceBufferSize", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc)." - } - ] - }, - { - "name": "disable", - "description": "Disables network tracking, prevents network events from being sent to the client." - }, - { - "name": "setUserAgentOverride", - "description": "Allows overriding user agent with the given string.", - "parameters": [ - { - "name": "userAgent", - "type": "string", - "description": "User agent to use." - } - ] - }, - { - "name": "setExtraHTTPHeaders", - "description": "Specifies whether to always send extra HTTP headers with the requests from this page.", - "parameters": [ - { - "name": "headers", - "$ref": "Headers", - "description": "Map with extra HTTP headers." - } - ] - }, - { - "name": "getResponseBody", - "async": true, - "description": "Returns content served for the given request.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Identifier of the network request to get content for." - } - ], - "returns": [ - { - "name": "body", - "type": "string", - "description": "Response body." - }, - { - "name": "base64Encoded", - "type": "boolean", - "description": "True, if content was sent as base64." - } - ] - }, - { - "name": "canClearBrowserCache", - "description": "Tells whether clearing browser cache is supported.", - "returns": [ - { - "name": "result", - "type": "boolean", - "description": "True if browser cache can be cleared." - } - ] - }, - { - "name": "clearBrowserCache", - "description": "Clears browser cache.", - "handlers": [ - "browser" - ] - }, - { - "name": "canClearBrowserCookies", - "description": "Tells whether clearing browser cookies is supported.", - "returns": [ - { - "name": "result", - "type": "boolean", - "description": "True if browser cookies can be cleared." - } - ] - }, - { - "name": "clearBrowserCookies", - "description": "Clears browser cookies.", - "handlers": [ - "browser" - ] - }, - { - "name": "emulateNetworkConditions", - "description": "Activates emulation of network conditions.", - "parameters": [ - { - "name": "offline", - "type": "boolean", - "description": "True to emulate internet disconnection." - }, - { - "name": "latency", - "type": "number", - "description": "Additional latency (ms)." - }, - { - "name": "downloadThroughput", - "type": "number", - "description": "Maximal aggregated download throughput." - }, - { - "name": "uploadThroughput", - "type": "number", - "description": "Maximal aggregated upload throughput." - }, - { - "name": "connectionType", - "$ref": "ConnectionType", - "optional": true, - "description": "Connection type if known." - } - ], - "handlers": [ - "browser", - "renderer" - ] - }, - { - "name": "setCacheDisabled", - "parameters": [ - { - "name": "cacheDisabled", - "type": "boolean", - "description": "Cache disabled state." - } - ], - "description": "Toggles ignoring cache for each request. If true, cache will not be used." - } - ], - "events": [ - { - "name": "requestWillBeSent", - "description": "Fired when page is about to send HTTP request.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Request identifier." - }, - { - "name": "frameId", - "$ref": "Page.FrameId", - "description": "Frame identifier.", - "experimental": true - }, - { - "name": "loaderId", - "$ref": "LoaderId", - "description": "Loader identifier." - }, - { - "name": "documentURL", - "type": "string", - "description": "URL of the document this request is loaded for." - }, - { - "name": "request", - "$ref": "Request", - "description": "Request data." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Timestamp." - }, - { - "name": "wallTime", - "$ref": "Timestamp", - "experimental": true, - "description": "UTC Timestamp." - }, - { - "name": "initiator", - "$ref": "Initiator", - "description": "Request initiator." - }, - { - "name": "redirectResponse", - "optional": true, - "$ref": "Response", - "description": "Redirect response data." - }, - { - "name": "type", - "$ref": "Page.ResourceType", - "optional": true, - "experimental": true, - "description": "Type of this resource." - } - ] - }, - { - "name": "requestServedFromCache", - "description": "Fired if request ended up loading from cache.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Request identifier." - } - ] - }, - { - "name": "responseReceived", - "description": "Fired when HTTP response is available.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Request identifier." - }, - { - "name": "frameId", - "$ref": "Page.FrameId", - "description": "Frame identifier.", - "experimental": true - }, - { - "name": "loaderId", - "$ref": "LoaderId", - "description": "Loader identifier." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Timestamp." - }, - { - "name": "type", - "$ref": "Page.ResourceType", - "description": "Resource type." - }, - { - "name": "response", - "$ref": "Response", - "description": "Response data." - } - ] - }, - { - "name": "dataReceived", - "description": "Fired when data chunk was received over the network.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Request identifier." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Timestamp." - }, - { - "name": "dataLength", - "type": "integer", - "description": "Data chunk length." - }, - { - "name": "encodedDataLength", - "type": "integer", - "description": "Actual bytes received (might be less than dataLength for compressed encodings)." - } - ] - }, - { - "name": "loadingFinished", - "description": "Fired when HTTP request has finished loading.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Request identifier." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Timestamp." - }, - { - "name": "encodedDataLength", - "type": "number", - "description": "Total number of bytes received for this request." - } - ] - }, - { - "name": "loadingFailed", - "description": "Fired when HTTP request has failed to load.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId", - "description": "Request identifier." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Timestamp." - }, - { - "name": "type", - "$ref": "Page.ResourceType", - "description": "Resource type." - }, - { - "name": "errorText", - "type": "string", - "description": "User friendly error message." - }, - { - "name": "canceled", - "type": "boolean", - "optional": true, - "description": "True if loading was canceled." - }, - { - "name": "blockedReason", - "$ref": "BlockedReason", - "optional": true, - "description": "The reason why loading was blocked, if any.", - "experimental": true - } - ] - } - ] - }, - { - "domain": "DOM", - "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an id. This id can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.

Note that iframe owner elements will return corresponding document elements as their child nodes.

", - "dependencies": [ - "Runtime" - ], - "types": [ - { - "id": "NodeId", - "type": "integer", - "description": "Unique DOM node identifier." - }, - { - "id": "PseudoType", - "type": "string", - "enum": [ - "first-line", - "first-letter", - "before", - "after", - "backdrop", - "selection", - "first-line-inherited", - "scrollbar", - "scrollbar-thumb", - "scrollbar-button", - "scrollbar-track", - "scrollbar-track-piece", - "scrollbar-corner", - "resizer", - "input-list-button" - ], - "description": "Pseudo element type." - }, - { - "id": "ShadowRootType", - "type": "string", - "enum": [ - "user-agent", - "open", - "closed" - ], - "description": "Shadow root type." - }, - { - "id": "Node", - "type": "object", - "properties": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Node identifier that is passed into the rest of the DOM messages as the nodeId. Backend will only push node with given id once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." - }, - { - "name": "nodeType", - "type": "integer", - "description": "Node's nodeType." - }, - { - "name": "nodeName", - "type": "string", - "description": "Node's nodeName." - }, - { - "name": "localName", - "type": "string", - "description": "Node's localName." - }, - { - "name": "nodeValue", - "type": "string", - "description": "Node's nodeValue." - }, - { - "name": "childNodeCount", - "type": "integer", - "optional": true, - "description": "Child count for Container nodes." - }, - { - "name": "children", - "type": "array", - "optional": true, - "items": { - "$ref": "Node" - }, - "description": "Child nodes of this node when requested with children." - }, - { - "name": "attributes", - "type": "array", - "optional": true, - "items": { - "type": "string" - }, - "description": "Attributes of the Element node in the form of flat array [name1, value1, name2, value2]." - }, - { - "name": "documentURL", - "type": "string", - "optional": true, - "description": "Document URL that Document or FrameOwner node points to." - }, - { - "name": "baseURL", - "type": "string", - "optional": true, - "description": "Base URL that Document or FrameOwner node uses for URL completion.", - "experimental": true - }, - { - "name": "publicId", - "type": "string", - "optional": true, - "description": "DocumentType's publicId." - }, - { - "name": "systemId", - "type": "string", - "optional": true, - "description": "DocumentType's systemId." - }, - { - "name": "internalSubset", - "type": "string", - "optional": true, - "description": "DocumentType's internalSubset." - }, - { - "name": "xmlVersion", - "type": "string", - "optional": true, - "description": "Document's XML version in case of XML documents." - }, - { - "name": "name", - "type": "string", - "optional": true, - "description": "Attr's name." - }, - { - "name": "value", - "type": "string", - "optional": true, - "description": "Attr's value." - }, - { - "name": "pseudoType", - "$ref": "PseudoType", - "optional": true, - "description": "Pseudo element type for this node." - }, - { - "name": "shadowRootType", - "$ref": "ShadowRootType", - "optional": true, - "description": "Shadow root type." - }, - { - "name": "frameId", - "$ref": "Page.FrameId", - "optional": true, - "description": "Frame ID for frame owner elements.", - "experimental": true - }, - { - "name": "contentDocument", - "$ref": "Node", - "optional": true, - "description": "Content document for frame owner elements." - }, - { - "name": "shadowRoots", - "type": "array", - "optional": true, - "items": { - "$ref": "Node" - }, - "description": "Shadow root list for given element host.", - "experimental": true - }, - { - "name": "templateContent", - "$ref": "Node", - "optional": true, - "description": "Content document fragment for template elements.", - "experimental": true - }, - { - "name": "pseudoElements", - "type": "array", - "items": { - "$ref": "Node" - }, - "optional": true, - "description": "Pseudo elements associated with this node.", - "experimental": true - }, - { - "name": "importedDocument", - "$ref": "Node", - "optional": true, - "description": "Import document for the HTMLImport links." - }, - { - "name": "distributedNodes", - "type": "array", - "items": { - "$ref": "BackendNode" - }, - "optional": true, - "description": "Distributed nodes for given insertion point.", - "experimental": true - } - ], - "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type." - }, - { - "id": "RGBA", - "type": "object", - "properties": [ - { - "name": "r", - "type": "integer", - "description": "The red component, in the [0-255] range." - }, - { - "name": "g", - "type": "integer", - "description": "The green component, in the [0-255] range." - }, - { - "name": "b", - "type": "integer", - "description": "The blue component, in the [0-255] range." - }, - { - "name": "a", - "type": "number", - "optional": true, - "description": "The alpha component, in the [0-1] range (default: 1)." - } - ], - "description": "A structure holding an RGBA color." - }, - { - "id": "HighlightConfig", - "type": "object", - "properties": [ - { - "name": "showInfo", - "type": "boolean", - "optional": true, - "description": "Whether the node info tooltip should be shown (default: false)." - }, - { - "name": "showRulers", - "type": "boolean", - "optional": true, - "description": "Whether the rulers should be shown (default: false)." - }, - { - "name": "showExtensionLines", - "type": "boolean", - "optional": true, - "description": "Whether the extension lines from node to the rulers should be shown (default: false)." - }, - { - "name": "displayAsMaterial", - "type": "boolean", - "optional": true, - "experimental": true - }, - { - "name": "contentColor", - "$ref": "RGBA", - "optional": true, - "description": "The content box highlight fill color (default: transparent)." - }, - { - "name": "paddingColor", - "$ref": "RGBA", - "optional": true, - "description": "The padding highlight fill color (default: transparent)." - }, - { - "name": "borderColor", - "$ref": "RGBA", - "optional": true, - "description": "The border highlight fill color (default: transparent)." - }, - { - "name": "marginColor", - "$ref": "RGBA", - "optional": true, - "description": "The margin highlight fill color (default: transparent)." - }, - { - "name": "eventTargetColor", - "$ref": "RGBA", - "optional": true, - "experimental": true, - "description": "The event target element highlight fill color (default: transparent)." - }, - { - "name": "shapeColor", - "$ref": "RGBA", - "optional": true, - "experimental": true, - "description": "The shape outside fill color (default: transparent)." - }, - { - "name": "shapeMarginColor", - "$ref": "RGBA", - "optional": true, - "experimental": true, - "description": "The shape margin fill color (default: transparent)." - }, - { - "name": "selectorList", - "type": "string", - "optional": true, - "description": "Selectors to highlight relevant nodes." - } - ], - "description": "Configuration data for the highlighting of page elements." - } - ], - "commands": [ - { - "name": "enable", - "description": "Enables DOM agent for the given page." - }, - { - "name": "disable", - "description": "Disables DOM agent for the given page." - }, - { - "name": "getDocument", - "returns": [ - { - "name": "root", - "$ref": "Node", - "description": "Resulting node." - } - ], - "description": "Returns the root DOM node to the caller." - }, - { - "name": "requestChildNodes", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to get children for." - }, - { - "name": "depth", - "type": "integer", - "optional": true, - "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.", - "experimental": true - } - ], - "description": "Requests that children of the node with given id are returned to the caller in form of setChildNodes events where not only immediate children are retrieved, but all children down to the specified depth." - }, - { - "name": "querySelector", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to query upon." - }, - { - "name": "selector", - "type": "string", - "description": "Selector string." - } - ], - "returns": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Query selector result." - } - ], - "description": "Executes querySelector on a given node." - }, - { - "name": "querySelectorAll", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to query upon." - }, - { - "name": "selector", - "type": "string", - "description": "Selector string." - } - ], - "returns": [ - { - "name": "nodeIds", - "type": "array", - "items": { - "$ref": "NodeId" - }, - "description": "Query selector result." - } - ], - "description": "Executes querySelectorAll on a given node." - }, - { - "name": "setNodeName", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to set name for." - }, - { - "name": "name", - "type": "string", - "description": "New node's name." - } - ], - "returns": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "New node's id." - } - ], - "description": "Sets node name for a node with given id." - }, - { - "name": "setNodeValue", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to set value for." - }, - { - "name": "value", - "type": "string", - "description": "New node's value." - } - ], - "description": "Sets node value for a node with given id." - }, - { - "name": "removeNode", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to remove." - } - ], - "description": "Removes node with given id." - }, - { - "name": "setAttributeValue", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the element to set attribute for." - }, - { - "name": "name", - "type": "string", - "description": "Attribute name." - }, - { - "name": "value", - "type": "string", - "description": "Attribute value." - } - ], - "description": "Sets attribute for an element with given id." - }, - { - "name": "setAttributesAsText", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the element to set attributes for." - }, - { - "name": "text", - "type": "string", - "description": "Text with a number of attributes. Will parse this text using HTML parser." - }, - { - "name": "name", - "type": "string", - "optional": true, - "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." - } - ], - "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs." - }, - { - "name": "removeAttribute", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the element to remove attribute from." - }, - { - "name": "name", - "type": "string", - "description": "Name of the attribute to remove." - } - ], - "description": "Removes attribute with given name from an element with given id." - }, - { - "name": "getOuterHTML", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to get markup for." - } - ], - "returns": [ - { - "name": "outerHTML", - "type": "string", - "description": "Outer HTML markup." - } - ], - "description": "Returns node's HTML markup." - }, - { - "name": "setOuterHTML", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to set markup for." - }, - { - "name": "outerHTML", - "type": "string", - "description": "Outer HTML markup to set." - } - ], - "description": "Sets node HTML markup, returns new node id." - }, - { - "name": "requestNode", - "parameters": [ - { - "name": "objectId", - "$ref": "Runtime.RemoteObjectId", - "description": "JavaScript object id to convert into node." - } - ], - "returns": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Node id for given object." - } - ], - "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of setChildNodes notifications." - }, - { - "name": "highlightRect", - "parameters": [ - { - "name": "x", - "type": "integer", - "description": "X coordinate" - }, - { - "name": "y", - "type": "integer", - "description": "Y coordinate" - }, - { - "name": "width", - "type": "integer", - "description": "Rectangle width" - }, - { - "name": "height", - "type": "integer", - "description": "Rectangle height" - }, - { - "name": "color", - "$ref": "RGBA", - "optional": true, - "description": "The highlight fill color (default: transparent)." - }, - { - "name": "outlineColor", - "$ref": "RGBA", - "optional": true, - "description": "The highlight outline color (default: transparent)." - } - ], - "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport." - }, - { - "name": "highlightNode", - "parameters": [ - { - "name": "highlightConfig", - "$ref": "HighlightConfig", - "description": "A descriptor for the highlight appearance." - }, - { - "name": "nodeId", - "$ref": "NodeId", - "optional": true, - "description": "Identifier of the node to highlight." - }, - { - "name": "backendNodeId", - "$ref": "BackendNodeId", - "optional": true, - "description": "Identifier of the backend node to highlight." - }, - { - "name": "objectId", - "$ref": "Runtime.RemoteObjectId", - "optional": true, - "description": "JavaScript object id of the node to be highlighted.", - "experimental": true - } - ], - "description": "Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified." - }, - { - "name": "hideHighlight", - "description": "Hides DOM node highlight." - }, - { - "name": "resolveNode", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to resolve." - }, - { - "name": "objectGroup", - "type": "string", - "optional": true, - "description": "Symbolic group name that can be used to release multiple objects." - } - ], - "returns": [ - { - "name": "object", - "$ref": "Runtime.RemoteObject", - "description": "JavaScript object wrapper for given node." - } - ], - "description": "Resolves JavaScript node object for given node id." - }, - { - "name": "getAttributes", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to retrieve attibutes for." - } - ], - "returns": [ - { - "name": "attributes", - "type": "array", - "items": { - "type": "string" - }, - "description": "An interleaved array of node attribute names and values." - } - ], - "description": "Returns attributes for the specified node." - }, - { - "name": "moveTo", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node to move." - }, - { - "name": "targetNodeId", - "$ref": "NodeId", - "description": "Id of the element to drop the moved node into." - }, - { - "name": "insertBeforeNodeId", - "$ref": "NodeId", - "optional": true, - "description": "Drop node before this one (if absent, the moved node becomes the last child of targetNodeId)." - } - ], - "returns": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "New id of the moved node." - } - ], - "description": "Moves node into the new container, places it before the given anchor." - } - ], - "events": [ - { - "name": "documentUpdated", - "description": "Fired when Document has been totally updated. Node ids are no longer valid." - }, - { - "name": "setChildNodes", - "parameters": [ - { - "name": "parentId", - "$ref": "NodeId", - "description": "Parent node id to populate with children." - }, - { - "name": "nodes", - "type": "array", - "items": { - "$ref": "Node" - }, - "description": "Child nodes array." - } - ], - "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids." - }, - { - "name": "attributeModified", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node that has changed." - }, - { - "name": "name", - "type": "string", - "description": "Attribute name." - }, - { - "name": "value", - "type": "string", - "description": "Attribute value." - } - ], - "description": "Fired when Element's attribute is modified." - }, - { - "name": "attributeRemoved", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node that has changed." - }, - { - "name": "name", - "type": "string", - "description": "A ttribute name." - } - ], - "description": "Fired when Element's attribute is removed." - }, - { - "name": "characterDataModified", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node that has changed." - }, - { - "name": "characterData", - "type": "string", - "description": "New text value." - } - ], - "description": "Mirrors DOMCharacterDataModified event." - }, - { - "name": "childNodeCountUpdated", - "parameters": [ - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node that has changed." - }, - { - "name": "childNodeCount", - "type": "integer", - "description": "New node count." - } - ], - "description": "Fired when Container's child node count has changed." - }, - { - "name": "childNodeInserted", - "parameters": [ - { - "name": "parentNodeId", - "$ref": "NodeId", - "description": "Id of the node that has changed." - }, - { - "name": "previousNodeId", - "$ref": "NodeId", - "description": "If of the previous siblint." - }, - { - "name": "node", - "$ref": "Node", - "description": "Inserted node data." - } - ], - "description": "Mirrors DOMNodeInserted event." - }, - { - "name": "childNodeRemoved", - "parameters": [ - { - "name": "parentNodeId", - "$ref": "NodeId", - "description": "Parent id." - }, - { - "name": "nodeId", - "$ref": "NodeId", - "description": "Id of the node that has been removed." - } - ], - "description": "Mirrors DOMNodeRemoved event." - } - ] - }, - { - "domain": "DOMDebugger", - "description": "DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript execution will stop on these operations as if there was a regular breakpoint set.", - "dependencies": [ - "DOM", - "Debugger" - ], - "types": [ - { - "id": "DOMBreakpointType", - "type": "string", - "enum": [ - "subtree-modified", - "attribute-modified", - "node-removed" - ], - "description": "DOM breakpoint type." - } - ], - "commands": [ - { - "name": "setDOMBreakpoint", - "parameters": [ - { - "name": "nodeId", - "$ref": "DOM.NodeId", - "description": "Identifier of the node to set breakpoint on." - }, - { - "name": "type", - "$ref": "DOMBreakpointType", - "description": "Type of the operation to stop upon." - } - ], - "description": "Sets breakpoint on particular operation with DOM." - }, - { - "name": "removeDOMBreakpoint", - "parameters": [ - { - "name": "nodeId", - "$ref": "DOM.NodeId", - "description": "Identifier of the node to remove breakpoint from." - }, - { - "name": "type", - "$ref": "DOMBreakpointType", - "description": "Type of the breakpoint to remove." - } - ], - "description": "Removes DOM breakpoint that was set using setDOMBreakpoint." - }, - { - "name": "setEventListenerBreakpoint", - "parameters": [ - { - "name": "eventName", - "type": "string", - "description": "DOM Event name to stop on (any DOM event will do)." - }, - { - "name": "targetName", - "type": "string", - "optional": true, - "description": "EventTarget interface name to stop on. If equal to \"*\" or not provided, will stop on any EventTarget.", - "experimental": true - } - ], - "description": "Sets breakpoint on particular DOM event." - }, - { - "name": "removeEventListenerBreakpoint", - "parameters": [ - { - "name": "eventName", - "type": "string", - "description": "Event name." - }, - { - "name": "targetName", - "type": "string", - "optional": true, - "description": "EventTarget interface name.", - "experimental": true - } - ], - "description": "Removes breakpoint on particular DOM event." - }, - { - "name": "setXHRBreakpoint", - "parameters": [ - { - "name": "url", - "type": "string", - "description": "Resource URL substring. All XHRs having this substring in the URL will get stopped upon." - } - ], - "description": "Sets breakpoint on XMLHttpRequest." - }, - { - "name": "removeXHRBreakpoint", - "parameters": [ - { - "name": "url", - "type": "string", - "description": "Resource URL substring." - } - ], - "description": "Removes breakpoint from XMLHttpRequest." - } - ] - }, - { - "domain": "Input", - "types": [], - "commands": [ - { - "name": "dispatchKeyEvent", - "parameters": [ - { - "name": "type", - "type": "string", - "enum": [ - "keyDown", - "keyUp", - "rawKeyDown", - "char" - ], - "description": "Type of the key event." - }, - { - "name": "modifiers", - "type": "integer", - "optional": true, - "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0)." - }, - { - "name": "timestamp", - "type": "number", - "optional": true, - "description": "Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time)." - }, - { - "name": "text", - "type": "string", - "optional": true, - "description": "Text as generated by processing a virtual key code with a keyboard layout. Not needed for for keyUp and rawKeyDown events (default: \"\")" - }, - { - "name": "unmodifiedText", - "type": "string", - "optional": true, - "description": "Text that would have been generated by the keyboard if no modifiers were pressed (except for shift). Useful for shortcut (accelerator) key handling (default: \"\")." - }, - { - "name": "keyIdentifier", - "type": "string", - "optional": true, - "description": "Unique key identifier (e.g., 'U+0041') (default: \"\")." - }, - { - "name": "code", - "type": "string", - "optional": true, - "description": "Unique DOM defined string value for each physical key (e.g., 'KeyA') (default: \"\")." - }, - { - "name": "key", - "type": "string", - "optional": true, - "description": "Unique DOM defined string value describing the meaning of the key in the context of active modifiers, keyboard layout, etc (e.g., 'AltGr') (default: \"\")." - }, - { - "name": "windowsVirtualKeyCode", - "type": "integer", - "optional": true, - "description": "Windows virtual key code (default: 0)." - }, - { - "name": "nativeVirtualKeyCode", - "type": "integer", - "optional": true, - "description": "Native virtual key code (default: 0)." - }, - { - "name": "autoRepeat", - "type": "boolean", - "optional": true, - "description": "Whether the event was generated from auto repeat (default: false)." - }, - { - "name": "isKeypad", - "type": "boolean", - "optional": true, - "description": "Whether the event was generated from the keypad (default: false)." - }, - { - "name": "isSystemKey", - "type": "boolean", - "optional": true, - "description": "Whether the event was a system key event (default: false)." - } - ], - "description": "Dispatches a key event to the page.", - "handlers": [ - "browser" - ] - }, - { - "name": "dispatchMouseEvent", - "parameters": [ - { - "name": "type", - "type": "string", - "enum": [ - "mousePressed", - "mouseReleased", - "mouseMoved" - ], - "description": "Type of the mouse event." - }, - { - "name": "x", - "type": "integer", - "description": "X coordinate of the event relative to the main frame's viewport." - }, - { - "name": "y", - "type": "integer", - "description": "Y coordinate of the event relative to the main frame's viewport. 0 refers to the top of the viewport and Y increases as it proceeds towards the bottom of the viewport." - }, - { - "name": "modifiers", - "type": "integer", - "optional": true, - "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0)." - }, - { - "name": "timestamp", - "type": "number", - "optional": true, - "description": "Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time)." - }, - { - "name": "button", - "type": "string", - "enum": [ - "none", - "left", - "middle", - "right" - ], - "optional": true, - "description": "Mouse button (default: \"none\")." - }, - { - "name": "clickCount", - "type": "integer", - "optional": true, - "description": "Number of times the mouse button was clicked (default: 0)." - } - ], - "description": "Dispatches a mouse event to the page.", - "handlers": [ - "browser" - ] - } - ], - "events": [] - }, - { - "domain": "Schema", - "description": "Provides information about the protocol schema.", - "types": [ - { - "id": "Domain", - "type": "object", - "description": "Description of the protocol domain.", - "exported": true, - "properties": [ - { - "name": "name", - "type": "string", - "description": "Domain name." - }, - { - "name": "version", - "type": "string", - "description": "Domain version." - } - ] - } - ], - "commands": [ - { - "name": "getDomains", - "description": "Returns supported domains.", - "handlers": [ - "browser", - "renderer" - ], - "returns": [ - { - "name": "domains", - "type": "array", - "items": { - "$ref": "Domain" - }, - "description": "List of supported domains." - } - ] - } - ] - }, - { - "domain": "Runtime", - "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.", - "types": [ - { - "id": "ScriptId", - "type": "string", - "description": "Unique script identifier." - }, - { - "id": "RemoteObjectId", - "type": "string", - "description": "Unique object identifier." - }, - { - "id": "UnserializableValue", - "type": "string", - "enum": [ - "Infinity", - "NaN", - "-Infinity", - "-0" - ], - "description": "Primitive value which cannot be JSON-stringified." - }, - { - "id": "RemoteObject", - "type": "object", - "description": "Mirror object referencing original JavaScript object.", - "exported": true, - "properties": [ - { - "name": "type", - "type": "string", - "enum": [ - "object", - "function", - "undefined", - "string", - "number", - "boolean", - "symbol" - ], - "description": "Object type." - }, - { - "name": "subtype", - "type": "string", - "optional": true, - "enum": [ - "array", - "null", - "node", - "regexp", - "date", - "map", - "set", - "iterator", - "generator", - "error", - "proxy", - "promise", - "typedarray" - ], - "description": "Object subtype hint. Specified for object type values only." - }, - { - "name": "className", - "type": "string", - "optional": true, - "description": "Object class (constructor) name. Specified for object type values only." - }, - { - "name": "value", - "type": "any", - "optional": true, - "description": "Remote object value in case of primitive values or JSON values (if it was requested)." - }, - { - "name": "unserializableValue", - "$ref": "UnserializableValue", - "optional": true, - "description": "Primitive value which can not be JSON-stringified does not have value, but gets this property." - }, - { - "name": "description", - "type": "string", - "optional": true, - "description": "String representation of the object." - }, - { - "name": "objectId", - "$ref": "RemoteObjectId", - "optional": true, - "description": "Unique object identifier (for non-primitive values)." - }, - { - "name": "preview", - "$ref": "ObjectPreview", - "optional": true, - "description": "Preview containing abbreviated property values. Specified for object type values only.", - "experimental": true - }, - { - "name": "customPreview", - "$ref": "CustomPreview", - "optional": true, - "experimental": true - } - ] - }, - { - "id": "PropertyDescriptor", - "type": "object", - "description": "Object property descriptor.", - "properties": [ - { - "name": "name", - "type": "string", - "description": "Property name or symbol description." - }, - { - "name": "value", - "$ref": "RemoteObject", - "optional": true, - "description": "The value associated with the property." - }, - { - "name": "writable", - "type": "boolean", - "optional": true, - "description": "True if the value associated with the property may be changed (data descriptors only)." - }, - { - "name": "get", - "$ref": "RemoteObject", - "optional": true, - "description": "A function which serves as a getter for the property, or undefined if there is no getter (accessor descriptors only)." - }, - { - "name": "set", - "$ref": "RemoteObject", - "optional": true, - "description": "A function which serves as a setter for the property, or undefined if there is no setter (accessor descriptors only)." - }, - { - "name": "configurable", - "type": "boolean", - "description": "True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object." - }, - { - "name": "enumerable", - "type": "boolean", - "description": "True if this property shows up during enumeration of the properties on the corresponding object." - }, - { - "name": "wasThrown", - "type": "boolean", - "optional": true, - "description": "True if the result was thrown during the evaluation." - }, - { - "name": "isOwn", - "optional": true, - "type": "boolean", - "description": "True if the property is owned for the object." - }, - { - "name": "symbol", - "$ref": "RemoteObject", - "optional": true, - "description": "Property symbol object, if the property is of the symbol type." - } - ] - }, - { - "id": "InternalPropertyDescriptor", - "type": "object", - "description": "Object internal property descriptor. This property isn't normally visible in JavaScript code.", - "properties": [ - { - "name": "name", - "type": "string", - "description": "Conventional property name." - }, - { - "name": "value", - "$ref": "RemoteObject", - "optional": true, - "description": "The value associated with the property." - } - ] - }, - { - "id": "CallArgument", - "type": "object", - "description": "Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified.", - "properties": [ - { - "name": "value", - "type": "any", - "optional": true, - "description": "Primitive value." - }, - { - "name": "unserializableValue", - "$ref": "UnserializableValue", - "optional": true, - "description": "Primitive value which can not be JSON-stringified." - }, - { - "name": "objectId", - "$ref": "RemoteObjectId", - "optional": true, - "description": "Remote object handle." - } - ] - }, - { - "id": "ExecutionContextId", - "type": "integer", - "description": "Id of an execution context." - }, - { - "id": "ExecutionContextDescription", - "type": "object", - "description": "Description of an isolated world.", - "properties": [ - { - "name": "id", - "$ref": "ExecutionContextId", - "description": "Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed." - }, - { - "name": "origin", - "type": "string", - "description": "Execution context origin." - }, - { - "name": "name", - "type": "string", - "description": "Human readable name describing given context." - }, - { - "name": "auxData", - "type": "object", - "optional": true, - "description": "Embedder-specific auxiliary data." - } - ] - }, - { - "id": "ExceptionDetails", - "type": "object", - "description": "Detailed information about exception (or error) that was thrown during script compilation or execution.", - "properties": [ - { - "name": "exceptionId", - "type": "integer", - "description": "Exception id." - }, - { - "name": "text", - "type": "string", - "description": "Exception text, which should be used together with exception object when available." - }, - { - "name": "lineNumber", - "type": "integer", - "description": "Line number of the exception location (0-based)." - }, - { - "name": "columnNumber", - "type": "integer", - "description": "Column number of the exception location (0-based)." - }, - { - "name": "scriptId", - "$ref": "ScriptId", - "optional": true, - "description": "Script ID of the exception location." - }, - { - "name": "url", - "type": "string", - "optional": true, - "description": "URL of the exception location, to be used when the script was not reported." - }, - { - "name": "stackTrace", - "$ref": "StackTrace", - "optional": true, - "description": "JavaScript stack trace if available." - }, - { - "name": "exception", - "$ref": "RemoteObject", - "optional": true, - "description": "Exception object if available." - }, - { - "name": "executionContextId", - "$ref": "ExecutionContextId", - "optional": true, - "description": "Identifier of the context where exception happened." - } - ] - }, - { - "id": "Timestamp", - "type": "number", - "description": "Number of milliseconds since epoch." - }, - { - "id": "CallFrame", - "type": "object", - "description": "Stack entry for runtime errors and assertions.", - "properties": [ - { - "name": "functionName", - "type": "string", - "description": "JavaScript function name." - }, - { - "name": "scriptId", - "$ref": "ScriptId", - "description": "JavaScript script id." - }, - { - "name": "url", - "type": "string", - "description": "JavaScript script name or url." - }, - { - "name": "lineNumber", - "type": "integer", - "description": "JavaScript script line number (0-based)." - }, - { - "name": "columnNumber", - "type": "integer", - "description": "JavaScript script column number (0-based)." - } - ] - }, - { - "id": "StackTrace", - "type": "object", - "description": "Call frames for assertions or error messages.", - "exported": true, - "properties": [ - { - "name": "description", - "type": "string", - "optional": true, - "description": "String label of this stack trace. For async traces this may be a name of the function that initiated the async call." - }, - { - "name": "callFrames", - "type": "array", - "items": { - "$ref": "CallFrame" - }, - "description": "JavaScript function name." - }, - { - "name": "parent", - "$ref": "StackTrace", - "optional": true, - "description": "Asynchronous JavaScript stack trace that preceded this stack, if available." - } - ] - } - ], - "commands": [ - { - "name": "evaluate", - "async": true, - "parameters": [ - { - "name": "expression", - "type": "string", - "description": "Expression to evaluate." - }, - { - "name": "objectGroup", - "type": "string", - "optional": true, - "description": "Symbolic group name that can be used to release multiple objects." - }, - { - "name": "includeCommandLineAPI", - "type": "boolean", - "optional": true, - "description": "Determines whether Command Line API should be available during the evaluation." - }, - { - "name": "silent", - "type": "boolean", - "optional": true, - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state." - }, - { - "name": "contextId", - "$ref": "ExecutionContextId", - "optional": true, - "description": "Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page." - }, - { - "name": "returnByValue", - "type": "boolean", - "optional": true, - "description": "Whether the result is expected to be a JSON object that should be sent by value." - }, - { - "name": "generatePreview", - "type": "boolean", - "optional": true, - "experimental": true, - "description": "Whether preview should be generated for the result." - }, - { - "name": "userGesture", - "type": "boolean", - "optional": true, - "experimental": true, - "description": "Whether execution should be treated as initiated by user in the UI." - }, - { - "name": "awaitPromise", - "type": "boolean", - "optional": true, - "description": "Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error." - } - ], - "returns": [ - { - "name": "result", - "$ref": "RemoteObject", - "description": "Evaluation result." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails", - "optional": true, - "description": "Exception details." - } - ], - "description": "Evaluates expression on global object." - }, - { - "name": "awaitPromise", - "async": true, - "parameters": [ - { - "name": "promiseObjectId", - "$ref": "RemoteObjectId", - "description": "Identifier of the promise." - }, - { - "name": "returnByValue", - "type": "boolean", - "optional": true, - "description": "Whether the result is expected to be a JSON object that should be sent by value." - }, - { - "name": "generatePreview", - "type": "boolean", - "optional": true, - "description": "Whether preview should be generated for the result." - } - ], - "returns": [ - { - "name": "result", - "$ref": "RemoteObject", - "description": "Promise result. Will contain rejected value if promise was rejected." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails", - "optional": true, - "description": "Exception details if stack strace is available." - } - ], - "description": "Add handler to promise with given promise object id." - }, - { - "name": "callFunctionOn", - "async": true, - "parameters": [ - { - "name": "objectId", - "$ref": "RemoteObjectId", - "description": "Identifier of the object to call function on." - }, - { - "name": "functionDeclaration", - "type": "string", - "description": "Declaration of the function to call." - }, - { - "name": "arguments", - "type": "array", - "items": { - "$ref": "CallArgument", - "description": "Call argument." - }, - "optional": true, - "description": "Call arguments. All call arguments must belong to the same JavaScript world as the target object." - }, - { - "name": "silent", - "type": "boolean", - "optional": true, - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state." - }, - { - "name": "returnByValue", - "type": "boolean", - "optional": true, - "description": "Whether the result is expected to be a JSON object which should be sent by value." - }, - { - "name": "generatePreview", - "type": "boolean", - "optional": true, - "experimental": true, - "description": "Whether preview should be generated for the result." - }, - { - "name": "userGesture", - "type": "boolean", - "optional": true, - "experimental": true, - "description": "Whether execution should be treated as initiated by user in the UI." - }, - { - "name": "awaitPromise", - "type": "boolean", - "optional": true, - "description": "Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error." - } - ], - "returns": [ - { - "name": "result", - "$ref": "RemoteObject", - "description": "Call result." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails", - "optional": true, - "description": "Exception details." - } - ], - "description": "Calls function with given declaration on the given object. Object group of the result is inherited from the target object." - }, - { - "name": "getProperties", - "parameters": [ - { - "name": "objectId", - "$ref": "RemoteObjectId", - "description": "Identifier of the object to return properties for." - }, - { - "name": "ownProperties", - "optional": true, - "type": "boolean", - "description": "If true, returns properties belonging only to the element itself, not to its prototype chain." - }, - { - "name": "accessorPropertiesOnly", - "optional": true, - "type": "boolean", - "description": "If true, returns accessor properties (with getter/setter) only; internal properties are not returned either.", - "experimental": true - }, - { - "name": "generatePreview", - "type": "boolean", - "optional": true, - "experimental": true, - "description": "Whether preview should be generated for the results." - } - ], - "returns": [ - { - "name": "result", - "type": "array", - "items": { - "$ref": "PropertyDescriptor" - }, - "description": "Object properties." - }, - { - "name": "internalProperties", - "optional": true, - "type": "array", - "items": { - "$ref": "InternalPropertyDescriptor" - }, - "description": "Internal object properties (only of the element itself)." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails", - "optional": true, - "description": "Exception details." - } - ], - "description": "Returns properties of a given object. Object group of the result is inherited from the target object." - }, - { - "name": "releaseObject", - "parameters": [ - { - "name": "objectId", - "$ref": "RemoteObjectId", - "description": "Identifier of the object to release." - } - ], - "description": "Releases remote object with given id." - }, - { - "name": "releaseObjectGroup", - "parameters": [ - { - "name": "objectGroup", - "type": "string", - "description": "Symbolic object group name." - } - ], - "description": "Releases all remote objects that belong to a given group." - }, - { - "name": "runIfWaitingForDebugger", - "description": "Tells inspected instance to run if it was waiting for debugger to attach." - }, - { - "name": "enable", - "description": "Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution context." - }, - { - "name": "disable", - "description": "Disables reporting of execution contexts creation." - }, - { - "name": "discardConsoleEntries", - "description": "Discards collected exceptions and console API calls." - }, - { - "name": "compileScript", - "parameters": [ - { - "name": "expression", - "type": "string", - "description": "Expression to compile." - }, - { - "name": "sourceURL", - "type": "string", - "description": "Source url to be set for the script." - }, - { - "name": "persistScript", - "type": "boolean", - "description": "Specifies whether the compiled script should be persisted." - }, - { - "name": "executionContextId", - "$ref": "ExecutionContextId", - "optional": true, - "description": "Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page." - } - ], - "returns": [ - { - "name": "scriptId", - "$ref": "ScriptId", - "optional": true, - "description": "Id of the script." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails", - "optional": true, - "description": "Exception details." - } - ], - "description": "Compiles expression." - }, - { - "name": "runScript", - "async": true, - "parameters": [ - { - "name": "scriptId", - "$ref": "ScriptId", - "description": "Id of the script to run." - }, - { - "name": "executionContextId", - "$ref": "ExecutionContextId", - "optional": true, - "description": "Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page." - }, - { - "name": "objectGroup", - "type": "string", - "optional": true, - "description": "Symbolic group name that can be used to release multiple objects." - }, - { - "name": "silent", - "type": "boolean", - "optional": true, - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state." - }, - { - "name": "includeCommandLineAPI", - "type": "boolean", - "optional": true, - "description": "Determines whether Command Line API should be available during the evaluation." - }, - { - "name": "returnByValue", - "type": "boolean", - "optional": true, - "description": "Whether the result is expected to be a JSON object which should be sent by value." - }, - { - "name": "generatePreview", - "type": "boolean", - "optional": true, - "description": "Whether preview should be generated for the result." - }, - { - "name": "awaitPromise", - "type": "boolean", - "optional": true, - "description": "Whether execution should wait for promise to be resolved. If the result of evaluation is not a Promise, it's considered to be an error." - } - ], - "returns": [ - { - "name": "result", - "$ref": "RemoteObject", - "description": "Run result." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails", - "optional": true, - "description": "Exception details." - } - ], - "description": "Runs script with given id in a given context." - } - ], - "events": [ - { - "name": "executionContextCreated", - "parameters": [ - { - "name": "context", - "$ref": "ExecutionContextDescription", - "description": "A newly created execution contex." - } - ], - "description": "Issued when new execution context is created." - }, - { - "name": "executionContextDestroyed", - "parameters": [ - { - "name": "executionContextId", - "$ref": "ExecutionContextId", - "description": "Id of the destroyed context" - } - ], - "description": "Issued when execution context is destroyed." - }, - { - "name": "executionContextsCleared", - "description": "Issued when all executionContexts were cleared in browser" - }, - { - "name": "exceptionThrown", - "description": "Issued when exception was thrown and unhandled.", - "parameters": [ - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Timestamp of the exception." - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "exceptionRevoked", - "description": "Issued when unhandled exception was revoked.", - "parameters": [ - { - "name": "reason", - "type": "string", - "description": "Reason describing why exception was revoked." - }, - { - "name": "exceptionId", - "type": "integer", - "description": "The id of revoked exception, as reported in exceptionUnhandled." - } - ] - }, - { - "name": "consoleAPICalled", - "description": "Issued when console API was called.", - "parameters": [ - { - "name": "type", - "type": "string", - "enum": [ - "log", - "debug", - "info", - "error", - "warning", - "dir", - "dirxml", - "table", - "trace", - "clear", - "startGroup", - "startGroupCollapsed", - "endGroup", - "assert", - "profile", - "profileEnd" - ], - "description": "Type of the call." - }, - { - "name": "args", - "type": "array", - "items": { - "$ref": "RemoteObject" - }, - "description": "Call arguments." - }, - { - "name": "executionContextId", - "$ref": "ExecutionContextId", - "description": "Identifier of the context where the call was made." - }, - { - "name": "timestamp", - "$ref": "Timestamp", - "description": "Call timestamp." - }, - { - "name": "stackTrace", - "$ref": "StackTrace", - "optional": true, - "description": "Stack trace captured when the call was made." - } - ] - }, - { - "name": "inspectRequested", - "description": "Issued when object should be inspected (for example, as a result of inspect() command line API call).", - "parameters": [ - { - "name": "object", - "$ref": "RemoteObject" - }, - { - "name": "hints", - "type": "object" - } - ] - } - ] - }, - { - "domain": "Debugger", - "description": "Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.", - "dependencies": [ - "Runtime" - ], - "types": [ - { - "id": "BreakpointId", - "type": "string", - "description": "Breakpoint identifier." - }, - { - "id": "CallFrameId", - "type": "string", - "description": "Call frame identifier." - }, - { - "id": "Location", - "type": "object", - "properties": [ - { - "name": "scriptId", - "$ref": "Runtime.ScriptId", - "description": "Script identifier as reported in the Debugger.scriptParsed." - }, - { - "name": "lineNumber", - "type": "integer", - "description": "Line number in the script (0-based)." - }, - { - "name": "columnNumber", - "type": "integer", - "optional": true, - "description": "Column number in the script (0-based)." - } - ], - "description": "Location in the source code." - }, - { - "id": "CallFrame", - "type": "object", - "properties": [ - { - "name": "callFrameId", - "$ref": "CallFrameId", - "description": "Call frame identifier. This identifier is only valid while the virtual machine is paused." - }, - { - "name": "functionName", - "type": "string", - "description": "Name of the JavaScript function called on this call frame." - }, - { - "name": "functionLocation", - "$ref": "Location", - "optional": true, - "experimental": true, - "description": "Location in the source code." - }, - { - "name": "location", - "$ref": "Location", - "description": "Location in the source code." - }, - { - "name": "scopeChain", - "type": "array", - "items": { - "$ref": "Scope" - }, - "description": "Scope chain for this call frame." - }, - { - "name": "this", - "$ref": "Runtime.RemoteObject", - "description": "this object for this call frame." - }, - { - "name": "returnValue", - "$ref": "Runtime.RemoteObject", - "optional": true, - "description": "The value being returned, if the function is at return point." - } - ], - "description": "JavaScript call frame. Array of call frames form the call stack." - }, - { - "id": "Scope", - "type": "object", - "properties": [ - { - "name": "type", - "type": "string", - "enum": [ - "global", - "local", - "with", - "closure", - "catch", - "block", - "script" - ], - "description": "Scope type." - }, - { - "name": "object", - "$ref": "Runtime.RemoteObject", - "description": "Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." - }, - { - "name": "name", - "type": "string", - "optional": true - }, - { - "name": "startLocation", - "$ref": "Location", - "optional": true, - "description": "Location in the source code where scope starts" - }, - { - "name": "endLocation", - "$ref": "Location", - "optional": true, - "description": "Location in the source code where scope ends" - } - ], - "description": "Scope description." - } - ], - "commands": [ - { - "name": "enable", - "description": "Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received." - }, - { - "name": "disable", - "description": "Disables debugger for given page." - }, - { - "name": "setBreakpointsActive", - "parameters": [ - { - "name": "active", - "type": "boolean", - "description": "New value for breakpoints active state." - } - ], - "description": "Activates / deactivates all breakpoints on the page." - }, - { - "name": "setSkipAllPauses", - "parameters": [ - { - "name": "skip", - "type": "boolean", - "description": "New value for skip pauses state." - } - ], - "description": "Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc)." - }, - { - "name": "setBreakpointByUrl", - "parameters": [ - { - "name": "lineNumber", - "type": "integer", - "description": "Line number to set breakpoint at." - }, - { - "name": "url", - "type": "string", - "optional": true, - "description": "URL of the resources to set breakpoint on." - }, - { - "name": "urlRegex", - "type": "string", - "optional": true, - "description": "Regex pattern for the URLs of the resources to set breakpoints on. Either url or urlRegex must be specified." - }, - { - "name": "columnNumber", - "type": "integer", - "optional": true, - "description": "Offset in the line to set breakpoint at." - }, - { - "name": "condition", - "type": "string", - "optional": true, - "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." - } - ], - "returns": [ - { - "name": "breakpointId", - "$ref": "BreakpointId", - "description": "Id of the created breakpoint for further reference." - }, - { - "name": "locations", - "type": "array", - "items": { - "$ref": "Location" - }, - "description": "List of the locations this breakpoint resolved into upon addition." - } - ], - "description": "Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locations property. Further matching script parsing will result in subsequent breakpointResolved events issued. This logical breakpoint will survive page reloads." - }, - { - "name": "setBreakpoint", - "parameters": [ - { - "name": "location", - "$ref": "Location", - "description": "Location to set breakpoint in." - }, - { - "name": "condition", - "type": "string", - "optional": true, - "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." - } - ], - "returns": [ - { - "name": "breakpointId", - "$ref": "BreakpointId", - "description": "Id of the created breakpoint for further reference." - }, - { - "name": "actualLocation", - "$ref": "Location", - "description": "Location this breakpoint resolved into." - } - ], - "description": "Sets JavaScript breakpoint at a given location." - }, - { - "name": "removeBreakpoint", - "parameters": [ - { - "name": "breakpointId", - "$ref": "BreakpointId" - } - ], - "description": "Removes JavaScript breakpoint." - }, - { - "name": "continueToLocation", - "parameters": [ - { - "name": "location", - "$ref": "Location", - "description": "Location to continue to." - } - ], - "description": "Continues execution until specific location is reached." - }, - { - "name": "stepOver", - "description": "Steps over the statement." - }, - { - "name": "stepInto", - "description": "Steps into the function call." - }, - { - "name": "stepOut", - "description": "Steps out of the function call." - }, - { - "name": "pause", - "description": "Stops on the next JavaScript statement." - }, - { - "name": "resume", - "description": "Resumes JavaScript execution." - }, - { - "name": "setScriptSource", - "parameters": [ - { - "name": "scriptId", - "$ref": "Runtime.ScriptId", - "description": "Id of the script to edit." - }, - { - "name": "scriptSource", - "type": "string", - "description": "New content of the script." - }, - { - "name": "dryRun", - "type": "boolean", - "optional": true, - "description": " If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code." - } - ], - "returns": [ - { - "name": "callFrames", - "type": "array", - "optional": true, - "items": { - "$ref": "CallFrame" - }, - "description": "New stack trace in case editing has happened while VM was stopped." - }, - { - "name": "stackChanged", - "type": "boolean", - "optional": true, - "description": "Whether current call stack was modified after applying the changes." - }, - { - "name": "asyncStackTrace", - "$ref": "Runtime.StackTrace", - "optional": true, - "description": "Async stack trace, if any." - }, - { - "name": "exceptionDetails", - "optional": true, - "$ref": "Runtime.ExceptionDetails", - "description": "Exception details if any." - } - ], - "description": "Edits JavaScript source live." - }, - { - "name": "restartFrame", - "parameters": [ - { - "name": "callFrameId", - "$ref": "CallFrameId", - "description": "Call frame identifier to evaluate on." - } - ], - "returns": [ - { - "name": "callFrames", - "type": "array", - "items": { - "$ref": "CallFrame" - }, - "description": "New stack trace." - }, - { - "name": "asyncStackTrace", - "$ref": "Runtime.StackTrace", - "optional": true, - "description": "Async stack trace, if any." - } - ], - "description": "Restarts particular call frame from the beginning." - }, - { - "name": "getScriptSource", - "parameters": [ - { - "name": "scriptId", - "$ref": "Runtime.ScriptId", - "description": "Id of the script to get source for." - } - ], - "returns": [ - { - "name": "scriptSource", - "type": "string", - "description": "Script source." - } - ], - "description": "Returns source for the script with given id." - }, - { - "name": "setPauseOnExceptions", - "parameters": [ - { - "name": "state", - "type": "string", - "enum": [ - "none", - "uncaught", - "all" - ], - "description": "Pause on exceptions mode." - } - ], - "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none." - }, - { - "name": "evaluateOnCallFrame", - "parameters": [ - { - "name": "callFrameId", - "$ref": "CallFrameId", - "description": "Call frame identifier to evaluate on." - }, - { - "name": "expression", - "type": "string", - "description": "Expression to evaluate." - }, - { - "name": "objectGroup", - "type": "string", - "optional": true, - "description": "String object group name to put result into (allows rapid releasing resulting object handles using releaseObjectGroup)." - }, - { - "name": "includeCommandLineAPI", - "type": "boolean", - "optional": true, - "description": "Specifies whether command line API should be available to the evaluated expression, defaults to false." - }, - { - "name": "silent", - "type": "boolean", - "optional": true, - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides setPauseOnException state." - }, - { - "name": "returnByValue", - "type": "boolean", - "optional": true, - "description": "Whether the result is expected to be a JSON object that should be sent by value." - }, - { - "name": "generatePreview", - "type": "boolean", - "optional": true, - "experimental": true, - "description": "Whether preview should be generated for the result." - } - ], - "returns": [ - { - "name": "result", - "$ref": "Runtime.RemoteObject", - "description": "Object wrapper for the evaluation result." - }, - { - "name": "exceptionDetails", - "$ref": "Runtime.ExceptionDetails", - "optional": true, - "description": "Exception details." - } - ], - "description": "Evaluates expression on a given call frame." - }, - { - "name": "setVariableValue", - "parameters": [ - { - "name": "scopeNumber", - "type": "integer", - "description": "0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually." - }, - { - "name": "variableName", - "type": "string", - "description": "Variable name." - }, - { - "name": "newValue", - "$ref": "Runtime.CallArgument", - "description": "New variable value." - }, - { - "name": "callFrameId", - "$ref": "CallFrameId", - "description": "Id of callframe that holds variable." - } - ], - "description": "Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually." - }, - { - "name": "setAsyncCallStackDepth", - "parameters": [ - { - "name": "maxDepth", - "type": "integer", - "description": "Maximum depth of async call stacks. Setting to 0 will effectively disable collecting async call stacks (default)." - } - ], - "description": "Enables or disables async call stacks tracking." - } - ], - "events": [ - { - "name": "scriptParsed", - "parameters": [ - { - "name": "scriptId", - "$ref": "Runtime.ScriptId", - "description": "Identifier of the script parsed." - }, - { - "name": "url", - "type": "string", - "description": "URL or name of the script parsed (if any)." - }, - { - "name": "startLine", - "type": "integer", - "description": "Line offset of the script within the resource with given URL (for script tags)." - }, - { - "name": "startColumn", - "type": "integer", - "description": "Column offset of the script within the resource with given URL." - }, - { - "name": "endLine", - "type": "integer", - "description": "Last line of the script." - }, - { - "name": "endColumn", - "type": "integer", - "description": "Length of the last line of the script." - }, - { - "name": "executionContextId", - "$ref": "Runtime.ExecutionContextId", - "description": "Specifies script creation context." - }, - { - "name": "hash", - "type": "string", - "description": "Content hash of the script." - }, - { - "name": "executionContextAuxData", - "type": "object", - "optional": true, - "description": "Embedder-specific auxiliary data." - }, - { - "name": "isLiveEdit", - "type": "boolean", - "optional": true, - "description": "True, if this script is generated as a result of the live edit operation.", - "experimental": true - }, - { - "name": "sourceMapURL", - "type": "string", - "optional": true, - "description": "URL of source map associated with script (if any)." - }, - { - "name": "hasSourceURL", - "type": "boolean", - "optional": true, - "description": "True, if this script has sourceURL.", - "experimental": true - } - ], - "description": "Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger." - }, - { - "name": "scriptFailedToParse", - "parameters": [ - { - "name": "scriptId", - "$ref": "Runtime.ScriptId", - "description": "Identifier of the script parsed." - }, - { - "name": "url", - "type": "string", - "description": "URL or name of the script parsed (if any)." - }, - { - "name": "startLine", - "type": "integer", - "description": "Line offset of the script within the resource with given URL (for script tags)." - }, - { - "name": "startColumn", - "type": "integer", - "description": "Column offset of the script within the resource with given URL." - }, - { - "name": "endLine", - "type": "integer", - "description": "Last line of the script." - }, - { - "name": "endColumn", - "type": "integer", - "description": "Length of the last line of the script." - }, - { - "name": "executionContextId", - "$ref": "Runtime.ExecutionContextId", - "description": "Specifies script creation context." - }, - { - "name": "hash", - "type": "string", - "description": "Content hash of the script." - }, - { - "name": "executionContextAuxData", - "type": "object", - "optional": true, - "description": "Embedder-specific auxiliary data." - }, - { - "name": "sourceMapURL", - "type": "string", - "optional": true, - "description": "URL of source map associated with script (if any)." - }, - { - "name": "hasSourceURL", - "type": "boolean", - "optional": true, - "description": "True, if this script has sourceURL.", - "experimental": true - } - ], - "description": "Fired when virtual machine fails to parse the script." - }, - { - "name": "breakpointResolved", - "parameters": [ - { - "name": "breakpointId", - "$ref": "BreakpointId", - "description": "Breakpoint unique identifier." - }, - { - "name": "location", - "$ref": "Location", - "description": "Actual breakpoint location." - } - ], - "description": "Fired when breakpoint is resolved to an actual script and location." - }, - { - "name": "paused", - "parameters": [ - { - "name": "callFrames", - "type": "array", - "items": { - "$ref": "CallFrame" - }, - "description": "Call stack the virtual machine stopped on." - }, - { - "name": "reason", - "type": "string", - "enum": [ - "XHR", - "DOM", - "EventListener", - "exception", - "assert", - "debugCommand", - "promiseRejection", - "other" - ], - "description": "Pause reason.", - "exported": true - }, - { - "name": "data", - "type": "object", - "optional": true, - "description": "Object containing break-specific auxiliary properties." - }, - { - "name": "hitBreakpoints", - "type": "array", - "optional": true, - "items": { - "type": "string" - }, - "description": "Hit breakpoints IDs" - }, - { - "name": "asyncStackTrace", - "$ref": "Runtime.StackTrace", - "optional": true, - "description": "Async stack trace, if any." - } - ], - "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria." - }, - { - "name": "resumed", - "description": "Fired when the virtual machine resumed execution." - } - ] - }, - { - "domain": "Profiler", - "dependencies": [ - "Runtime", - "Debugger" - ], - "types": [ - { - "id": "ProfileNode", - "type": "object", - "description": "Profile node. Holds callsite information, execution statistics and child nodes.", - "properties": [ - { - "name": "id", - "type": "integer", - "description": "Unique id of the node." - }, - { - "name": "callFrame", - "$ref": "Runtime.CallFrame", - "description": "Function location." - }, - { - "name": "hitCount", - "type": "integer", - "optional": true, - "experimental": true, - "description": "Number of samples where this node was on top of the call stack." - }, - { - "name": "children", - "type": "array", - "items": { - "type": "integer" - }, - "optional": true, - "description": "Child node ids." - }, - { - "name": "deoptReason", - "type": "string", - "optional": true, - "description": "The reason of being not optimized. The function may be deoptimized or marked as don't optimize." - }, - { - "name": "positionTicks", - "type": "array", - "items": { - "$ref": "PositionTickInfo" - }, - "optional": true, - "experimental": true, - "description": "An array of source position ticks." - } - ] - }, - { - "id": "Profile", - "type": "object", - "description": "Profile.", - "properties": [ - { - "name": "nodes", - "type": "array", - "items": { - "$ref": "ProfileNode" - }, - "description": "The list of profile nodes. First item is the root node." - }, - { - "name": "startTime", - "type": "number", - "description": "Profiling start timestamp in microseconds." - }, - { - "name": "endTime", - "type": "number", - "description": "Profiling end timestamp in microseconds." - }, - { - "name": "samples", - "optional": true, - "type": "array", - "items": { - "type": "integer" - }, - "description": "Ids of samples top nodes." - }, - { - "name": "timeDeltas", - "optional": true, - "type": "array", - "items": { - "type": "integer" - }, - "description": "Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime." - } - ] - } - ], - "commands": [ - { - "name": "enable" - }, - { - "name": "disable" - }, - { - "name": "setSamplingInterval", - "parameters": [ - { - "name": "interval", - "type": "integer", - "description": "New sampling interval in microseconds." - } - ], - "description": "Changes CPU profiler sampling interval. Must be called before CPU profiles recording started." - }, - { - "name": "start" - }, - { - "name": "stop", - "returns": [ - { - "name": "profile", - "$ref": "Profile", - "description": "Recorded profile." - } - ] - } - ], - "events": [ - { - "name": "consoleProfileStarted", - "parameters": [ - { - "name": "id", - "type": "string" - }, - { - "name": "location", - "$ref": "Debugger.Location", - "description": "Location of console.profile()." - }, - { - "name": "title", - "type": "string", - "optional": true, - "description": "Profile title passed as an argument to console.profile()." - } - ], - "description": "Sent when new profile recodring is started using console.profile() call." - }, - { - "name": "consoleProfileFinished", - "parameters": [ - { - "name": "id", - "type": "string" - }, - { - "name": "location", - "$ref": "Debugger.Location", - "description": "Location of console.profileEnd()." - }, - { - "name": "profile", - "$ref": "Profile" - }, - { - "name": "title", - "type": "string", - "optional": true, - "description": "Profile title passed as an argument to console.profile()." - } - ] - } - ] - } - ] -} diff --git a/pages/_data/1-3.json b/pages/_data/1-3.json deleted file mode 100644 index b0bb2b7b0d..0000000000 --- a/pages/_data/1-3.json +++ /dev/null @@ -1,9648 +0,0 @@ -{ - "domains": [ - { - "domain": "Browser", - "description": "The Browser domain defines methods and events for browser managing.", - "types": [], - "commands": [ - { - "name": "resetPermissions", - "description": "Reset all permission management for all origins.", - "parameters": [ - { - "name": "browserContextId", - "description": "BrowserContext to reset permissions. When omitted, default browser context is used.", - "optional": true, - "$ref": "BrowserContextID" - } - ] - }, - { - "name": "close", - "description": "Close browser gracefully." - }, - { - "name": "getVersion", - "description": "Returns version information.", - "returns": [ - { - "name": "protocolVersion", - "description": "Protocol version.", - "type": "string" - }, - { - "name": "product", - "description": "Product name.", - "type": "string" - }, - { - "name": "revision", - "description": "Product revision.", - "type": "string" - }, - { - "name": "userAgent", - "description": "User-Agent.", - "type": "string" - }, - { - "name": "jsVersion", - "description": "V8 version.", - "type": "string" - } - ] - }, - { - "name": "addPrivacySandboxEnrollmentOverride", - "description": "Allows a site to use privacy sandbox features that require enrollment\nwithout the site actually being enrolled. Only supported on page targets.", - "parameters": [ - { - "name": "url", - "type": "string" - } - ] - }, - { - "name": "addPrivacySandboxCoordinatorKeyConfig", - "description": "Configures encryption keys used with a given privacy sandbox API to talk\nto a trusted coordinator. Since this is intended for test automation only,\ncoordinatorOrigin must be a .test domain. No existing coordinator\nconfiguration for the origin may exist.", - "parameters": [ - { - "name": "api", - "$ref": "PrivacySandboxAPI" - }, - { - "name": "coordinatorOrigin", - "type": "string" - }, - { - "name": "keyConfig", - "type": "string" - }, - { - "name": "browserContextId", - "description": "BrowserContext to perform the action in. When omitted, default browser\ncontext is used.", - "optional": true, - "$ref": "BrowserContextID" - } - ] - } - ], - "events": [] - }, - { - "domain": "DOM", - "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object\nthat has an `id`. This `id` can be used to get additional information on the Node, resolve it into\nthe JavaScript object wrapper, etc. It is important that client receives DOM events only for the\nnodes that are known to the client. Backend keeps track of the nodes that were sent to the client\nand never sends the same node twice. It is client's responsibility to collect information about\nthe nodes that were sent to the client. Note that `iframe` owner elements will return\ncorresponding document elements as their child nodes.", - "dependencies": [ - "Runtime" - ], - "types": [ - { - "id": "NodeId", - "description": "Unique DOM node identifier.", - "type": "integer" - }, - { - "id": "BackendNodeId", - "description": "Unique DOM node identifier used to reference a node that may not have been pushed to the\nfront-end.", - "type": "integer" - }, - { - "id": "BackendNode", - "description": "Backend node with a friendly name.", - "type": "object", - "properties": [ - { - "name": "nodeType", - "description": "`Node`'s nodeType.", - "type": "integer" - }, - { - "name": "nodeName", - "description": "`Node`'s nodeName.", - "type": "string" - }, - { - "name": "backendNodeId", - "$ref": "BackendNodeId" - } - ] - }, - { - "id": "PseudoType", - "description": "Pseudo element type.", - "type": "string", - "enum": [ - "first-line", - "first-letter", - "checkmark", - "before", - "after", - "picker-icon", - "interest-hint", - "marker", - "backdrop", - "column", - "selection", - "search-text", - "target-text", - "spelling-error", - "grammar-error", - "highlight", - "first-line-inherited", - "scroll-marker", - "scroll-marker-group", - "scroll-button", - "scrollbar", - "scrollbar-thumb", - "scrollbar-button", - "scrollbar-track", - "scrollbar-track-piece", - "scrollbar-corner", - "resizer", - "input-list-button", - "view-transition", - "view-transition-group", - "view-transition-image-pair", - "view-transition-group-children", - "view-transition-old", - "view-transition-new", - "placeholder", - "file-selector-button", - "details-content", - "picker", - "permission-icon" - ] - }, - { - "id": "ShadowRootType", - "description": "Shadow root type.", - "type": "string", - "enum": [ - "user-agent", - "open", - "closed" - ] - }, - { - "id": "CompatibilityMode", - "description": "Document compatibility mode.", - "type": "string", - "enum": [ - "QuirksMode", - "LimitedQuirksMode", - "NoQuirksMode" - ] - }, - { - "id": "PhysicalAxes", - "description": "ContainerSelector physical axes", - "type": "string", - "enum": [ - "Horizontal", - "Vertical", - "Both" - ] - }, - { - "id": "LogicalAxes", - "description": "ContainerSelector logical axes", - "type": "string", - "enum": [ - "Inline", - "Block", - "Both" - ] - }, - { - "id": "ScrollOrientation", - "description": "Physical scroll orientation", - "type": "string", - "enum": [ - "horizontal", - "vertical" - ] - }, - { - "id": "Node", - "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes.\nDOMNode is a base node mirror type.", - "type": "object", - "properties": [ - { - "name": "nodeId", - "description": "Node identifier that is passed into the rest of the DOM messages as the `nodeId`. Backend\nwill only push node with given `id` once. It is aware of all requested nodes and will only\nfire DOM events for nodes known to the client.", - "$ref": "NodeId" - }, - { - "name": "parentId", - "description": "The id of the parent node if any.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "The BackendNodeId for this node.", - "$ref": "BackendNodeId" - }, - { - "name": "nodeType", - "description": "`Node`'s nodeType.", - "type": "integer" - }, - { - "name": "nodeName", - "description": "`Node`'s nodeName.", - "type": "string" - }, - { - "name": "localName", - "description": "`Node`'s localName.", - "type": "string" - }, - { - "name": "nodeValue", - "description": "`Node`'s nodeValue.", - "type": "string" - }, - { - "name": "childNodeCount", - "description": "Child count for `Container` nodes.", - "optional": true, - "type": "integer" - }, - { - "name": "children", - "description": "Child nodes of this node when requested with children.", - "optional": true, - "type": "array", - "items": { - "$ref": "Node" - } - }, - { - "name": "attributes", - "description": "Attributes of the `Element` node in the form of flat array `[name1, value1, name2, value2]`.", - "optional": true, - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "documentURL", - "description": "Document URL that `Document` or `FrameOwner` node points to.", - "optional": true, - "type": "string" - }, - { - "name": "baseURL", - "description": "Base URL that `Document` or `FrameOwner` node uses for URL completion.", - "optional": true, - "type": "string" - }, - { - "name": "publicId", - "description": "`DocumentType`'s publicId.", - "optional": true, - "type": "string" - }, - { - "name": "systemId", - "description": "`DocumentType`'s systemId.", - "optional": true, - "type": "string" - }, - { - "name": "internalSubset", - "description": "`DocumentType`'s internalSubset.", - "optional": true, - "type": "string" - }, - { - "name": "xmlVersion", - "description": "`Document`'s XML version in case of XML documents.", - "optional": true, - "type": "string" - }, - { - "name": "name", - "description": "`Attr`'s name.", - "optional": true, - "type": "string" - }, - { - "name": "value", - "description": "`Attr`'s value.", - "optional": true, - "type": "string" - }, - { - "name": "pseudoType", - "description": "Pseudo element type for this node.", - "optional": true, - "$ref": "PseudoType" - }, - { - "name": "pseudoIdentifier", - "description": "Pseudo element identifier for this node. Only present if there is a\nvalid pseudoType.", - "optional": true, - "type": "string" - }, - { - "name": "shadowRootType", - "description": "Shadow root type.", - "optional": true, - "$ref": "ShadowRootType" - }, - { - "name": "frameId", - "description": "Frame ID for frame owner elements.", - "optional": true, - "$ref": "Page.FrameId" - }, - { - "name": "contentDocument", - "description": "Content document for frame owner elements.", - "optional": true, - "$ref": "Node" - }, - { - "name": "shadowRoots", - "description": "Shadow root list for given element host.", - "optional": true, - "type": "array", - "items": { - "$ref": "Node" - } - }, - { - "name": "templateContent", - "description": "Content document fragment for template elements.", - "optional": true, - "$ref": "Node" - }, - { - "name": "pseudoElements", - "description": "Pseudo elements associated with this node.", - "optional": true, - "type": "array", - "items": { - "$ref": "Node" - } - }, - { - "name": "importedDocument", - "description": "Deprecated, as the HTML Imports API has been removed (crbug.com/937746).\nThis property used to return the imported document for the HTMLImport links.\nThe property is always undefined now.", - "deprecated": true, - "optional": true, - "$ref": "Node" - }, - { - "name": "distributedNodes", - "description": "Distributed nodes for given insertion point.", - "optional": true, - "type": "array", - "items": { - "$ref": "BackendNode" - } - }, - { - "name": "isSVG", - "description": "Whether the node is SVG.", - "optional": true, - "type": "boolean" - }, - { - "name": "compatibilityMode", - "optional": true, - "$ref": "CompatibilityMode" - }, - { - "name": "assignedSlot", - "optional": true, - "$ref": "BackendNode" - }, - { - "name": "isScrollable", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "id": "DetachedElementInfo", - "description": "A structure to hold the top-level node of a detached tree and an array of its retained descendants.", - "type": "object", - "properties": [ - { - "name": "treeNode", - "$ref": "Node" - }, - { - "name": "retainedNodeIds", - "type": "array", - "items": { - "$ref": "NodeId" - } - } - ] - }, - { - "id": "RGBA", - "description": "A structure holding an RGBA color.", - "type": "object", - "properties": [ - { - "name": "r", - "description": "The red component, in the [0-255] range.", - "type": "integer" - }, - { - "name": "g", - "description": "The green component, in the [0-255] range.", - "type": "integer" - }, - { - "name": "b", - "description": "The blue component, in the [0-255] range.", - "type": "integer" - }, - { - "name": "a", - "description": "The alpha component, in the [0-1] range (default: 1).", - "optional": true, - "type": "number" - } - ] - }, - { - "id": "Quad", - "description": "An array of quad vertices, x immediately followed by y for each point, points clock-wise.", - "type": "array", - "items": { - "type": "number" - } - }, - { - "id": "BoxModel", - "description": "Box model.", - "type": "object", - "properties": [ - { - "name": "content", - "description": "Content box", - "$ref": "Quad" - }, - { - "name": "padding", - "description": "Padding box", - "$ref": "Quad" - }, - { - "name": "border", - "description": "Border box", - "$ref": "Quad" - }, - { - "name": "margin", - "description": "Margin box", - "$ref": "Quad" - }, - { - "name": "width", - "description": "Node width", - "type": "integer" - }, - { - "name": "height", - "description": "Node height", - "type": "integer" - }, - { - "name": "shapeOutside", - "description": "Shape outside coordinates", - "optional": true, - "$ref": "ShapeOutsideInfo" - } - ] - }, - { - "id": "ShapeOutsideInfo", - "description": "CSS Shape Outside details.", - "type": "object", - "properties": [ - { - "name": "bounds", - "description": "Shape bounds", - "$ref": "Quad" - }, - { - "name": "shape", - "description": "Shape coordinate details", - "type": "array", - "items": { - "type": "any" - } - }, - { - "name": "marginShape", - "description": "Margin shape bounds", - "type": "array", - "items": { - "type": "any" - } - } - ] - }, - { - "id": "Rect", - "description": "Rectangle.", - "type": "object", - "properties": [ - { - "name": "x", - "description": "X coordinate", - "type": "number" - }, - { - "name": "y", - "description": "Y coordinate", - "type": "number" - }, - { - "name": "width", - "description": "Rectangle width", - "type": "number" - }, - { - "name": "height", - "description": "Rectangle height", - "type": "number" - } - ] - }, - { - "id": "CSSComputedStyleProperty", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Computed style property name.", - "type": "string" - }, - { - "name": "value", - "description": "Computed style property value.", - "type": "string" - } - ] - } - ], - "commands": [ - { - "name": "describeNode", - "description": "Describes node given its id, does not require domain to be enabled. Does not start tracking any\nobjects, can be used for automation.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Identifier of the backend node.", - "optional": true, - "$ref": "BackendNodeId" - }, - { - "name": "objectId", - "description": "JavaScript object id of the node wrapper.", - "optional": true, - "$ref": "Runtime.RemoteObjectId" - }, - { - "name": "depth", - "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the\nentire subtree or provide an integer larger than 0.", - "optional": true, - "type": "integer" - }, - { - "name": "pierce", - "description": "Whether or not iframes and shadow roots should be traversed when returning the subtree\n(default is false).", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "node", - "description": "Node description.", - "$ref": "Node" - } - ] - }, - { - "name": "scrollIntoViewIfNeeded", - "description": "Scrolls the specified rect of the given node into view if not already visible.\nNote: exactly one between nodeId, backendNodeId and objectId should be passed\nto identify the node.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Identifier of the backend node.", - "optional": true, - "$ref": "BackendNodeId" - }, - { - "name": "objectId", - "description": "JavaScript object id of the node wrapper.", - "optional": true, - "$ref": "Runtime.RemoteObjectId" - }, - { - "name": "rect", - "description": "The rect to be scrolled into view, relative to the node's border box, in CSS pixels.\nWhen omitted, center of the node will be used, similar to Element.scrollIntoView.", - "optional": true, - "$ref": "Rect" - } - ] - }, - { - "name": "disable", - "description": "Disables DOM agent for the given page." - }, - { - "name": "enable", - "description": "Enables DOM agent for the given page.", - "parameters": [ - { - "name": "includeWhitespace", - "description": "Whether to include whitespaces in the children array of returned Nodes.", - "experimental": true, - "optional": true, - "type": "string", - "enum": [ - "none", - "all" - ] - } - ] - }, - { - "name": "focus", - "description": "Focuses the given element.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Identifier of the backend node.", - "optional": true, - "$ref": "BackendNodeId" - }, - { - "name": "objectId", - "description": "JavaScript object id of the node wrapper.", - "optional": true, - "$ref": "Runtime.RemoteObjectId" - } - ] - }, - { - "name": "getAttributes", - "description": "Returns attributes for the specified node.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to retrieve attributes for.", - "$ref": "NodeId" - } - ], - "returns": [ - { - "name": "attributes", - "description": "An interleaved array of node attribute names and values.", - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - { - "name": "getBoxModel", - "description": "Returns boxes for the given node.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Identifier of the backend node.", - "optional": true, - "$ref": "BackendNodeId" - }, - { - "name": "objectId", - "description": "JavaScript object id of the node wrapper.", - "optional": true, - "$ref": "Runtime.RemoteObjectId" - } - ], - "returns": [ - { - "name": "model", - "description": "Box model for the node.", - "$ref": "BoxModel" - } - ] - }, - { - "name": "getDocument", - "description": "Returns the root DOM node (and optionally the subtree) to the caller.\nImplicitly enables the DOM domain events for the current target.", - "parameters": [ - { - "name": "depth", - "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the\nentire subtree or provide an integer larger than 0.", - "optional": true, - "type": "integer" - }, - { - "name": "pierce", - "description": "Whether or not iframes and shadow roots should be traversed when returning the subtree\n(default is false).", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "root", - "description": "Resulting node.", - "$ref": "Node" - } - ] - }, - { - "name": "getNodeForLocation", - "description": "Returns node id at given location. Depending on whether DOM domain is enabled, nodeId is\neither returned or not.", - "parameters": [ - { - "name": "x", - "description": "X coordinate.", - "type": "integer" - }, - { - "name": "y", - "description": "Y coordinate.", - "type": "integer" - }, - { - "name": "includeUserAgentShadowDOM", - "description": "False to skip to the nearest non-UA shadow root ancestor (default: false).", - "optional": true, - "type": "boolean" - }, - { - "name": "ignorePointerEventsNone", - "description": "Whether to ignore pointer-events: none on elements and hit test them.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "backendNodeId", - "description": "Resulting node.", - "$ref": "BackendNodeId" - }, - { - "name": "frameId", - "description": "Frame this node belongs to.", - "$ref": "Page.FrameId" - }, - { - "name": "nodeId", - "description": "Id of the node at given coordinates, only when enabled and requested document.", - "optional": true, - "$ref": "NodeId" - } - ] - }, - { - "name": "getOuterHTML", - "description": "Returns node's HTML markup.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Identifier of the backend node.", - "optional": true, - "$ref": "BackendNodeId" - }, - { - "name": "objectId", - "description": "JavaScript object id of the node wrapper.", - "optional": true, - "$ref": "Runtime.RemoteObjectId" - }, - { - "name": "includeShadowDOM", - "description": "Include all shadow roots. Equals to false if not specified.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "outerHTML", - "description": "Outer HTML markup.", - "type": "string" - } - ] - }, - { - "name": "hideHighlight", - "description": "Hides any highlight.", - "redirect": "Overlay" - }, - { - "name": "highlightNode", - "description": "Highlights DOM node.", - "redirect": "Overlay" - }, - { - "name": "highlightRect", - "description": "Highlights given rectangle.", - "redirect": "Overlay" - }, - { - "name": "moveTo", - "description": "Moves node into the new container, places it before the given anchor.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to move.", - "$ref": "NodeId" - }, - { - "name": "targetNodeId", - "description": "Id of the element to drop the moved node into.", - "$ref": "NodeId" - }, - { - "name": "insertBeforeNodeId", - "description": "Drop node before this one (if absent, the moved node becomes the last child of\n`targetNodeId`).", - "optional": true, - "$ref": "NodeId" - } - ], - "returns": [ - { - "name": "nodeId", - "description": "New id of the moved node.", - "$ref": "NodeId" - } - ] - }, - { - "name": "querySelector", - "description": "Executes `querySelector` on a given node.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to query upon.", - "$ref": "NodeId" - }, - { - "name": "selector", - "description": "Selector string.", - "type": "string" - } - ], - "returns": [ - { - "name": "nodeId", - "description": "Query selector result.", - "$ref": "NodeId" - } - ] - }, - { - "name": "querySelectorAll", - "description": "Executes `querySelectorAll` on a given node.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to query upon.", - "$ref": "NodeId" - }, - { - "name": "selector", - "description": "Selector string.", - "type": "string" - } - ], - "returns": [ - { - "name": "nodeIds", - "description": "Query selector result.", - "type": "array", - "items": { - "$ref": "NodeId" - } - } - ] - }, - { - "name": "removeAttribute", - "description": "Removes attribute with given name from an element with given id.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the element to remove attribute from.", - "$ref": "NodeId" - }, - { - "name": "name", - "description": "Name of the attribute to remove.", - "type": "string" - } - ] - }, - { - "name": "removeNode", - "description": "Removes node with given id.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to remove.", - "$ref": "NodeId" - } - ] - }, - { - "name": "requestChildNodes", - "description": "Requests that children of the node with given id are returned to the caller in form of\n`setChildNodes` events where not only immediate children are retrieved, but all children down to\nthe specified depth.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to get children for.", - "$ref": "NodeId" - }, - { - "name": "depth", - "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the\nentire subtree or provide an integer larger than 0.", - "optional": true, - "type": "integer" - }, - { - "name": "pierce", - "description": "Whether or not iframes and shadow roots should be traversed when returning the sub-tree\n(default is false).", - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "requestNode", - "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All\nnodes that form the path from the node to the root are also sent to the client as a series of\n`setChildNodes` notifications.", - "parameters": [ - { - "name": "objectId", - "description": "JavaScript object id to convert into node.", - "$ref": "Runtime.RemoteObjectId" - } - ], - "returns": [ - { - "name": "nodeId", - "description": "Node id for given object.", - "$ref": "NodeId" - } - ] - }, - { - "name": "resolveNode", - "description": "Resolves the JavaScript node object for a given NodeId or BackendNodeId.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to resolve.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Backend identifier of the node to resolve.", - "optional": true, - "$ref": "DOM.BackendNodeId" - }, - { - "name": "objectGroup", - "description": "Symbolic group name that can be used to release multiple objects.", - "optional": true, - "type": "string" - }, - { - "name": "executionContextId", - "description": "Execution context in which to resolve the node.", - "optional": true, - "$ref": "Runtime.ExecutionContextId" - } - ], - "returns": [ - { - "name": "object", - "description": "JavaScript object wrapper for given node.", - "$ref": "Runtime.RemoteObject" - } - ] - }, - { - "name": "setAttributeValue", - "description": "Sets attribute for an element with given id.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the element to set attribute for.", - "$ref": "NodeId" - }, - { - "name": "name", - "description": "Attribute name.", - "type": "string" - }, - { - "name": "value", - "description": "Attribute value.", - "type": "string" - } - ] - }, - { - "name": "setAttributesAsText", - "description": "Sets attributes on element with given id. This method is useful when user edits some existing\nattribute value and types in several attribute name/value pairs.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the element to set attributes for.", - "$ref": "NodeId" - }, - { - "name": "text", - "description": "Text with a number of attributes. Will parse this text using HTML parser.", - "type": "string" - }, - { - "name": "name", - "description": "Attribute name to replace with new attributes derived from text in case text parsed\nsuccessfully.", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "setFileInputFiles", - "description": "Sets files for the given file input element.", - "parameters": [ - { - "name": "files", - "description": "Array of file paths to set.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "nodeId", - "description": "Identifier of the node.", - "optional": true, - "$ref": "NodeId" - }, - { - "name": "backendNodeId", - "description": "Identifier of the backend node.", - "optional": true, - "$ref": "BackendNodeId" - }, - { - "name": "objectId", - "description": "JavaScript object id of the node wrapper.", - "optional": true, - "$ref": "Runtime.RemoteObjectId" - } - ] - }, - { - "name": "setNodeName", - "description": "Sets node name for a node with given id.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to set name for.", - "$ref": "NodeId" - }, - { - "name": "name", - "description": "New node's name.", - "type": "string" - } - ], - "returns": [ - { - "name": "nodeId", - "description": "New node's id.", - "$ref": "NodeId" - } - ] - }, - { - "name": "setNodeValue", - "description": "Sets node value for a node with given id.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to set value for.", - "$ref": "NodeId" - }, - { - "name": "value", - "description": "New node's value.", - "type": "string" - } - ] - }, - { - "name": "setOuterHTML", - "description": "Sets node HTML markup, returns new node id.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node to set markup for.", - "$ref": "NodeId" - }, - { - "name": "outerHTML", - "description": "Outer HTML markup to set.", - "type": "string" - } - ] - } - ], - "events": [ - { - "name": "attributeModified", - "description": "Fired when `Element`'s attribute is modified.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node that has changed.", - "$ref": "NodeId" - }, - { - "name": "name", - "description": "Attribute name.", - "type": "string" - }, - { - "name": "value", - "description": "Attribute value.", - "type": "string" - } - ] - }, - { - "name": "attributeRemoved", - "description": "Fired when `Element`'s attribute is removed.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node that has changed.", - "$ref": "NodeId" - }, - { - "name": "name", - "description": "A ttribute name.", - "type": "string" - } - ] - }, - { - "name": "characterDataModified", - "description": "Mirrors `DOMCharacterDataModified` event.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node that has changed.", - "$ref": "NodeId" - }, - { - "name": "characterData", - "description": "New text value.", - "type": "string" - } - ] - }, - { - "name": "childNodeCountUpdated", - "description": "Fired when `Container`'s child node count has changed.", - "parameters": [ - { - "name": "nodeId", - "description": "Id of the node that has changed.", - "$ref": "NodeId" - }, - { - "name": "childNodeCount", - "description": "New node count.", - "type": "integer" - } - ] - }, - { - "name": "childNodeInserted", - "description": "Mirrors `DOMNodeInserted` event.", - "parameters": [ - { - "name": "parentNodeId", - "description": "Id of the node that has changed.", - "$ref": "NodeId" - }, - { - "name": "previousNodeId", - "description": "Id of the previous sibling.", - "$ref": "NodeId" - }, - { - "name": "node", - "description": "Inserted node data.", - "$ref": "Node" - } - ] - }, - { - "name": "childNodeRemoved", - "description": "Mirrors `DOMNodeRemoved` event.", - "parameters": [ - { - "name": "parentNodeId", - "description": "Parent id.", - "$ref": "NodeId" - }, - { - "name": "nodeId", - "description": "Id of the node that has been removed.", - "$ref": "NodeId" - } - ] - }, - { - "name": "documentUpdated", - "description": "Fired when `Document` has been totally updated. Node ids are no longer valid." - }, - { - "name": "setChildNodes", - "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon\nmost of the calls requesting node ids.", - "parameters": [ - { - "name": "parentId", - "description": "Parent node id to populate with children.", - "$ref": "NodeId" - }, - { - "name": "nodes", - "description": "Child nodes array.", - "type": "array", - "items": { - "$ref": "Node" - } - } - ] - } - ] - }, - { - "domain": "DOMDebugger", - "description": "DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript\nexecution will stop on these operations as if there was a regular breakpoint set.", - "dependencies": [ - "DOM", - "Runtime" - ], - "types": [ - { - "id": "DOMBreakpointType", - "description": "DOM breakpoint type.", - "type": "string", - "enum": [ - "subtree-modified", - "attribute-modified", - "node-removed" - ] - }, - { - "id": "EventListener", - "description": "Object event listener.", - "type": "object", - "properties": [ - { - "name": "type", - "description": "`EventListener`'s type.", - "type": "string" - }, - { - "name": "useCapture", - "description": "`EventListener`'s useCapture.", - "type": "boolean" - }, - { - "name": "passive", - "description": "`EventListener`'s passive flag.", - "type": "boolean" - }, - { - "name": "once", - "description": "`EventListener`'s once flag.", - "type": "boolean" - }, - { - "name": "scriptId", - "description": "Script id of the handler code.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "lineNumber", - "description": "Line number in the script (0-based).", - "type": "integer" - }, - { - "name": "columnNumber", - "description": "Column number in the script (0-based).", - "type": "integer" - }, - { - "name": "handler", - "description": "Event handler function value.", - "optional": true, - "$ref": "Runtime.RemoteObject" - }, - { - "name": "originalHandler", - "description": "Event original handler function value.", - "optional": true, - "$ref": "Runtime.RemoteObject" - }, - { - "name": "backendNodeId", - "description": "Node the listener is added to (if any).", - "optional": true, - "$ref": "DOM.BackendNodeId" - } - ] - } - ], - "commands": [ - { - "name": "getEventListeners", - "description": "Returns event listeners of the given object.", - "parameters": [ - { - "name": "objectId", - "description": "Identifier of the object to return listeners for.", - "$ref": "Runtime.RemoteObjectId" - }, - { - "name": "depth", - "description": "The maximum depth at which Node children should be retrieved, defaults to 1. Use -1 for the\nentire subtree or provide an integer larger than 0.", - "optional": true, - "type": "integer" - }, - { - "name": "pierce", - "description": "Whether or not iframes and shadow roots should be traversed when returning the subtree\n(default is false). Reports listeners for all contexts if pierce is enabled.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "listeners", - "description": "Array of relevant listeners.", - "type": "array", - "items": { - "$ref": "EventListener" - } - } - ] - }, - { - "name": "removeDOMBreakpoint", - "description": "Removes DOM breakpoint that was set using `setDOMBreakpoint`.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node to remove breakpoint from.", - "$ref": "DOM.NodeId" - }, - { - "name": "type", - "description": "Type of the breakpoint to remove.", - "$ref": "DOMBreakpointType" - } - ] - }, - { - "name": "removeEventListenerBreakpoint", - "description": "Removes breakpoint on particular DOM event.", - "parameters": [ - { - "name": "eventName", - "description": "Event name.", - "type": "string" - }, - { - "name": "targetName", - "description": "EventTarget interface name.", - "experimental": true, - "optional": true, - "type": "string" - } - ] - }, - { - "name": "removeXHRBreakpoint", - "description": "Removes breakpoint from XMLHttpRequest.", - "parameters": [ - { - "name": "url", - "description": "Resource URL substring.", - "type": "string" - } - ] - }, - { - "name": "setDOMBreakpoint", - "description": "Sets breakpoint on particular operation with DOM.", - "parameters": [ - { - "name": "nodeId", - "description": "Identifier of the node to set breakpoint on.", - "$ref": "DOM.NodeId" - }, - { - "name": "type", - "description": "Type of the operation to stop upon.", - "$ref": "DOMBreakpointType" - } - ] - }, - { - "name": "setEventListenerBreakpoint", - "description": "Sets breakpoint on particular DOM event.", - "parameters": [ - { - "name": "eventName", - "description": "DOM Event name to stop on (any DOM event will do).", - "type": "string" - }, - { - "name": "targetName", - "description": "EventTarget interface name to stop on. If equal to `\"*\"` or not provided, will stop on any\nEventTarget.", - "experimental": true, - "optional": true, - "type": "string" - } - ] - }, - { - "name": "setXHRBreakpoint", - "description": "Sets breakpoint on XMLHttpRequest.", - "parameters": [ - { - "name": "url", - "description": "Resource URL substring. All XHRs having this substring in the URL will get stopped upon.", - "type": "string" - } - ] - } - ] - }, - { - "domain": "Emulation", - "description": "This domain emulates different environments for the page.", - "dependencies": [ - "DOM", - "Page", - "Runtime" - ], - "types": [ - { - "id": "ScreenOrientation", - "description": "Screen orientation.", - "type": "object", - "properties": [ - { - "name": "type", - "description": "Orientation type.", - "type": "string", - "enum": [ - "portraitPrimary", - "portraitSecondary", - "landscapePrimary", - "landscapeSecondary" - ] - }, - { - "name": "angle", - "description": "Orientation angle.", - "type": "integer" - } - ] - }, - { - "id": "DisplayFeature", - "type": "object", - "properties": [ - { - "name": "orientation", - "description": "Orientation of a display feature in relation to screen", - "type": "string", - "enum": [ - "vertical", - "horizontal" - ] - }, - { - "name": "offset", - "description": "The offset from the screen origin in either the x (for vertical\norientation) or y (for horizontal orientation) direction.", - "type": "integer" - }, - { - "name": "maskLength", - "description": "A display feature may mask content such that it is not physically\ndisplayed - this length along with the offset describes this area.\nA display feature that only splits content will have a 0 mask_length.", - "type": "integer" - } - ] - }, - { - "id": "DevicePosture", - "type": "object", - "properties": [ - { - "name": "type", - "description": "Current posture of the device", - "type": "string", - "enum": [ - "continuous", - "folded" - ] - } - ] - }, - { - "id": "MediaFeature", - "type": "object", - "properties": [ - { - "name": "name", - "type": "string" - }, - { - "name": "value", - "type": "string" - } - ] - } - ], - "commands": [ - { - "name": "clearDeviceMetricsOverride", - "description": "Clears the overridden device metrics." - }, - { - "name": "clearGeolocationOverride", - "description": "Clears the overridden Geolocation Position and Error." - }, - { - "name": "setCPUThrottlingRate", - "description": "Enables CPU throttling to emulate slow CPUs.", - "parameters": [ - { - "name": "rate", - "description": "Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc).", - "type": "number" - } - ] - }, - { - "name": "setDefaultBackgroundColorOverride", - "description": "Sets or clears an override of the default background color of the frame. This override is used\nif the content does not specify one.", - "parameters": [ - { - "name": "color", - "description": "RGBA of the default background color. If not specified, any existing override will be\ncleared.", - "optional": true, - "$ref": "DOM.RGBA" - } - ] - }, - { - "name": "setDeviceMetricsOverride", - "description": "Overrides the values of device screen dimensions (window.screen.width, window.screen.height,\nwindow.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media\nquery results).", - "parameters": [ - { - "name": "width", - "description": "Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.", - "type": "integer" - }, - { - "name": "height", - "description": "Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override.", - "type": "integer" - }, - { - "name": "deviceScaleFactor", - "description": "Overriding device scale factor value. 0 disables the override.", - "type": "number" - }, - { - "name": "mobile", - "description": "Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text\nautosizing and more.", - "type": "boolean" - }, - { - "name": "scale", - "description": "Scale to apply to resulting view image.", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "screenWidth", - "description": "Overriding screen width value in pixels (minimum 0, maximum 10000000).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "screenHeight", - "description": "Overriding screen height value in pixels (minimum 0, maximum 10000000).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "positionX", - "description": "Overriding view X position on screen in pixels (minimum 0, maximum 10000000).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "positionY", - "description": "Overriding view Y position on screen in pixels (minimum 0, maximum 10000000).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "dontSetVisibleSize", - "description": "Do not set visible view size, rely upon explicit setVisibleSize call.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "screenOrientation", - "description": "Screen orientation override.", - "optional": true, - "$ref": "ScreenOrientation" - }, - { - "name": "viewport", - "description": "If set, the visible area of the page will be overridden to this viewport. This viewport\nchange is not observed by the page, e.g. viewport-relative elements do not change positions.", - "experimental": true, - "optional": true, - "$ref": "Page.Viewport" - }, - { - "name": "displayFeature", - "description": "If set, the display feature of a multi-segment screen. If not set, multi-segment support\nis turned-off.\nDeprecated, use Emulation.setDisplayFeaturesOverride.", - "experimental": true, - "deprecated": true, - "optional": true, - "$ref": "DisplayFeature" - }, - { - "name": "devicePosture", - "description": "If set, the posture of a foldable device. If not set the posture is set\nto continuous.\nDeprecated, use Emulation.setDevicePostureOverride.", - "experimental": true, - "deprecated": true, - "optional": true, - "$ref": "DevicePosture" - } - ] - }, - { - "name": "setEmulatedMedia", - "description": "Emulates the given media type or media feature for CSS media queries.", - "parameters": [ - { - "name": "media", - "description": "Media type to emulate. Empty string disables the override.", - "optional": true, - "type": "string" - }, - { - "name": "features", - "description": "Media features to emulate.", - "optional": true, - "type": "array", - "items": { - "$ref": "MediaFeature" - } - } - ] - }, - { - "name": "setEmulatedVisionDeficiency", - "description": "Emulates the given vision deficiency.", - "parameters": [ - { - "name": "type", - "description": "Vision deficiency to emulate. Order: best-effort emulations come first, followed by any\nphysiologically accurate emulations for medically recognized color vision deficiencies.", - "type": "string", - "enum": [ - "none", - "blurredVision", - "reducedContrast", - "achromatopsia", - "deuteranopia", - "protanopia", - "tritanopia" - ] - } - ] - }, - { - "name": "setEmulatedOSTextScale", - "description": "Emulates the given OS text scale.", - "parameters": [ - { - "name": "scale", - "optional": true, - "type": "number" - } - ] - }, - { - "name": "setGeolocationOverride", - "description": "Overrides the Geolocation Position or Error. Omitting latitude, longitude or\naccuracy emulates position unavailable.", - "parameters": [ - { - "name": "latitude", - "description": "Mock latitude", - "optional": true, - "type": "number" - }, - { - "name": "longitude", - "description": "Mock longitude", - "optional": true, - "type": "number" - }, - { - "name": "accuracy", - "description": "Mock accuracy", - "optional": true, - "type": "number" - }, - { - "name": "altitude", - "description": "Mock altitude", - "optional": true, - "type": "number" - }, - { - "name": "altitudeAccuracy", - "description": "Mock altitudeAccuracy", - "optional": true, - "type": "number" - }, - { - "name": "heading", - "description": "Mock heading", - "optional": true, - "type": "number" - }, - { - "name": "speed", - "description": "Mock speed", - "optional": true, - "type": "number" - } - ] - }, - { - "name": "setIdleOverride", - "description": "Overrides the Idle state.", - "parameters": [ - { - "name": "isUserActive", - "description": "Mock isUserActive", - "type": "boolean" - }, - { - "name": "isScreenUnlocked", - "description": "Mock isScreenUnlocked", - "type": "boolean" - } - ] - }, - { - "name": "clearIdleOverride", - "description": "Clears Idle state overrides." - }, - { - "name": "setScriptExecutionDisabled", - "description": "Switches script execution in the page.", - "parameters": [ - { - "name": "value", - "description": "Whether script execution should be disabled in the page.", - "type": "boolean" - } - ] - }, - { - "name": "setTouchEmulationEnabled", - "description": "Enables touch on platforms which do not support them.", - "parameters": [ - { - "name": "enabled", - "description": "Whether the touch event emulation should be enabled.", - "type": "boolean" - }, - { - "name": "maxTouchPoints", - "description": "Maximum touch points supported. Defaults to one.", - "optional": true, - "type": "integer" - } - ] - }, - { - "name": "setTimezoneOverride", - "description": "Overrides default host system timezone with the specified one.", - "parameters": [ - { - "name": "timezoneId", - "description": "The timezone identifier. List of supported timezones:\nhttps://source.chromium.org/chromium/chromium/deps/icu.git/+/faee8bc70570192d82d2978a71e2a615788597d1:source/data/misc/metaZones.txt\nIf empty, disables the override and restores default host system timezone.", - "type": "string" - } - ] - }, - { - "name": "setUserAgentOverride", - "description": "Allows overriding user agent with the given string.\n`userAgentMetadata` must be set for Client Hint headers to be sent.", - "parameters": [ - { - "name": "userAgent", - "description": "User agent to use.", - "type": "string" - }, - { - "name": "acceptLanguage", - "description": "Browser language to emulate.", - "optional": true, - "type": "string" - }, - { - "name": "platform", - "description": "The platform navigator.platform should return.", - "optional": true, - "type": "string" - }, - { - "name": "userAgentMetadata", - "description": "To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData", - "experimental": true, - "optional": true, - "$ref": "UserAgentMetadata" - } - ] - } - ], - "events": [] - }, - { - "domain": "IO", - "description": "Input/Output operations for streams produced by DevTools.", - "types": [ - { - "id": "StreamHandle", - "description": "This is either obtained from another method or specified as `blob:` where\n`` is an UUID of a Blob.", - "type": "string" - } - ], - "commands": [ - { - "name": "close", - "description": "Close the stream, discard any temporary backing storage.", - "parameters": [ - { - "name": "handle", - "description": "Handle of the stream to close.", - "$ref": "StreamHandle" - } - ] - }, - { - "name": "read", - "description": "Read a chunk of the stream", - "parameters": [ - { - "name": "handle", - "description": "Handle of the stream to read.", - "$ref": "StreamHandle" - }, - { - "name": "offset", - "description": "Seek to the specified offset before reading (if not specified, proceed with offset\nfollowing the last read). Some types of streams may only support sequential reads.", - "optional": true, - "type": "integer" - }, - { - "name": "size", - "description": "Maximum number of bytes to read (left upon the agent discretion if not specified).", - "optional": true, - "type": "integer" - } - ], - "returns": [ - { - "name": "base64Encoded", - "description": "Set if the data is base64-encoded", - "optional": true, - "type": "boolean" - }, - { - "name": "data", - "description": "Data that were read.", - "type": "string" - }, - { - "name": "eof", - "description": "Set if the end-of-file condition occurred while reading.", - "type": "boolean" - } - ] - }, - { - "name": "resolveBlob", - "description": "Return UUID of Blob object specified by a remote object id.", - "parameters": [ - { - "name": "objectId", - "description": "Object id of a Blob object wrapper.", - "$ref": "Runtime.RemoteObjectId" - } - ], - "returns": [ - { - "name": "uuid", - "description": "UUID of the specified Blob.", - "type": "string" - } - ] - } - ] - }, - { - "domain": "Input", - "types": [ - { - "id": "TouchPoint", - "type": "object", - "properties": [ - { - "name": "x", - "description": "X coordinate of the event relative to the main frame's viewport in CSS pixels.", - "type": "number" - }, - { - "name": "y", - "description": "Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to\nthe top of the viewport and Y increases as it proceeds towards the bottom of the viewport.", - "type": "number" - }, - { - "name": "radiusX", - "description": "X radius of the touch area (default: 1.0).", - "optional": true, - "type": "number" - }, - { - "name": "radiusY", - "description": "Y radius of the touch area (default: 1.0).", - "optional": true, - "type": "number" - }, - { - "name": "rotationAngle", - "description": "Rotation angle (default: 0.0).", - "optional": true, - "type": "number" - }, - { - "name": "force", - "description": "Force (default: 1.0).", - "optional": true, - "type": "number" - }, - { - "name": "tangentialPressure", - "description": "The normalized tangential pressure, which has a range of [-1,1] (default: 0).", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "tiltX", - "description": "The plane angle between the Y-Z plane and the plane containing both the stylus axis and the Y axis, in degrees of the range [-90,90], a positive tiltX is to the right (default: 0)", - "optional": true, - "type": "number" - }, - { - "name": "tiltY", - "description": "The plane angle between the X-Z plane and the plane containing both the stylus axis and the X axis, in degrees of the range [-90,90], a positive tiltY is towards the user (default: 0).", - "optional": true, - "type": "number" - }, - { - "name": "twist", - "description": "The clockwise rotation of a pen stylus around its own major axis, in degrees in the range [0,359] (default: 0).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "id", - "description": "Identifier used to track touch sources between events, must be unique within an event.", - "optional": true, - "type": "number" - } - ] - }, - { - "id": "MouseButton", - "type": "string", - "enum": [ - "none", - "left", - "middle", - "right", - "back", - "forward" - ] - }, - { - "id": "TimeSinceEpoch", - "description": "UTC time in seconds, counted from January 1, 1970.", - "type": "number" - } - ], - "commands": [ - { - "name": "dispatchKeyEvent", - "description": "Dispatches a key event to the page.", - "parameters": [ - { - "name": "type", - "description": "Type of the key event.", - "type": "string", - "enum": [ - "keyDown", - "keyUp", - "rawKeyDown", - "char" - ] - }, - { - "name": "modifiers", - "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8\n(default: 0).", - "optional": true, - "type": "integer" - }, - { - "name": "timestamp", - "description": "Time at which the event occurred.", - "optional": true, - "$ref": "TimeSinceEpoch" - }, - { - "name": "text", - "description": "Text as generated by processing a virtual key code with a keyboard layout. Not needed for\nfor `keyUp` and `rawKeyDown` events (default: \"\")", - "optional": true, - "type": "string" - }, - { - "name": "unmodifiedText", - "description": "Text that would have been generated by the keyboard if no modifiers were pressed (except for\nshift). Useful for shortcut (accelerator) key handling (default: \"\").", - "optional": true, - "type": "string" - }, - { - "name": "keyIdentifier", - "description": "Unique key identifier (e.g., 'U+0041') (default: \"\").", - "optional": true, - "type": "string" - }, - { - "name": "code", - "description": "Unique DOM defined string value for each physical key (e.g., 'KeyA') (default: \"\").", - "optional": true, - "type": "string" - }, - { - "name": "key", - "description": "Unique DOM defined string value describing the meaning of the key in the context of active\nmodifiers, keyboard layout, etc (e.g., 'AltGr') (default: \"\").", - "optional": true, - "type": "string" - }, - { - "name": "windowsVirtualKeyCode", - "description": "Windows virtual key code (default: 0).", - "optional": true, - "type": "integer" - }, - { - "name": "nativeVirtualKeyCode", - "description": "Native virtual key code (default: 0).", - "optional": true, - "type": "integer" - }, - { - "name": "autoRepeat", - "description": "Whether the event was generated from auto repeat (default: false).", - "optional": true, - "type": "boolean" - }, - { - "name": "isKeypad", - "description": "Whether the event was generated from the keypad (default: false).", - "optional": true, - "type": "boolean" - }, - { - "name": "isSystemKey", - "description": "Whether the event was a system key event (default: false).", - "optional": true, - "type": "boolean" - }, - { - "name": "location", - "description": "Whether the event was from the left or right side of the keyboard. 1=Left, 2=Right (default:\n0).", - "optional": true, - "type": "integer" - }, - { - "name": "commands", - "description": "Editing commands to send with the key event (e.g., 'selectAll') (default: []).\nThese are related to but not equal the command names used in `document.execCommand` and NSStandardKeyBindingResponding.\nSee https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/editing/commands/editor_command_names.h for valid command names.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - { - "name": "dispatchMouseEvent", - "description": "Dispatches a mouse event to the page.", - "parameters": [ - { - "name": "type", - "description": "Type of the mouse event.", - "type": "string", - "enum": [ - "mousePressed", - "mouseReleased", - "mouseMoved", - "mouseWheel" - ] - }, - { - "name": "x", - "description": "X coordinate of the event relative to the main frame's viewport in CSS pixels.", - "type": "number" - }, - { - "name": "y", - "description": "Y coordinate of the event relative to the main frame's viewport in CSS pixels. 0 refers to\nthe top of the viewport and Y increases as it proceeds towards the bottom of the viewport.", - "type": "number" - }, - { - "name": "modifiers", - "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8\n(default: 0).", - "optional": true, - "type": "integer" - }, - { - "name": "timestamp", - "description": "Time at which the event occurred.", - "optional": true, - "$ref": "TimeSinceEpoch" - }, - { - "name": "button", - "description": "Mouse button (default: \"none\").", - "optional": true, - "$ref": "MouseButton" - }, - { - "name": "buttons", - "description": "A number indicating which buttons are pressed on the mouse when a mouse event is triggered.\nLeft=1, Right=2, Middle=4, Back=8, Forward=16, None=0.", - "optional": true, - "type": "integer" - }, - { - "name": "clickCount", - "description": "Number of times the mouse button was clicked (default: 0).", - "optional": true, - "type": "integer" - }, - { - "name": "force", - "description": "The normalized pressure, which has a range of [0,1] (default: 0).", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "tangentialPressure", - "description": "The normalized tangential pressure, which has a range of [-1,1] (default: 0).", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "tiltX", - "description": "The plane angle between the Y-Z plane and the plane containing both the stylus axis and the Y axis, in degrees of the range [-90,90], a positive tiltX is to the right (default: 0).", - "optional": true, - "type": "number" - }, - { - "name": "tiltY", - "description": "The plane angle between the X-Z plane and the plane containing both the stylus axis and the X axis, in degrees of the range [-90,90], a positive tiltY is towards the user (default: 0).", - "optional": true, - "type": "number" - }, - { - "name": "twist", - "description": "The clockwise rotation of a pen stylus around its own major axis, in degrees in the range [0,359] (default: 0).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "deltaX", - "description": "X delta in CSS pixels for mouse wheel event (default: 0).", - "optional": true, - "type": "number" - }, - { - "name": "deltaY", - "description": "Y delta in CSS pixels for mouse wheel event (default: 0).", - "optional": true, - "type": "number" - }, - { - "name": "pointerType", - "description": "Pointer type (default: \"mouse\").", - "optional": true, - "type": "string", - "enum": [ - "mouse", - "pen" - ] - } - ] - }, - { - "name": "dispatchTouchEvent", - "description": "Dispatches a touch event to the page.", - "parameters": [ - { - "name": "type", - "description": "Type of the touch event. TouchEnd and TouchCancel must not contain any touch points, while\nTouchStart and TouchMove must contains at least one.", - "type": "string", - "enum": [ - "touchStart", - "touchEnd", - "touchMove", - "touchCancel" - ] - }, - { - "name": "touchPoints", - "description": "Active touch points on the touch device. One event per any changed point (compared to\nprevious touch event in a sequence) is generated, emulating pressing/moving/releasing points\none by one.", - "type": "array", - "items": { - "$ref": "TouchPoint" - } - }, - { - "name": "modifiers", - "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8\n(default: 0).", - "optional": true, - "type": "integer" - }, - { - "name": "timestamp", - "description": "Time at which the event occurred.", - "optional": true, - "$ref": "TimeSinceEpoch" - } - ] - }, - { - "name": "cancelDragging", - "description": "Cancels any active dragging in the page." - }, - { - "name": "setIgnoreInputEvents", - "description": "Ignores input events (useful while auditing page).", - "parameters": [ - { - "name": "ignore", - "description": "Ignores input events processing when set to true.", - "type": "boolean" - } - ] - } - ], - "events": [] - }, - { - "domain": "Log", - "description": "Provides access to log entries.", - "dependencies": [ - "Runtime", - "Network" - ], - "types": [ - { - "id": "LogEntry", - "description": "Log entry.", - "type": "object", - "properties": [ - { - "name": "source", - "description": "Log entry source.", - "type": "string", - "enum": [ - "xml", - "javascript", - "network", - "storage", - "appcache", - "rendering", - "security", - "deprecation", - "worker", - "violation", - "intervention", - "recommendation", - "other" - ] - }, - { - "name": "level", - "description": "Log entry severity.", - "type": "string", - "enum": [ - "verbose", - "info", - "warning", - "error" - ] - }, - { - "name": "text", - "description": "Logged text.", - "type": "string" - }, - { - "name": "category", - "optional": true, - "type": "string", - "enum": [ - "cors" - ] - }, - { - "name": "timestamp", - "description": "Timestamp when this entry was added.", - "$ref": "Runtime.Timestamp" - }, - { - "name": "url", - "description": "URL of the resource if known.", - "optional": true, - "type": "string" - }, - { - "name": "lineNumber", - "description": "Line number in the resource.", - "optional": true, - "type": "integer" - }, - { - "name": "stackTrace", - "description": "JavaScript stack trace.", - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "networkRequestId", - "description": "Identifier of the network request associated with this entry.", - "optional": true, - "$ref": "Network.RequestId" - }, - { - "name": "workerId", - "description": "Identifier of the worker associated with this entry.", - "optional": true, - "type": "string" - }, - { - "name": "args", - "description": "Call arguments.", - "optional": true, - "type": "array", - "items": { - "$ref": "Runtime.RemoteObject" - } - } - ] - }, - { - "id": "ViolationSetting", - "description": "Violation configuration setting.", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Violation type.", - "type": "string", - "enum": [ - "longTask", - "longLayout", - "blockedEvent", - "blockedParser", - "discouragedAPIUse", - "handler", - "recurringHandler" - ] - }, - { - "name": "threshold", - "description": "Time threshold to trigger upon.", - "type": "number" - } - ] - } - ], - "commands": [ - { - "name": "clear", - "description": "Clears the log." - }, - { - "name": "disable", - "description": "Disables log domain, prevents further log entries from being reported to the client." - }, - { - "name": "enable", - "description": "Enables log domain, sends the entries collected so far to the client by means of the\n`entryAdded` notification." - }, - { - "name": "startViolationsReport", - "description": "start violation reporting.", - "parameters": [ - { - "name": "config", - "description": "Configuration for violations.", - "type": "array", - "items": { - "$ref": "ViolationSetting" - } - } - ] - }, - { - "name": "stopViolationsReport", - "description": "Stop violation reporting." - } - ], - "events": [ - { - "name": "entryAdded", - "description": "Issued when new message was logged.", - "parameters": [ - { - "name": "entry", - "description": "The entry.", - "$ref": "LogEntry" - } - ] - } - ] - }, - { - "domain": "Network", - "description": "Network domain allows tracking network activities of the page. It exposes information about http,\nfile, data and other requests and responses, their headers, bodies, timing, etc.", - "dependencies": [ - "Debugger", - "Runtime", - "Security" - ], - "types": [ - { - "id": "ResourceType", - "description": "Resource type as it was perceived by the rendering engine.", - "type": "string", - "enum": [ - "Document", - "Stylesheet", - "Image", - "Media", - "Font", - "Script", - "TextTrack", - "XHR", - "Fetch", - "Prefetch", - "EventSource", - "WebSocket", - "Manifest", - "SignedExchange", - "Ping", - "CSPViolationReport", - "Preflight", - "FedCM", - "Other" - ] - }, - { - "id": "LoaderId", - "description": "Unique loader identifier.", - "type": "string" - }, - { - "id": "RequestId", - "description": "Unique network request identifier.\nNote that this does not identify individual HTTP requests that are part of\na network request.", - "type": "string" - }, - { - "id": "InterceptionId", - "description": "Unique intercepted request identifier.", - "type": "string" - }, - { - "id": "ErrorReason", - "description": "Network level fetch failure reason.", - "type": "string", - "enum": [ - "Failed", - "Aborted", - "TimedOut", - "AccessDenied", - "ConnectionClosed", - "ConnectionReset", - "ConnectionRefused", - "ConnectionAborted", - "ConnectionFailed", - "NameNotResolved", - "InternetDisconnected", - "AddressUnreachable", - "BlockedByClient", - "BlockedByResponse" - ] - }, - { - "id": "TimeSinceEpoch", - "description": "UTC time in seconds, counted from January 1, 1970.", - "type": "number" - }, - { - "id": "MonotonicTime", - "description": "Monotonically increasing time in seconds since an arbitrary point in the past.", - "type": "number" - }, - { - "id": "Headers", - "description": "Request / response headers as keys / values of JSON object.", - "type": "object" - }, - { - "id": "ConnectionType", - "description": "The underlying connection technology that the browser is supposedly using.", - "type": "string", - "enum": [ - "none", - "cellular2g", - "cellular3g", - "cellular4g", - "bluetooth", - "ethernet", - "wifi", - "wimax", - "other" - ] - }, - { - "id": "CookieSameSite", - "description": "Represents the cookie's 'SameSite' status:\nhttps://tools.ietf.org/html/draft-west-first-party-cookies", - "type": "string", - "enum": [ - "Strict", - "Lax", - "None" - ] - }, - { - "id": "ResourceTiming", - "description": "Timing information for the request.", - "type": "object", - "properties": [ - { - "name": "requestTime", - "description": "Timing's requestTime is a baseline in seconds, while the other numbers are ticks in\nmilliseconds relatively to this requestTime.", - "type": "number" - }, - { - "name": "proxyStart", - "description": "Started resolving proxy.", - "type": "number" - }, - { - "name": "proxyEnd", - "description": "Finished resolving proxy.", - "type": "number" - }, - { - "name": "dnsStart", - "description": "Started DNS address resolve.", - "type": "number" - }, - { - "name": "dnsEnd", - "description": "Finished DNS address resolve.", - "type": "number" - }, - { - "name": "connectStart", - "description": "Started connecting to the remote host.", - "type": "number" - }, - { - "name": "connectEnd", - "description": "Connected to the remote host.", - "type": "number" - }, - { - "name": "sslStart", - "description": "Started SSL handshake.", - "type": "number" - }, - { - "name": "sslEnd", - "description": "Finished SSL handshake.", - "type": "number" - }, - { - "name": "workerStart", - "description": "Started running ServiceWorker.", - "experimental": true, - "type": "number" - }, - { - "name": "workerReady", - "description": "Finished Starting ServiceWorker.", - "experimental": true, - "type": "number" - }, - { - "name": "workerFetchStart", - "description": "Started fetch event.", - "experimental": true, - "type": "number" - }, - { - "name": "workerRespondWithSettled", - "description": "Settled fetch event respondWith promise.", - "experimental": true, - "type": "number" - }, - { - "name": "workerRouterEvaluationStart", - "description": "Started ServiceWorker static routing source evaluation.", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "workerCacheLookupStart", - "description": "Started cache lookup when the source was evaluated to `cache`.", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "sendStart", - "description": "Started sending request.", - "type": "number" - }, - { - "name": "sendEnd", - "description": "Finished sending request.", - "type": "number" - }, - { - "name": "pushStart", - "description": "Time the server started pushing request.", - "experimental": true, - "type": "number" - }, - { - "name": "pushEnd", - "description": "Time the server finished pushing request.", - "experimental": true, - "type": "number" - }, - { - "name": "receiveHeadersStart", - "description": "Started receiving response headers.", - "experimental": true, - "type": "number" - }, - { - "name": "receiveHeadersEnd", - "description": "Finished receiving response headers.", - "type": "number" - } - ] - }, - { - "id": "ResourcePriority", - "description": "Loading priority of a resource request.", - "type": "string", - "enum": [ - "VeryLow", - "Low", - "Medium", - "High", - "VeryHigh" - ] - }, - { - "id": "PostDataEntry", - "description": "Post data entry for HTTP request", - "type": "object", - "properties": [ - { - "name": "bytes", - "optional": true, - "type": "string" - } - ] - }, - { - "id": "Request", - "description": "HTTP request data.", - "type": "object", - "properties": [ - { - "name": "url", - "description": "Request URL (without fragment).", - "type": "string" - }, - { - "name": "urlFragment", - "description": "Fragment of the requested URL starting with hash, if present.", - "optional": true, - "type": "string" - }, - { - "name": "method", - "description": "HTTP request method.", - "type": "string" - }, - { - "name": "headers", - "description": "HTTP request headers.", - "$ref": "Headers" - }, - { - "name": "postData", - "description": "HTTP POST request data.\nUse postDataEntries instead.", - "deprecated": true, - "optional": true, - "type": "string" - }, - { - "name": "hasPostData", - "description": "True when the request has POST data. Note that postData might still be omitted when this flag is true when the data is too long.", - "optional": true, - "type": "boolean" - }, - { - "name": "postDataEntries", - "description": "Request body elements (post data broken into individual entries).", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "$ref": "PostDataEntry" - } - }, - { - "name": "mixedContentType", - "description": "The mixed content type of the request.", - "optional": true, - "$ref": "Security.MixedContentType" - }, - { - "name": "initialPriority", - "description": "Priority of the resource request at the time request is sent.", - "$ref": "ResourcePriority" - }, - { - "name": "referrerPolicy", - "description": "The referrer policy of the request, as defined in https://www.w3.org/TR/referrer-policy/", - "type": "string", - "enum": [ - "unsafe-url", - "no-referrer-when-downgrade", - "no-referrer", - "origin", - "origin-when-cross-origin", - "same-origin", - "strict-origin", - "strict-origin-when-cross-origin" - ] - }, - { - "name": "isLinkPreload", - "description": "Whether is loaded via link preload.", - "optional": true, - "type": "boolean" - }, - { - "name": "trustTokenParams", - "description": "Set for requests when the TrustToken API is used. Contains the parameters\npassed by the developer (e.g. via \"fetch\") as understood by the backend.", - "experimental": true, - "optional": true, - "$ref": "TrustTokenParams" - }, - { - "name": "isSameSite", - "description": "True if this resource request is considered to be the 'same site' as the\nrequest corresponding to the main frame.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "id": "SignedCertificateTimestamp", - "description": "Details of a signed certificate timestamp (SCT).", - "type": "object", - "properties": [ - { - "name": "status", - "description": "Validation status.", - "type": "string" - }, - { - "name": "origin", - "description": "Origin.", - "type": "string" - }, - { - "name": "logDescription", - "description": "Log name / description.", - "type": "string" - }, - { - "name": "logId", - "description": "Log ID.", - "type": "string" - }, - { - "name": "timestamp", - "description": "Issuance date. Unlike TimeSinceEpoch, this contains the number of\nmilliseconds since January 1, 1970, UTC, not the number of seconds.", - "type": "number" - }, - { - "name": "hashAlgorithm", - "description": "Hash algorithm.", - "type": "string" - }, - { - "name": "signatureAlgorithm", - "description": "Signature algorithm.", - "type": "string" - }, - { - "name": "signatureData", - "description": "Signature data.", - "type": "string" - } - ] - }, - { - "id": "SecurityDetails", - "description": "Security details about a request.", - "type": "object", - "properties": [ - { - "name": "protocol", - "description": "Protocol name (e.g. \"TLS 1.2\" or \"QUIC\").", - "type": "string" - }, - { - "name": "keyExchange", - "description": "Key Exchange used by the connection, or the empty string if not applicable.", - "type": "string" - }, - { - "name": "keyExchangeGroup", - "description": "(EC)DH group used by the connection, if applicable.", - "optional": true, - "type": "string" - }, - { - "name": "cipher", - "description": "Cipher name.", - "type": "string" - }, - { - "name": "mac", - "description": "TLS MAC. Note that AEAD ciphers do not have separate MACs.", - "optional": true, - "type": "string" - }, - { - "name": "certificateId", - "description": "Certificate ID value.", - "$ref": "Security.CertificateId" - }, - { - "name": "subjectName", - "description": "Certificate subject name.", - "type": "string" - }, - { - "name": "sanList", - "description": "Subject Alternative Name (SAN) DNS names and IP addresses.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "issuer", - "description": "Name of the issuing CA.", - "type": "string" - }, - { - "name": "validFrom", - "description": "Certificate valid from date.", - "$ref": "TimeSinceEpoch" - }, - { - "name": "validTo", - "description": "Certificate valid to (expiration) date", - "$ref": "TimeSinceEpoch" - }, - { - "name": "signedCertificateTimestampList", - "description": "List of signed certificate timestamps (SCTs).", - "type": "array", - "items": { - "$ref": "SignedCertificateTimestamp" - } - }, - { - "name": "certificateTransparencyCompliance", - "description": "Whether the request complied with Certificate Transparency policy", - "$ref": "CertificateTransparencyCompliance" - }, - { - "name": "serverSignatureAlgorithm", - "description": "The signature algorithm used by the server in the TLS server signature,\nrepresented as a TLS SignatureScheme code point. Omitted if not\napplicable or not known.", - "optional": true, - "type": "integer" - }, - { - "name": "encryptedClientHello", - "description": "Whether the connection used Encrypted ClientHello", - "type": "boolean" - } - ] - }, - { - "id": "CertificateTransparencyCompliance", - "description": "Whether the request complied with Certificate Transparency policy.", - "type": "string", - "enum": [ - "unknown", - "not-compliant", - "compliant" - ] - }, - { - "id": "BlockedReason", - "description": "The reason why request was blocked.", - "type": "string", - "enum": [ - "other", - "csp", - "mixed-content", - "origin", - "inspector", - "integrity", - "subresource-filter", - "content-type", - "coep-frame-resource-needs-coep-header", - "coop-sandboxed-iframe-cannot-navigate-to-coop-page", - "corp-not-same-origin", - "corp-not-same-origin-after-defaulted-to-same-origin-by-coep", - "corp-not-same-origin-after-defaulted-to-same-origin-by-dip", - "corp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dip", - "corp-not-same-site", - "sri-message-signature-mismatch" - ] - }, - { - "id": "CorsError", - "description": "The reason why request was blocked.", - "type": "string", - "enum": [ - "DisallowedByMode", - "InvalidResponse", - "WildcardOriginNotAllowed", - "MissingAllowOriginHeader", - "MultipleAllowOriginValues", - "InvalidAllowOriginValue", - "AllowOriginMismatch", - "InvalidAllowCredentials", - "CorsDisabledScheme", - "PreflightInvalidStatus", - "PreflightDisallowedRedirect", - "PreflightWildcardOriginNotAllowed", - "PreflightMissingAllowOriginHeader", - "PreflightMultipleAllowOriginValues", - "PreflightInvalidAllowOriginValue", - "PreflightAllowOriginMismatch", - "PreflightInvalidAllowCredentials", - "PreflightMissingAllowExternal", - "PreflightInvalidAllowExternal", - "PreflightMissingAllowPrivateNetwork", - "PreflightInvalidAllowPrivateNetwork", - "InvalidAllowMethodsPreflightResponse", - "InvalidAllowHeadersPreflightResponse", - "MethodDisallowedByPreflightResponse", - "HeaderDisallowedByPreflightResponse", - "RedirectContainsCredentials", - "InsecurePrivateNetwork", - "InvalidPrivateNetworkAccess", - "UnexpectedPrivateNetworkAccess", - "NoCorsRedirectModeNotFollow", - "PreflightMissingPrivateNetworkAccessId", - "PreflightMissingPrivateNetworkAccessName", - "PrivateNetworkAccessPermissionUnavailable", - "PrivateNetworkAccessPermissionDenied", - "LocalNetworkAccessPermissionDenied" - ] - }, - { - "id": "CorsErrorStatus", - "type": "object", - "properties": [ - { - "name": "corsError", - "$ref": "CorsError" - }, - { - "name": "failedParameter", - "type": "string" - } - ] - }, - { - "id": "ServiceWorkerResponseSource", - "description": "Source of serviceworker response.", - "type": "string", - "enum": [ - "cache-storage", - "http-cache", - "fallback-code", - "network" - ] - }, - { - "id": "ServiceWorkerRouterSource", - "description": "Source of service worker router.", - "type": "string", - "enum": [ - "network", - "cache", - "fetch-event", - "race-network-and-fetch-handler", - "race-network-and-cache" - ] - }, - { - "id": "Response", - "description": "HTTP response data.", - "type": "object", - "properties": [ - { - "name": "url", - "description": "Response URL. This URL can be different from CachedResource.url in case of redirect.", - "type": "string" - }, - { - "name": "status", - "description": "HTTP response status code.", - "type": "integer" - }, - { - "name": "statusText", - "description": "HTTP response status text.", - "type": "string" - }, - { - "name": "headers", - "description": "HTTP response headers.", - "$ref": "Headers" - }, - { - "name": "headersText", - "description": "HTTP response headers text. This has been replaced by the headers in Network.responseReceivedExtraInfo.", - "deprecated": true, - "optional": true, - "type": "string" - }, - { - "name": "mimeType", - "description": "Resource mimeType as determined by the browser.", - "type": "string" - }, - { - "name": "charset", - "description": "Resource charset as determined by the browser (if applicable).", - "type": "string" - }, - { - "name": "requestHeaders", - "description": "Refined HTTP request headers that were actually transmitted over the network.", - "optional": true, - "$ref": "Headers" - }, - { - "name": "requestHeadersText", - "description": "HTTP request headers text. This has been replaced by the headers in Network.requestWillBeSentExtraInfo.", - "deprecated": true, - "optional": true, - "type": "string" - }, - { - "name": "connectionReused", - "description": "Specifies whether physical connection was actually reused for this request.", - "type": "boolean" - }, - { - "name": "connectionId", - "description": "Physical connection id that was actually used for this request.", - "type": "number" - }, - { - "name": "remoteIPAddress", - "description": "Remote IP address.", - "optional": true, - "type": "string" - }, - { - "name": "remotePort", - "description": "Remote port.", - "optional": true, - "type": "integer" - }, - { - "name": "fromDiskCache", - "description": "Specifies that the request was served from the disk cache.", - "optional": true, - "type": "boolean" - }, - { - "name": "fromServiceWorker", - "description": "Specifies that the request was served from the ServiceWorker.", - "optional": true, - "type": "boolean" - }, - { - "name": "fromPrefetchCache", - "description": "Specifies that the request was served from the prefetch cache.", - "optional": true, - "type": "boolean" - }, - { - "name": "fromEarlyHints", - "description": "Specifies that the request was served from the prefetch cache.", - "optional": true, - "type": "boolean" - }, - { - "name": "serviceWorkerRouterInfo", - "description": "Information about how ServiceWorker Static Router API was used. If this\nfield is set with `matchedSourceType` field, a matching rule is found.\nIf this field is set without `matchedSource`, no matching rule is found.\nOtherwise, the API is not used.", - "experimental": true, - "optional": true, - "$ref": "ServiceWorkerRouterInfo" - }, - { - "name": "encodedDataLength", - "description": "Total number of bytes received for this request so far.", - "type": "number" - }, - { - "name": "timing", - "description": "Timing information for the given request.", - "optional": true, - "$ref": "ResourceTiming" - }, - { - "name": "serviceWorkerResponseSource", - "description": "Response source of response from ServiceWorker.", - "optional": true, - "$ref": "ServiceWorkerResponseSource" - }, - { - "name": "responseTime", - "description": "The time at which the returned response was generated.", - "optional": true, - "$ref": "TimeSinceEpoch" - }, - { - "name": "cacheStorageCacheName", - "description": "Cache Storage Cache Name.", - "optional": true, - "type": "string" - }, - { - "name": "protocol", - "description": "Protocol used to fetch this request.", - "optional": true, - "type": "string" - }, - { - "name": "alternateProtocolUsage", - "description": "The reason why Chrome uses a specific transport protocol for HTTP semantics.", - "experimental": true, - "optional": true, - "$ref": "AlternateProtocolUsage" - }, - { - "name": "securityState", - "description": "Security state of the request resource.", - "$ref": "Security.SecurityState" - }, - { - "name": "securityDetails", - "description": "Security details for the request.", - "optional": true, - "$ref": "SecurityDetails" - }, - { - "name": "isIpProtectionUsed", - "description": "Indicates whether the request was sent through IP Protection proxies. If\nset to true, the request used the IP Protection privacy feature.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "id": "WebSocketRequest", - "description": "WebSocket request data.", - "type": "object", - "properties": [ - { - "name": "headers", - "description": "HTTP request headers.", - "$ref": "Headers" - } - ] - }, - { - "id": "WebSocketResponse", - "description": "WebSocket response data.", - "type": "object", - "properties": [ - { - "name": "status", - "description": "HTTP response status code.", - "type": "integer" - }, - { - "name": "statusText", - "description": "HTTP response status text.", - "type": "string" - }, - { - "name": "headers", - "description": "HTTP response headers.", - "$ref": "Headers" - }, - { - "name": "headersText", - "description": "HTTP response headers text.", - "optional": true, - "type": "string" - }, - { - "name": "requestHeaders", - "description": "HTTP request headers.", - "optional": true, - "$ref": "Headers" - }, - { - "name": "requestHeadersText", - "description": "HTTP request headers text.", - "optional": true, - "type": "string" - } - ] - }, - { - "id": "WebSocketFrame", - "description": "WebSocket message data. This represents an entire WebSocket message, not just a fragmented frame as the name suggests.", - "type": "object", - "properties": [ - { - "name": "opcode", - "description": "WebSocket message opcode.", - "type": "number" - }, - { - "name": "mask", - "description": "WebSocket message mask.", - "type": "boolean" - }, - { - "name": "payloadData", - "description": "WebSocket message payload data.\nIf the opcode is 1, this is a text message and payloadData is a UTF-8 string.\nIf the opcode isn't 1, then payloadData is a base64 encoded string representing binary data.", - "type": "string" - } - ] - }, - { - "id": "CachedResource", - "description": "Information about the cached resource.", - "type": "object", - "properties": [ - { - "name": "url", - "description": "Resource URL. This is the url of the original network request.", - "type": "string" - }, - { - "name": "type", - "description": "Type of this resource.", - "$ref": "ResourceType" - }, - { - "name": "response", - "description": "Cached response data.", - "optional": true, - "$ref": "Response" - }, - { - "name": "bodySize", - "description": "Cached response body size.", - "type": "number" - } - ] - }, - { - "id": "Initiator", - "description": "Information about the request initiator.", - "type": "object", - "properties": [ - { - "name": "type", - "description": "Type of this initiator.", - "type": "string", - "enum": [ - "parser", - "script", - "preload", - "SignedExchange", - "preflight", - "other" - ] - }, - { - "name": "stack", - "description": "Initiator JavaScript stack trace, set for Script only.\nRequires the Debugger domain to be enabled.", - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "url", - "description": "Initiator URL, set for Parser type or for Script type (when script is importing module) or for SignedExchange type.", - "optional": true, - "type": "string" - }, - { - "name": "lineNumber", - "description": "Initiator line number, set for Parser type or for Script type (when script is importing\nmodule) (0-based).", - "optional": true, - "type": "number" - }, - { - "name": "columnNumber", - "description": "Initiator column number, set for Parser type or for Script type (when script is importing\nmodule) (0-based).", - "optional": true, - "type": "number" - }, - { - "name": "requestId", - "description": "Set if another request triggered this request (e.g. preflight).", - "optional": true, - "$ref": "RequestId" - } - ] - }, - { - "id": "Cookie", - "description": "Cookie object", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Cookie name.", - "type": "string" - }, - { - "name": "value", - "description": "Cookie value.", - "type": "string" - }, - { - "name": "domain", - "description": "Cookie domain.", - "type": "string" - }, - { - "name": "path", - "description": "Cookie path.", - "type": "string" - }, - { - "name": "expires", - "description": "Cookie expiration date as the number of seconds since the UNIX epoch.", - "type": "number" - }, - { - "name": "size", - "description": "Cookie size.", - "type": "integer" - }, - { - "name": "httpOnly", - "description": "True if cookie is http-only.", - "type": "boolean" - }, - { - "name": "secure", - "description": "True if cookie is secure.", - "type": "boolean" - }, - { - "name": "session", - "description": "True in case of session cookie.", - "type": "boolean" - }, - { - "name": "sameSite", - "description": "Cookie SameSite type.", - "optional": true, - "$ref": "CookieSameSite" - }, - { - "name": "priority", - "description": "Cookie Priority", - "experimental": true, - "$ref": "CookiePriority" - }, - { - "name": "sameParty", - "description": "True if cookie is SameParty.", - "experimental": true, - "deprecated": true, - "type": "boolean" - }, - { - "name": "sourceScheme", - "description": "Cookie source scheme type.", - "experimental": true, - "$ref": "CookieSourceScheme" - }, - { - "name": "sourcePort", - "description": "Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.\nAn unspecified port value allows protocol clients to emulate legacy cookie scope for the port.\nThis is a temporary ability and it will be removed in the future.", - "experimental": true, - "type": "integer" - }, - { - "name": "partitionKey", - "description": "Cookie partition key.", - "experimental": true, - "optional": true, - "$ref": "CookiePartitionKey" - }, - { - "name": "partitionKeyOpaque", - "description": "True if cookie partition key is opaque.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "id": "CookieParam", - "description": "Cookie parameter object", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Cookie name.", - "type": "string" - }, - { - "name": "value", - "description": "Cookie value.", - "type": "string" - }, - { - "name": "url", - "description": "The request-URI to associate with the setting of the cookie. This value can affect the\ndefault domain, path, source port, and source scheme values of the created cookie.", - "optional": true, - "type": "string" - }, - { - "name": "domain", - "description": "Cookie domain.", - "optional": true, - "type": "string" - }, - { - "name": "path", - "description": "Cookie path.", - "optional": true, - "type": "string" - }, - { - "name": "secure", - "description": "True if cookie is secure.", - "optional": true, - "type": "boolean" - }, - { - "name": "httpOnly", - "description": "True if cookie is http-only.", - "optional": true, - "type": "boolean" - }, - { - "name": "sameSite", - "description": "Cookie SameSite type.", - "optional": true, - "$ref": "CookieSameSite" - }, - { - "name": "expires", - "description": "Cookie expiration date, session cookie if not set", - "optional": true, - "$ref": "TimeSinceEpoch" - }, - { - "name": "priority", - "description": "Cookie Priority.", - "experimental": true, - "optional": true, - "$ref": "CookiePriority" - }, - { - "name": "sameParty", - "description": "True if cookie is SameParty.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "sourceScheme", - "description": "Cookie source scheme type.", - "experimental": true, - "optional": true, - "$ref": "CookieSourceScheme" - }, - { - "name": "sourcePort", - "description": "Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.\nAn unspecified port value allows protocol clients to emulate legacy cookie scope for the port.\nThis is a temporary ability and it will be removed in the future.", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "partitionKey", - "description": "Cookie partition key. If not set, the cookie will be set as not partitioned.", - "experimental": true, - "optional": true, - "$ref": "CookiePartitionKey" - } - ] - } - ], - "commands": [ - { - "name": "clearBrowserCache", - "description": "Clears browser cache." - }, - { - "name": "clearBrowserCookies", - "description": "Clears browser cookies." - }, - { - "name": "deleteCookies", - "description": "Deletes browser cookies with matching name and url or domain/path/partitionKey pair.", - "parameters": [ - { - "name": "name", - "description": "Name of the cookies to remove.", - "type": "string" - }, - { - "name": "url", - "description": "If specified, deletes all the cookies with the given name where domain and path match\nprovided URL.", - "optional": true, - "type": "string" - }, - { - "name": "domain", - "description": "If specified, deletes only cookies with the exact domain.", - "optional": true, - "type": "string" - }, - { - "name": "path", - "description": "If specified, deletes only cookies with the exact path.", - "optional": true, - "type": "string" - }, - { - "name": "partitionKey", - "description": "If specified, deletes only cookies with the the given name and partitionKey where\nall partition key attributes match the cookie partition key attribute.", - "experimental": true, - "optional": true, - "$ref": "CookiePartitionKey" - } - ] - }, - { - "name": "disable", - "description": "Disables network tracking, prevents network events from being sent to the client." - }, - { - "name": "emulateNetworkConditions", - "description": "Activates emulation of network conditions.", - "parameters": [ - { - "name": "offline", - "description": "True to emulate internet disconnection.", - "type": "boolean" - }, - { - "name": "latency", - "description": "Minimum latency from request sent to response headers received (ms).", - "type": "number" - }, - { - "name": "downloadThroughput", - "description": "Maximal aggregated download throughput (bytes/sec). -1 disables download throttling.", - "type": "number" - }, - { - "name": "uploadThroughput", - "description": "Maximal aggregated upload throughput (bytes/sec). -1 disables upload throttling.", - "type": "number" - }, - { - "name": "connectionType", - "description": "Connection type if known.", - "optional": true, - "$ref": "ConnectionType" - }, - { - "name": "packetLoss", - "description": "WebRTC packet loss (percent, 0-100). 0 disables packet loss emulation, 100 drops all the packets.", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "packetQueueLength", - "description": "WebRTC packet queue length (packet). 0 removes any queue length limitations.", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "packetReordering", - "description": "WebRTC packetReordering feature.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "enable", - "description": "Enables network tracking, network events will now be delivered to the client.", - "parameters": [ - { - "name": "maxTotalBufferSize", - "description": "Buffer size in bytes to use when preserving network payloads (XHRs, etc).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "maxResourceBufferSize", - "description": "Per-resource buffer size in bytes to use when preserving network payloads (XHRs, etc).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "maxPostDataSize", - "description": "Longest post body size (in bytes) that would be included in requestWillBeSent notification", - "optional": true, - "type": "integer" - }, - { - "name": "reportDirectSocketTraffic", - "description": "Whether DirectSocket chunk send/receive events should be reported.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "getCookies", - "description": "Returns all browser cookies for the current URL. Depending on the backend support, will return\ndetailed cookie information in the `cookies` field.", - "parameters": [ - { - "name": "urls", - "description": "The list of URLs for which applicable cookies will be fetched.\nIf not specified, it's assumed to be set to the list containing\nthe URLs of the page and all of its subframes.", - "optional": true, - "type": "array", - "items": { - "type": "string" - } - } - ], - "returns": [ - { - "name": "cookies", - "description": "Array of cookie objects.", - "type": "array", - "items": { - "$ref": "Cookie" - } - } - ] - }, - { - "name": "getResponseBody", - "description": "Returns content served for the given request.", - "parameters": [ - { - "name": "requestId", - "description": "Identifier of the network request to get content for.", - "$ref": "RequestId" - } - ], - "returns": [ - { - "name": "body", - "description": "Response body.", - "type": "string" - }, - { - "name": "base64Encoded", - "description": "True, if content was sent as base64.", - "type": "boolean" - } - ] - }, - { - "name": "getRequestPostData", - "description": "Returns post data sent with the request. Returns an error when no data was sent with the request.", - "parameters": [ - { - "name": "requestId", - "description": "Identifier of the network request to get content for.", - "$ref": "RequestId" - } - ], - "returns": [ - { - "name": "postData", - "description": "Request body string, omitting files from multipart requests", - "type": "string" - } - ] - }, - { - "name": "setBypassServiceWorker", - "description": "Toggles ignoring of service worker for each request.", - "parameters": [ - { - "name": "bypass", - "description": "Bypass service worker and load from network.", - "type": "boolean" - } - ] - }, - { - "name": "setCacheDisabled", - "description": "Toggles ignoring cache for each request. If `true`, cache will not be used.", - "parameters": [ - { - "name": "cacheDisabled", - "description": "Cache disabled state.", - "type": "boolean" - } - ] - }, - { - "name": "setCookie", - "description": "Sets a cookie with the given cookie data; may overwrite equivalent cookies if they exist.", - "parameters": [ - { - "name": "name", - "description": "Cookie name.", - "type": "string" - }, - { - "name": "value", - "description": "Cookie value.", - "type": "string" - }, - { - "name": "url", - "description": "The request-URI to associate with the setting of the cookie. This value can affect the\ndefault domain, path, source port, and source scheme values of the created cookie.", - "optional": true, - "type": "string" - }, - { - "name": "domain", - "description": "Cookie domain.", - "optional": true, - "type": "string" - }, - { - "name": "path", - "description": "Cookie path.", - "optional": true, - "type": "string" - }, - { - "name": "secure", - "description": "True if cookie is secure.", - "optional": true, - "type": "boolean" - }, - { - "name": "httpOnly", - "description": "True if cookie is http-only.", - "optional": true, - "type": "boolean" - }, - { - "name": "sameSite", - "description": "Cookie SameSite type.", - "optional": true, - "$ref": "CookieSameSite" - }, - { - "name": "expires", - "description": "Cookie expiration date, session cookie if not set", - "optional": true, - "$ref": "TimeSinceEpoch" - }, - { - "name": "priority", - "description": "Cookie Priority type.", - "experimental": true, - "optional": true, - "$ref": "CookiePriority" - }, - { - "name": "sameParty", - "description": "True if cookie is SameParty.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "sourceScheme", - "description": "Cookie source scheme type.", - "experimental": true, - "optional": true, - "$ref": "CookieSourceScheme" - }, - { - "name": "sourcePort", - "description": "Cookie source port. Valid values are {-1, [1, 65535]}, -1 indicates an unspecified port.\nAn unspecified port value allows protocol clients to emulate legacy cookie scope for the port.\nThis is a temporary ability and it will be removed in the future.", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "partitionKey", - "description": "Cookie partition key. If not set, the cookie will be set as not partitioned.", - "experimental": true, - "optional": true, - "$ref": "CookiePartitionKey" - } - ], - "returns": [ - { - "name": "success", - "description": "Always set to true. If an error occurs, the response indicates protocol error.", - "deprecated": true, - "type": "boolean" - } - ] - }, - { - "name": "setCookies", - "description": "Sets given cookies.", - "parameters": [ - { - "name": "cookies", - "description": "Cookies to be set.", - "type": "array", - "items": { - "$ref": "CookieParam" - } - } - ] - }, - { - "name": "setExtraHTTPHeaders", - "description": "Specifies whether to always send extra HTTP headers with the requests from this page.", - "parameters": [ - { - "name": "headers", - "description": "Map with extra HTTP headers.", - "$ref": "Headers" - } - ] - }, - { - "name": "setUserAgentOverride", - "description": "Allows overriding user agent with the given string.", - "redirect": "Emulation", - "parameters": [ - { - "name": "userAgent", - "description": "User agent to use.", - "type": "string" - }, - { - "name": "acceptLanguage", - "description": "Browser language to emulate.", - "optional": true, - "type": "string" - }, - { - "name": "platform", - "description": "The platform navigator.platform should return.", - "optional": true, - "type": "string" - }, - { - "name": "userAgentMetadata", - "description": "To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData", - "experimental": true, - "optional": true, - "$ref": "Emulation.UserAgentMetadata" - } - ] - } - ], - "events": [ - { - "name": "dataReceived", - "description": "Fired when data chunk was received over the network.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "dataLength", - "description": "Data chunk length.", - "type": "integer" - }, - { - "name": "encodedDataLength", - "description": "Actual bytes received (might be less than dataLength for compressed encodings).", - "type": "integer" - }, - { - "name": "data", - "description": "Data that was received. (Encoded as a base64 string when passed over JSON)", - "experimental": true, - "optional": true, - "type": "string" - } - ] - }, - { - "name": "eventSourceMessageReceived", - "description": "Fired when EventSource message is received.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "eventName", - "description": "Message type.", - "type": "string" - }, - { - "name": "eventId", - "description": "Message identifier.", - "type": "string" - }, - { - "name": "data", - "description": "Message content.", - "type": "string" - } - ] - }, - { - "name": "loadingFailed", - "description": "Fired when HTTP request has failed to load.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "type", - "description": "Resource type.", - "$ref": "ResourceType" - }, - { - "name": "errorText", - "description": "Error message. List of network errors: https://cs.chromium.org/chromium/src/net/base/net_error_list.h", - "type": "string" - }, - { - "name": "canceled", - "description": "True if loading was canceled.", - "optional": true, - "type": "boolean" - }, - { - "name": "blockedReason", - "description": "The reason why loading was blocked, if any.", - "optional": true, - "$ref": "BlockedReason" - }, - { - "name": "corsErrorStatus", - "description": "The reason why loading was blocked by CORS, if any.", - "optional": true, - "$ref": "CorsErrorStatus" - } - ] - }, - { - "name": "loadingFinished", - "description": "Fired when HTTP request has finished loading.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "encodedDataLength", - "description": "Total number of bytes received for this request.", - "type": "number" - } - ] - }, - { - "name": "requestServedFromCache", - "description": "Fired if request ended up loading from cache.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - } - ] - }, - { - "name": "requestWillBeSent", - "description": "Fired when page is about to send HTTP request.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "loaderId", - "description": "Loader identifier. Empty string if the request is fetched from worker.", - "$ref": "LoaderId" - }, - { - "name": "documentURL", - "description": "URL of the document this request is loaded for.", - "type": "string" - }, - { - "name": "request", - "description": "Request data.", - "$ref": "Request" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "wallTime", - "description": "Timestamp.", - "$ref": "TimeSinceEpoch" - }, - { - "name": "initiator", - "description": "Request initiator.", - "$ref": "Initiator" - }, - { - "name": "redirectHasExtraInfo", - "description": "In the case that redirectResponse is populated, this flag indicates whether\nrequestWillBeSentExtraInfo and responseReceivedExtraInfo events will be or were emitted\nfor the request which was just redirected.", - "experimental": true, - "type": "boolean" - }, - { - "name": "redirectResponse", - "description": "Redirect response data.", - "optional": true, - "$ref": "Response" - }, - { - "name": "type", - "description": "Type of this resource.", - "optional": true, - "$ref": "ResourceType" - }, - { - "name": "frameId", - "description": "Frame identifier.", - "optional": true, - "$ref": "Page.FrameId" - }, - { - "name": "hasUserGesture", - "description": "Whether the request is initiated by a user gesture. Defaults to false.", - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "responseReceived", - "description": "Fired when HTTP response is available.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "loaderId", - "description": "Loader identifier. Empty string if the request is fetched from worker.", - "$ref": "LoaderId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "type", - "description": "Resource type.", - "$ref": "ResourceType" - }, - { - "name": "response", - "description": "Response data.", - "$ref": "Response" - }, - { - "name": "hasExtraInfo", - "description": "Indicates whether requestWillBeSentExtraInfo and responseReceivedExtraInfo events will be\nor were emitted for this request.", - "experimental": true, - "type": "boolean" - }, - { - "name": "frameId", - "description": "Frame identifier.", - "optional": true, - "$ref": "Page.FrameId" - } - ] - }, - { - "name": "webSocketClosed", - "description": "Fired when WebSocket is closed.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - } - ] - }, - { - "name": "webSocketCreated", - "description": "Fired upon WebSocket creation.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "url", - "description": "WebSocket request URL.", - "type": "string" - }, - { - "name": "initiator", - "description": "Request initiator.", - "optional": true, - "$ref": "Initiator" - } - ] - }, - { - "name": "webSocketFrameError", - "description": "Fired when WebSocket message error occurs.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "errorMessage", - "description": "WebSocket error message.", - "type": "string" - } - ] - }, - { - "name": "webSocketFrameReceived", - "description": "Fired when WebSocket message is received.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "response", - "description": "WebSocket response data.", - "$ref": "WebSocketFrame" - } - ] - }, - { - "name": "webSocketFrameSent", - "description": "Fired when WebSocket message is sent.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "response", - "description": "WebSocket response data.", - "$ref": "WebSocketFrame" - } - ] - }, - { - "name": "webSocketHandshakeResponseReceived", - "description": "Fired when WebSocket handshake response becomes available.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "response", - "description": "WebSocket response data.", - "$ref": "WebSocketResponse" - } - ] - }, - { - "name": "webSocketWillSendHandshakeRequest", - "description": "Fired when WebSocket is about to initiate handshake.", - "parameters": [ - { - "name": "requestId", - "description": "Request identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "wallTime", - "description": "UTC Timestamp.", - "$ref": "TimeSinceEpoch" - }, - { - "name": "request", - "description": "WebSocket request data.", - "$ref": "WebSocketRequest" - } - ] - }, - { - "name": "webTransportCreated", - "description": "Fired upon WebTransport creation.", - "parameters": [ - { - "name": "transportId", - "description": "WebTransport identifier.", - "$ref": "RequestId" - }, - { - "name": "url", - "description": "WebTransport request URL.", - "type": "string" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - }, - { - "name": "initiator", - "description": "Request initiator.", - "optional": true, - "$ref": "Initiator" - } - ] - }, - { - "name": "webTransportConnectionEstablished", - "description": "Fired when WebTransport handshake is finished.", - "parameters": [ - { - "name": "transportId", - "description": "WebTransport identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - } - ] - }, - { - "name": "webTransportClosed", - "description": "Fired when WebTransport is disposed.", - "parameters": [ - { - "name": "transportId", - "description": "WebTransport identifier.", - "$ref": "RequestId" - }, - { - "name": "timestamp", - "description": "Timestamp.", - "$ref": "MonotonicTime" - } - ] - } - ] - }, - { - "domain": "Page", - "description": "Actions and events related to the inspected page belong to the page domain.", - "dependencies": [ - "Debugger", - "DOM", - "IO", - "Network", - "Runtime" - ], - "types": [ - { - "id": "FrameId", - "description": "Unique frame identifier.", - "type": "string" - }, - { - "id": "Frame", - "description": "Information about the Frame on the page.", - "type": "object", - "properties": [ - { - "name": "id", - "description": "Frame unique identifier.", - "$ref": "FrameId" - }, - { - "name": "parentId", - "description": "Parent frame identifier.", - "optional": true, - "$ref": "FrameId" - }, - { - "name": "loaderId", - "description": "Identifier of the loader associated with this frame.", - "$ref": "Network.LoaderId" - }, - { - "name": "name", - "description": "Frame's name as specified in the tag.", - "optional": true, - "type": "string" - }, - { - "name": "url", - "description": "Frame document's URL without fragment.", - "type": "string" - }, - { - "name": "urlFragment", - "description": "Frame document's URL fragment including the '#'.", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "domainAndRegistry", - "description": "Frame document's registered domain, taking the public suffixes list into account.\nExtracted from the Frame's url.\nExample URLs: http://www.google.com/file.html -> \"google.com\"\n http://a.b.co.uk/file.html -> \"b.co.uk\"", - "experimental": true, - "type": "string" - }, - { - "name": "securityOrigin", - "description": "Frame document's security origin.", - "type": "string" - }, - { - "name": "securityOriginDetails", - "description": "Additional details about the frame document's security origin.", - "experimental": true, - "optional": true, - "$ref": "SecurityOriginDetails" - }, - { - "name": "mimeType", - "description": "Frame document's mimeType as determined by the browser.", - "type": "string" - }, - { - "name": "unreachableUrl", - "description": "If the frame failed to load, this contains the URL that could not be loaded. Note that unlike url above, this URL may contain a fragment.", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "adFrameStatus", - "description": "Indicates whether this frame was tagged as an ad and why.", - "experimental": true, - "optional": true, - "$ref": "AdFrameStatus" - }, - { - "name": "secureContextType", - "description": "Indicates whether the main document is a secure context and explains why that is the case.", - "experimental": true, - "$ref": "SecureContextType" - }, - { - "name": "crossOriginIsolatedContextType", - "description": "Indicates whether this is a cross origin isolated context.", - "experimental": true, - "$ref": "CrossOriginIsolatedContextType" - }, - { - "name": "gatedAPIFeatures", - "description": "Indicated which gated APIs / features are available.", - "experimental": true, - "type": "array", - "items": { - "$ref": "GatedAPIFeatures" - } - } - ] - }, - { - "id": "FrameTree", - "description": "Information about the Frame hierarchy.", - "type": "object", - "properties": [ - { - "name": "frame", - "description": "Frame information for this tree item.", - "$ref": "Frame" - }, - { - "name": "childFrames", - "description": "Child frames.", - "optional": true, - "type": "array", - "items": { - "$ref": "FrameTree" - } - } - ] - }, - { - "id": "ScriptIdentifier", - "description": "Unique script identifier.", - "type": "string" - }, - { - "id": "TransitionType", - "description": "Transition type.", - "type": "string", - "enum": [ - "link", - "typed", - "address_bar", - "auto_bookmark", - "auto_subframe", - "manual_subframe", - "generated", - "auto_toplevel", - "form_submit", - "reload", - "keyword", - "keyword_generated", - "other" - ] - }, - { - "id": "NavigationEntry", - "description": "Navigation history entry.", - "type": "object", - "properties": [ - { - "name": "id", - "description": "Unique id of the navigation history entry.", - "type": "integer" - }, - { - "name": "url", - "description": "URL of the navigation history entry.", - "type": "string" - }, - { - "name": "userTypedURL", - "description": "URL that the user typed in the url bar.", - "type": "string" - }, - { - "name": "title", - "description": "Title of the navigation history entry.", - "type": "string" - }, - { - "name": "transitionType", - "description": "Transition type.", - "$ref": "TransitionType" - } - ] - }, - { - "id": "DialogType", - "description": "Javascript dialog type.", - "type": "string", - "enum": [ - "alert", - "confirm", - "prompt", - "beforeunload" - ] - }, - { - "id": "AppManifestError", - "description": "Error while paring app manifest.", - "type": "object", - "properties": [ - { - "name": "message", - "description": "Error message.", - "type": "string" - }, - { - "name": "critical", - "description": "If critical, this is a non-recoverable parse error.", - "type": "integer" - }, - { - "name": "line", - "description": "Error line.", - "type": "integer" - }, - { - "name": "column", - "description": "Error column.", - "type": "integer" - } - ] - }, - { - "id": "LayoutViewport", - "description": "Layout viewport position and dimensions.", - "type": "object", - "properties": [ - { - "name": "pageX", - "description": "Horizontal offset relative to the document (CSS pixels).", - "type": "integer" - }, - { - "name": "pageY", - "description": "Vertical offset relative to the document (CSS pixels).", - "type": "integer" - }, - { - "name": "clientWidth", - "description": "Width (CSS pixels), excludes scrollbar if present.", - "type": "integer" - }, - { - "name": "clientHeight", - "description": "Height (CSS pixels), excludes scrollbar if present.", - "type": "integer" - } - ] - }, - { - "id": "VisualViewport", - "description": "Visual viewport position, dimensions, and scale.", - "type": "object", - "properties": [ - { - "name": "offsetX", - "description": "Horizontal offset relative to the layout viewport (CSS pixels).", - "type": "number" - }, - { - "name": "offsetY", - "description": "Vertical offset relative to the layout viewport (CSS pixels).", - "type": "number" - }, - { - "name": "pageX", - "description": "Horizontal offset relative to the document (CSS pixels).", - "type": "number" - }, - { - "name": "pageY", - "description": "Vertical offset relative to the document (CSS pixels).", - "type": "number" - }, - { - "name": "clientWidth", - "description": "Width (CSS pixels), excludes scrollbar if present.", - "type": "number" - }, - { - "name": "clientHeight", - "description": "Height (CSS pixels), excludes scrollbar if present.", - "type": "number" - }, - { - "name": "scale", - "description": "Scale relative to the ideal viewport (size at width=device-width).", - "type": "number" - }, - { - "name": "zoom", - "description": "Page zoom factor (CSS to device independent pixels ratio).", - "optional": true, - "type": "number" - } - ] - }, - { - "id": "Viewport", - "description": "Viewport for capturing screenshot.", - "type": "object", - "properties": [ - { - "name": "x", - "description": "X offset in device independent pixels (dip).", - "type": "number" - }, - { - "name": "y", - "description": "Y offset in device independent pixels (dip).", - "type": "number" - }, - { - "name": "width", - "description": "Rectangle width in device independent pixels (dip).", - "type": "number" - }, - { - "name": "height", - "description": "Rectangle height in device independent pixels (dip).", - "type": "number" - }, - { - "name": "scale", - "description": "Page scale factor.", - "type": "number" - } - ] - } - ], - "commands": [ - { - "name": "addScriptToEvaluateOnNewDocument", - "description": "Evaluates given script in every frame upon creation (before loading frame's scripts).", - "parameters": [ - { - "name": "source", - "type": "string" - }, - { - "name": "worldName", - "description": "If specified, creates an isolated world with the given name and evaluates given script in it.\nThis world name will be used as the ExecutionContextDescription::name when the corresponding\nevent is emitted.", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "includeCommandLineAPI", - "description": "Specifies whether command line API should be available to the script, defaults\nto false.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "runImmediately", - "description": "If true, runs the script immediately on existing execution contexts or worlds.\nDefault: false.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "identifier", - "description": "Identifier of the added script.", - "$ref": "ScriptIdentifier" - } - ] - }, - { - "name": "bringToFront", - "description": "Brings page to front (activates tab)." - }, - { - "name": "captureScreenshot", - "description": "Capture page screenshot.", - "parameters": [ - { - "name": "format", - "description": "Image compression format (defaults to png).", - "optional": true, - "type": "string", - "enum": [ - "jpeg", - "png", - "webp" - ] - }, - { - "name": "quality", - "description": "Compression quality from range [0..100] (jpeg only).", - "optional": true, - "type": "integer" - }, - { - "name": "clip", - "description": "Capture the screenshot of a given region only.", - "optional": true, - "$ref": "Viewport" - }, - { - "name": "fromSurface", - "description": "Capture the screenshot from the surface, rather than the view. Defaults to true.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "captureBeyondViewport", - "description": "Capture the screenshot beyond the viewport. Defaults to false.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "optimizeForSpeed", - "description": "Optimize image encoding for speed, not for resulting size (defaults to false)", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "data", - "description": "Base64-encoded image data. (Encoded as a base64 string when passed over JSON)", - "type": "string" - } - ] - }, - { - "name": "createIsolatedWorld", - "description": "Creates an isolated world for the given frame.", - "parameters": [ - { - "name": "frameId", - "description": "Id of the frame in which the isolated world should be created.", - "$ref": "FrameId" - }, - { - "name": "worldName", - "description": "An optional name which is reported in the Execution Context.", - "optional": true, - "type": "string" - }, - { - "name": "grantUniveralAccess", - "description": "Whether or not universal access should be granted to the isolated world. This is a powerful\noption, use with caution.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "executionContextId", - "description": "Execution context of the isolated world.", - "$ref": "Runtime.ExecutionContextId" - } - ] - }, - { - "name": "disable", - "description": "Disables page domain notifications." - }, - { - "name": "enable", - "description": "Enables page domain notifications.", - "parameters": [ - { - "name": "enableFileChooserOpenedEvent", - "description": "If true, the `Page.fileChooserOpened` event will be emitted regardless of the state set by\n`Page.setInterceptFileChooserDialog` command (default: false).", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "getAppManifest", - "description": "Gets the processed manifest for this current document.\n This API always waits for the manifest to be loaded.\n If manifestId is provided, and it does not match the manifest of the\n current document, this API errors out.\n If there is not a loaded page, this API errors out immediately.", - "parameters": [ - { - "name": "manifestId", - "optional": true, - "type": "string" - } - ], - "returns": [ - { - "name": "url", - "description": "Manifest location.", - "type": "string" - }, - { - "name": "errors", - "type": "array", - "items": { - "$ref": "AppManifestError" - } - }, - { - "name": "data", - "description": "Manifest content.", - "optional": true, - "type": "string" - }, - { - "name": "parsed", - "description": "Parsed manifest properties. Deprecated, use manifest instead.", - "experimental": true, - "deprecated": true, - "optional": true, - "$ref": "AppManifestParsedProperties" - }, - { - "name": "manifest", - "experimental": true, - "$ref": "WebAppManifest" - } - ] - }, - { - "name": "getFrameTree", - "description": "Returns present frame tree structure.", - "returns": [ - { - "name": "frameTree", - "description": "Present frame tree structure.", - "$ref": "FrameTree" - } - ] - }, - { - "name": "getLayoutMetrics", - "description": "Returns metrics relating to the layouting of the page, such as viewport bounds/scale.", - "returns": [ - { - "name": "layoutViewport", - "description": "Deprecated metrics relating to the layout viewport. Is in device pixels. Use `cssLayoutViewport` instead.", - "deprecated": true, - "$ref": "LayoutViewport" - }, - { - "name": "visualViewport", - "description": "Deprecated metrics relating to the visual viewport. Is in device pixels. Use `cssVisualViewport` instead.", - "deprecated": true, - "$ref": "VisualViewport" - }, - { - "name": "contentSize", - "description": "Deprecated size of scrollable area. Is in DP. Use `cssContentSize` instead.", - "deprecated": true, - "$ref": "DOM.Rect" - }, - { - "name": "cssLayoutViewport", - "description": "Metrics relating to the layout viewport in CSS pixels.", - "$ref": "LayoutViewport" - }, - { - "name": "cssVisualViewport", - "description": "Metrics relating to the visual viewport in CSS pixels.", - "$ref": "VisualViewport" - }, - { - "name": "cssContentSize", - "description": "Size of scrollable area in CSS pixels.", - "$ref": "DOM.Rect" - } - ] - }, - { - "name": "getNavigationHistory", - "description": "Returns navigation history for the current page.", - "returns": [ - { - "name": "currentIndex", - "description": "Index of the current navigation history entry.", - "type": "integer" - }, - { - "name": "entries", - "description": "Array of navigation history entries.", - "type": "array", - "items": { - "$ref": "NavigationEntry" - } - } - ] - }, - { - "name": "resetNavigationHistory", - "description": "Resets navigation history for the current page." - }, - { - "name": "handleJavaScriptDialog", - "description": "Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).", - "parameters": [ - { - "name": "accept", - "description": "Whether to accept or dismiss the dialog.", - "type": "boolean" - }, - { - "name": "promptText", - "description": "The text to enter into the dialog prompt before accepting. Used only if this is a prompt\ndialog.", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "navigate", - "description": "Navigates current page to the given URL.", - "parameters": [ - { - "name": "url", - "description": "URL to navigate the page to.", - "type": "string" - }, - { - "name": "referrer", - "description": "Referrer URL.", - "optional": true, - "type": "string" - }, - { - "name": "transitionType", - "description": "Intended transition type.", - "optional": true, - "$ref": "TransitionType" - }, - { - "name": "frameId", - "description": "Frame id to navigate, if not specified navigates the top frame.", - "optional": true, - "$ref": "FrameId" - }, - { - "name": "referrerPolicy", - "description": "Referrer-policy used for the navigation.", - "experimental": true, - "optional": true, - "$ref": "ReferrerPolicy" - } - ], - "returns": [ - { - "name": "frameId", - "description": "Frame id that has navigated (or failed to navigate)", - "$ref": "FrameId" - }, - { - "name": "loaderId", - "description": "Loader identifier. This is omitted in case of same-document navigation,\nas the previously committed loaderId would not change.", - "optional": true, - "$ref": "Network.LoaderId" - }, - { - "name": "errorText", - "description": "User friendly error message, present if and only if navigation has failed.", - "optional": true, - "type": "string" - }, - { - "name": "isDownload", - "description": "Whether the navigation resulted in a download.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "navigateToHistoryEntry", - "description": "Navigates current page to the given history entry.", - "parameters": [ - { - "name": "entryId", - "description": "Unique id of the entry to navigate to.", - "type": "integer" - } - ] - }, - { - "name": "printToPDF", - "description": "Print page as PDF.", - "parameters": [ - { - "name": "landscape", - "description": "Paper orientation. Defaults to false.", - "optional": true, - "type": "boolean" - }, - { - "name": "displayHeaderFooter", - "description": "Display header and footer. Defaults to false.", - "optional": true, - "type": "boolean" - }, - { - "name": "printBackground", - "description": "Print background graphics. Defaults to false.", - "optional": true, - "type": "boolean" - }, - { - "name": "scale", - "description": "Scale of the webpage rendering. Defaults to 1.", - "optional": true, - "type": "number" - }, - { - "name": "paperWidth", - "description": "Paper width in inches. Defaults to 8.5 inches.", - "optional": true, - "type": "number" - }, - { - "name": "paperHeight", - "description": "Paper height in inches. Defaults to 11 inches.", - "optional": true, - "type": "number" - }, - { - "name": "marginTop", - "description": "Top margin in inches. Defaults to 1cm (~0.4 inches).", - "optional": true, - "type": "number" - }, - { - "name": "marginBottom", - "description": "Bottom margin in inches. Defaults to 1cm (~0.4 inches).", - "optional": true, - "type": "number" - }, - { - "name": "marginLeft", - "description": "Left margin in inches. Defaults to 1cm (~0.4 inches).", - "optional": true, - "type": "number" - }, - { - "name": "marginRight", - "description": "Right margin in inches. Defaults to 1cm (~0.4 inches).", - "optional": true, - "type": "number" - }, - { - "name": "pageRanges", - "description": "Paper ranges to print, one based, e.g., '1-5, 8, 11-13'. Pages are\nprinted in the document order, not in the order specified, and no\nmore than once.\nDefaults to empty string, which implies the entire document is printed.\nThe page numbers are quietly capped to actual page count of the\ndocument, and ranges beyond the end of the document are ignored.\nIf this results in no pages to print, an error is reported.\nIt is an error to specify a range with start greater than end.", - "optional": true, - "type": "string" - }, - { - "name": "headerTemplate", - "description": "HTML template for the print header. Should be valid HTML markup with following\nclasses used to inject printing values into them:\n- `date`: formatted print date\n- `title`: document title\n- `url`: document location\n- `pageNumber`: current page number\n- `totalPages`: total pages in the document\n\nFor example, `` would generate span containing the title.", - "optional": true, - "type": "string" - }, - { - "name": "footerTemplate", - "description": "HTML template for the print footer. Should use the same format as the `headerTemplate`.", - "optional": true, - "type": "string" - }, - { - "name": "preferCSSPageSize", - "description": "Whether or not to prefer page size as defined by css. Defaults to false,\nin which case the content will be scaled to fit the paper size.", - "optional": true, - "type": "boolean" - }, - { - "name": "transferMode", - "description": "return as stream", - "experimental": true, - "optional": true, - "type": "string", - "enum": [ - "ReturnAsBase64", - "ReturnAsStream" - ] - }, - { - "name": "generateTaggedPDF", - "description": "Whether or not to generate tagged (accessible) PDF. Defaults to embedder choice.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "generateDocumentOutline", - "description": "Whether or not to embed the document outline into the PDF.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "data", - "description": "Base64-encoded pdf data. Empty if |returnAsStream| is specified. (Encoded as a base64 string when passed over JSON)", - "type": "string" - }, - { - "name": "stream", - "description": "A handle of the stream that holds resulting PDF data.", - "experimental": true, - "optional": true, - "$ref": "IO.StreamHandle" - } - ] - }, - { - "name": "reload", - "description": "Reloads given page optionally ignoring the cache.", - "parameters": [ - { - "name": "ignoreCache", - "description": "If true, browser cache is ignored (as if the user pressed Shift+refresh).", - "optional": true, - "type": "boolean" - }, - { - "name": "scriptToEvaluateOnLoad", - "description": "If set, the script will be injected into all frames of the inspected page after reload.\nArgument will be ignored if reloading dataURL origin.", - "optional": true, - "type": "string" - }, - { - "name": "loaderId", - "description": "If set, an error will be thrown if the target page's main frame's\nloader id does not match the provided id. This prevents accidentally\nreloading an unintended target in case there's a racing navigation.", - "experimental": true, - "optional": true, - "$ref": "Network.LoaderId" - } - ] - }, - { - "name": "removeScriptToEvaluateOnNewDocument", - "description": "Removes given script from the list.", - "parameters": [ - { - "name": "identifier", - "$ref": "ScriptIdentifier" - } - ] - }, - { - "name": "setBypassCSP", - "description": "Enable page Content Security Policy by-passing.", - "parameters": [ - { - "name": "enabled", - "description": "Whether to bypass page CSP.", - "type": "boolean" - } - ] - }, - { - "name": "setDocumentContent", - "description": "Sets given markup as the document's HTML.", - "parameters": [ - { - "name": "frameId", - "description": "Frame id to set HTML for.", - "$ref": "FrameId" - }, - { - "name": "html", - "description": "HTML content to set.", - "type": "string" - } - ] - }, - { - "name": "setLifecycleEventsEnabled", - "description": "Controls whether page will emit lifecycle events.", - "parameters": [ - { - "name": "enabled", - "description": "If true, starts emitting lifecycle events.", - "type": "boolean" - } - ] - }, - { - "name": "stopLoading", - "description": "Force the page stop all navigations and pending resource fetches." - }, - { - "name": "close", - "description": "Tries to close page, running its beforeunload hooks, if any." - }, - { - "name": "setInterceptFileChooserDialog", - "description": "Intercept file chooser requests and transfer control to protocol clients.\nWhen file chooser interception is enabled, native file chooser dialog is not shown.\nInstead, a protocol event `Page.fileChooserOpened` is emitted.", - "parameters": [ - { - "name": "enabled", - "type": "boolean" - }, - { - "name": "cancel", - "description": "If true, cancels the dialog by emitting relevant events (if any)\nin addition to not showing it if the interception is enabled\n(default: false).", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - } - ], - "events": [ - { - "name": "domContentEventFired", - "parameters": [ - { - "name": "timestamp", - "$ref": "Network.MonotonicTime" - } - ] - }, - { - "name": "fileChooserOpened", - "description": "Emitted only when `page.interceptFileChooser` is enabled.", - "parameters": [ - { - "name": "frameId", - "description": "Id of the frame containing input node.", - "experimental": true, - "$ref": "FrameId" - }, - { - "name": "mode", - "description": "Input mode.", - "type": "string", - "enum": [ - "selectSingle", - "selectMultiple" - ] - }, - { - "name": "backendNodeId", - "description": "Input node id. Only present for file choosers opened via an `` element.", - "experimental": true, - "optional": true, - "$ref": "DOM.BackendNodeId" - } - ] - }, - { - "name": "frameAttached", - "description": "Fired when frame has been attached to its parent.", - "parameters": [ - { - "name": "frameId", - "description": "Id of the frame that has been attached.", - "$ref": "FrameId" - }, - { - "name": "parentFrameId", - "description": "Parent frame identifier.", - "$ref": "FrameId" - }, - { - "name": "stack", - "description": "JavaScript stack trace of when frame was attached, only set if frame initiated from script.", - "optional": true, - "$ref": "Runtime.StackTrace" - } - ] - }, - { - "name": "frameDetached", - "description": "Fired when frame has been detached from its parent.", - "parameters": [ - { - "name": "frameId", - "description": "Id of the frame that has been detached.", - "$ref": "FrameId" - }, - { - "name": "reason", - "experimental": true, - "type": "string", - "enum": [ - "remove", - "swap" - ] - } - ] - }, - { - "name": "frameNavigated", - "description": "Fired once navigation of the frame has completed. Frame is now associated with the new loader.", - "parameters": [ - { - "name": "frame", - "description": "Frame object.", - "$ref": "Frame" - }, - { - "name": "type", - "experimental": true, - "$ref": "NavigationType" - } - ] - }, - { - "name": "interstitialHidden", - "description": "Fired when interstitial page was hidden" - }, - { - "name": "interstitialShown", - "description": "Fired when interstitial page was shown" - }, - { - "name": "javascriptDialogClosed", - "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been\nclosed.", - "parameters": [ - { - "name": "frameId", - "description": "Frame id.", - "experimental": true, - "$ref": "FrameId" - }, - { - "name": "result", - "description": "Whether dialog was confirmed.", - "type": "boolean" - }, - { - "name": "userInput", - "description": "User input in case of prompt.", - "type": "string" - } - ] - }, - { - "name": "javascriptDialogOpening", - "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to\nopen.", - "parameters": [ - { - "name": "url", - "description": "Frame url.", - "type": "string" - }, - { - "name": "frameId", - "description": "Frame id.", - "experimental": true, - "$ref": "FrameId" - }, - { - "name": "message", - "description": "Message that will be displayed by the dialog.", - "type": "string" - }, - { - "name": "type", - "description": "Dialog type.", - "$ref": "DialogType" - }, - { - "name": "hasBrowserHandler", - "description": "True iff browser is capable showing or acting on the given dialog. When browser has no\ndialog handler for given target, calling alert while Page domain is engaged will stall\nthe page execution. Execution can be resumed via calling Page.handleJavaScriptDialog.", - "type": "boolean" - }, - { - "name": "defaultPrompt", - "description": "Default dialog prompt.", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "lifecycleEvent", - "description": "Fired for lifecycle events (navigation, load, paint, etc) in the current\ntarget (including local frames).", - "parameters": [ - { - "name": "frameId", - "description": "Id of the frame.", - "$ref": "FrameId" - }, - { - "name": "loaderId", - "description": "Loader identifier. Empty string if the request is fetched from worker.", - "$ref": "Network.LoaderId" - }, - { - "name": "name", - "type": "string" - }, - { - "name": "timestamp", - "$ref": "Network.MonotonicTime" - } - ] - }, - { - "name": "loadEventFired", - "parameters": [ - { - "name": "timestamp", - "$ref": "Network.MonotonicTime" - } - ] - }, - { - "name": "windowOpen", - "description": "Fired when a new window is going to be opened, via window.open(), link click, form submission,\netc.", - "parameters": [ - { - "name": "url", - "description": "The URL for the new window.", - "type": "string" - }, - { - "name": "windowName", - "description": "Window name.", - "type": "string" - }, - { - "name": "windowFeatures", - "description": "An array of enabled window features.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "userGesture", - "description": "Whether or not it was triggered by user gesture.", - "type": "boolean" - } - ] - } - ] - }, - { - "domain": "Performance", - "types": [ - { - "id": "Metric", - "description": "Run-time execution metric.", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Metric name.", - "type": "string" - }, - { - "name": "value", - "description": "Metric value.", - "type": "number" - } - ] - } - ], - "commands": [ - { - "name": "disable", - "description": "Disable collecting and reporting metrics." - }, - { - "name": "enable", - "description": "Enable collecting and reporting metrics.", - "parameters": [ - { - "name": "timeDomain", - "description": "Time domain to use for collecting and reporting duration metrics.", - "optional": true, - "type": "string", - "enum": [ - "timeTicks", - "threadTicks" - ] - } - ] - }, - { - "name": "getMetrics", - "description": "Retrieve current values of run-time metrics.", - "returns": [ - { - "name": "metrics", - "description": "Current values for run-time metrics.", - "type": "array", - "items": { - "$ref": "Metric" - } - } - ] - } - ], - "events": [ - { - "name": "metrics", - "description": "Current values of the metrics.", - "parameters": [ - { - "name": "metrics", - "description": "Current values of the metrics.", - "type": "array", - "items": { - "$ref": "Metric" - } - }, - { - "name": "title", - "description": "Timestamp title.", - "type": "string" - } - ] - } - ] - }, - { - "domain": "Security", - "description": "Security", - "types": [ - { - "id": "CertificateId", - "description": "An internal certificate ID value.", - "type": "integer" - }, - { - "id": "MixedContentType", - "description": "A description of mixed content (HTTP resources on HTTPS pages), as defined by\nhttps://www.w3.org/TR/mixed-content/#categories", - "type": "string", - "enum": [ - "blockable", - "optionally-blockable", - "none" - ] - }, - { - "id": "SecurityState", - "description": "The security level of a page or resource.", - "type": "string", - "enum": [ - "unknown", - "neutral", - "insecure", - "secure", - "info", - "insecure-broken" - ] - }, - { - "id": "SecurityStateExplanation", - "description": "An explanation of an factor contributing to the security state.", - "type": "object", - "properties": [ - { - "name": "securityState", - "description": "Security state representing the severity of the factor being explained.", - "$ref": "SecurityState" - }, - { - "name": "title", - "description": "Title describing the type of factor.", - "type": "string" - }, - { - "name": "summary", - "description": "Short phrase describing the type of factor.", - "type": "string" - }, - { - "name": "description", - "description": "Full text explanation of the factor.", - "type": "string" - }, - { - "name": "mixedContentType", - "description": "The type of mixed content described by the explanation.", - "$ref": "MixedContentType" - }, - { - "name": "certificate", - "description": "Page certificate.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "recommendations", - "description": "Recommendations to fix any issues.", - "optional": true, - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - { - "id": "CertificateErrorAction", - "description": "The action to take when a certificate error occurs. continue will continue processing the\nrequest and cancel will cancel the request.", - "type": "string", - "enum": [ - "continue", - "cancel" - ] - } - ], - "commands": [ - { - "name": "disable", - "description": "Disables tracking security state changes." - }, - { - "name": "enable", - "description": "Enables tracking security state changes." - }, - { - "name": "setIgnoreCertificateErrors", - "description": "Enable/disable whether all certificate errors should be ignored.", - "parameters": [ - { - "name": "ignore", - "description": "If true, all certificate errors will be ignored.", - "type": "boolean" - } - ] - } - ], - "events": [] - }, - { - "domain": "Target", - "description": "Supports additional targets discovery and allows to attach to them.", - "types": [ - { - "id": "TargetID", - "type": "string" - }, - { - "id": "SessionID", - "description": "Unique identifier of attached debugging session.", - "type": "string" - }, - { - "id": "TargetInfo", - "type": "object", - "properties": [ - { - "name": "targetId", - "$ref": "TargetID" - }, - { - "name": "type", - "description": "List of types: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/devtools/devtools_agent_host_impl.cc?ss=chromium&q=f:devtools%20-f:out%20%22::kTypeTab%5B%5D%22", - "type": "string" - }, - { - "name": "title", - "type": "string" - }, - { - "name": "url", - "type": "string" - }, - { - "name": "attached", - "description": "Whether the target has an attached client.", - "type": "boolean" - }, - { - "name": "openerId", - "description": "Opener target Id", - "optional": true, - "$ref": "TargetID" - }, - { - "name": "canAccessOpener", - "description": "Whether the target has access to the originating window.", - "experimental": true, - "type": "boolean" - }, - { - "name": "openerFrameId", - "description": "Frame id of originating window (is only set if target has an opener).", - "experimental": true, - "optional": true, - "$ref": "Page.FrameId" - }, - { - "name": "browserContextId", - "experimental": true, - "optional": true, - "$ref": "Browser.BrowserContextID" - }, - { - "name": "subtype", - "description": "Provides additional details for specific target types. For example, for\nthe type of \"page\", this may be set to \"prerender\".", - "experimental": true, - "optional": true, - "type": "string" - } - ] - } - ], - "commands": [ - { - "name": "activateTarget", - "description": "Activates (focuses) the target.", - "parameters": [ - { - "name": "targetId", - "$ref": "TargetID" - } - ] - }, - { - "name": "attachToTarget", - "description": "Attaches to the target with given id.", - "parameters": [ - { - "name": "targetId", - "$ref": "TargetID" - }, - { - "name": "flatten", - "description": "Enables \"flat\" access to the session via specifying sessionId attribute in the commands.\nWe plan to make this the default, deprecate non-flattened mode,\nand eventually retire it. See crbug.com/991325.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "sessionId", - "description": "Id assigned to the session.", - "$ref": "SessionID" - } - ] - }, - { - "name": "closeTarget", - "description": "Closes the target. If the target is a page that gets closed too.", - "parameters": [ - { - "name": "targetId", - "$ref": "TargetID" - } - ], - "returns": [ - { - "name": "success", - "description": "Always set to true. If an error occurs, the response indicates protocol error.", - "deprecated": true, - "type": "boolean" - } - ] - }, - { - "name": "createBrowserContext", - "description": "Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than\none.", - "parameters": [ - { - "name": "disposeOnDetach", - "description": "If specified, disposes this context when debugging session disconnects.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "proxyServer", - "description": "Proxy server, similar to the one passed to --proxy-server", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "proxyBypassList", - "description": "Proxy bypass list, similar to the one passed to --proxy-bypass-list", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "originsWithUniversalNetworkAccess", - "description": "An optional list of origins to grant unlimited cross-origin access to.\nParts of the URL other than those constituting origin are ignored.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "type": "string" - } - } - ], - "returns": [ - { - "name": "browserContextId", - "description": "The id of the context created.", - "$ref": "Browser.BrowserContextID" - } - ] - }, - { - "name": "getBrowserContexts", - "description": "Returns all browser contexts created with `Target.createBrowserContext` method.", - "returns": [ - { - "name": "browserContextIds", - "description": "An array of browser context ids.", - "type": "array", - "items": { - "$ref": "Browser.BrowserContextID" - } - } - ] - }, - { - "name": "createTarget", - "description": "Creates a new page.", - "parameters": [ - { - "name": "url", - "description": "The initial URL the page will be navigated to. An empty string indicates about:blank.", - "type": "string" - }, - { - "name": "left", - "description": "Frame left origin in DIP (requires newWindow to be true or headless shell).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "top", - "description": "Frame top origin in DIP (requires newWindow to be true or headless shell).", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "width", - "description": "Frame width in DIP (requires newWindow to be true or headless shell).", - "optional": true, - "type": "integer" - }, - { - "name": "height", - "description": "Frame height in DIP (requires newWindow to be true or headless shell).", - "optional": true, - "type": "integer" - }, - { - "name": "windowState", - "description": "Frame window state (requires newWindow to be true or headless shell).\nDefault is normal.", - "optional": true, - "$ref": "WindowState" - }, - { - "name": "browserContextId", - "description": "The browser context to create the page in.", - "experimental": true, - "optional": true, - "$ref": "Browser.BrowserContextID" - }, - { - "name": "enableBeginFrameControl", - "description": "Whether BeginFrames for this target will be controlled via DevTools (headless shell only,\nnot supported on MacOS yet, false by default).", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "newWindow", - "description": "Whether to create a new Window or Tab (false by default, not supported by headless shell).", - "optional": true, - "type": "boolean" - }, - { - "name": "background", - "description": "Whether to create the target in background or foreground (false by default, not supported\nby headless shell).", - "optional": true, - "type": "boolean" - }, - { - "name": "forTab", - "description": "Whether to create the target of type \"tab\".", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "hidden", - "description": "Whether to create a hidden target. The hidden target is observable via protocol, but not\npresent in the tab UI strip. Cannot be created with `forTab: true`, `newWindow: true` or\n`background: false`. The life-time of the tab is limited to the life-time of the session.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "targetId", - "description": "The id of the page opened.", - "$ref": "TargetID" - } - ] - }, - { - "name": "detachFromTarget", - "description": "Detaches session with given id.", - "parameters": [ - { - "name": "sessionId", - "description": "Session to detach.", - "optional": true, - "$ref": "SessionID" - }, - { - "name": "targetId", - "description": "Deprecated.", - "deprecated": true, - "optional": true, - "$ref": "TargetID" - } - ] - }, - { - "name": "disposeBrowserContext", - "description": "Deletes a BrowserContext. All the belonging pages will be closed without calling their\nbeforeunload hooks.", - "parameters": [ - { - "name": "browserContextId", - "$ref": "Browser.BrowserContextID" - } - ] - }, - { - "name": "getTargets", - "description": "Retrieves a list of available targets.", - "parameters": [ - { - "name": "filter", - "description": "Only targets matching filter will be reported. If filter is not specified\nand target discovery is currently enabled, a filter used for target discovery\nis used for consistency.", - "experimental": true, - "optional": true, - "$ref": "TargetFilter" - } - ], - "returns": [ - { - "name": "targetInfos", - "description": "The list of targets.", - "type": "array", - "items": { - "$ref": "TargetInfo" - } - } - ] - }, - { - "name": "setAutoAttach", - "description": "Controls whether to automatically attach to new targets which are considered\nto be directly related to this one (for example, iframes or workers).\nWhen turned on, attaches to all existing related targets as well. When turned off,\nautomatically detaches from all currently attached targets.\nThis also clears all targets added by `autoAttachRelated` from the list of targets to watch\nfor creation of related targets.\nYou might want to call this recursively for auto-attached targets to attach\nto all available targets.", - "parameters": [ - { - "name": "autoAttach", - "description": "Whether to auto-attach to related targets.", - "type": "boolean" - }, - { - "name": "waitForDebuggerOnStart", - "description": "Whether to pause new targets when attaching to them. Use `Runtime.runIfWaitingForDebugger`\nto run paused targets.", - "type": "boolean" - }, - { - "name": "flatten", - "description": "Enables \"flat\" access to the session via specifying sessionId attribute in the commands.\nWe plan to make this the default, deprecate non-flattened mode,\nand eventually retire it. See crbug.com/991325.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "filter", - "description": "Only targets matching filter will be attached.", - "experimental": true, - "optional": true, - "$ref": "TargetFilter" - } - ] - }, - { - "name": "setDiscoverTargets", - "description": "Controls whether to discover available targets and notify via\n`targetCreated/targetInfoChanged/targetDestroyed` events.", - "parameters": [ - { - "name": "discover", - "description": "Whether to discover available targets.", - "type": "boolean" - }, - { - "name": "filter", - "description": "Only targets matching filter will be attached. If `discover` is false,\n`filter` must be omitted or empty.", - "experimental": true, - "optional": true, - "$ref": "TargetFilter" - } - ] - } - ], - "events": [ - { - "name": "receivedMessageFromTarget", - "description": "Notifies about a new protocol message received from the session (as reported in\n`attachedToTarget` event).", - "parameters": [ - { - "name": "sessionId", - "description": "Identifier of a session which sends a message.", - "$ref": "SessionID" - }, - { - "name": "message", - "type": "string" - }, - { - "name": "targetId", - "description": "Deprecated.", - "deprecated": true, - "optional": true, - "$ref": "TargetID" - } - ] - }, - { - "name": "targetCreated", - "description": "Issued when a possible inspection target is created.", - "parameters": [ - { - "name": "targetInfo", - "$ref": "TargetInfo" - } - ] - }, - { - "name": "targetDestroyed", - "description": "Issued when a target is destroyed.", - "parameters": [ - { - "name": "targetId", - "$ref": "TargetID" - } - ] - }, - { - "name": "targetCrashed", - "description": "Issued when a target has crashed.", - "parameters": [ - { - "name": "targetId", - "$ref": "TargetID" - }, - { - "name": "status", - "description": "Termination status type.", - "type": "string" - }, - { - "name": "errorCode", - "description": "Termination error code.", - "type": "integer" - } - ] - }, - { - "name": "targetInfoChanged", - "description": "Issued when some information about a target has changed. This only happens between\n`targetCreated` and `targetDestroyed`.", - "parameters": [ - { - "name": "targetInfo", - "$ref": "TargetInfo" - } - ] - } - ] - }, - { - "domain": "Tracing", - "dependencies": [ - "IO" - ], - "types": [ - { - "id": "TraceConfig", - "type": "object", - "properties": [ - { - "name": "recordMode", - "description": "Controls how the trace buffer stores data. The default is `recordUntilFull`.", - "experimental": true, - "optional": true, - "type": "string", - "enum": [ - "recordUntilFull", - "recordContinuously", - "recordAsMuchAsPossible", - "echoToConsole" - ] - }, - { - "name": "traceBufferSizeInKb", - "description": "Size of the trace buffer in kilobytes. If not specified or zero is passed, a default value\nof 200 MB would be used.", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "enableSampling", - "description": "Turns on JavaScript stack sampling.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "enableSystrace", - "description": "Turns on system tracing.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "enableArgumentFilter", - "description": "Turns on argument filter.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "includedCategories", - "description": "Included category filters.", - "optional": true, - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "excludedCategories", - "description": "Excluded category filters.", - "optional": true, - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "syntheticDelays", - "description": "Configuration to synthesize the delays in tracing.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "memoryDumpConfig", - "description": "Configuration for memory dump triggers. Used only when \"memory-infra\" category is enabled.", - "experimental": true, - "optional": true, - "$ref": "MemoryDumpConfig" - } - ] - } - ], - "commands": [ - { - "name": "end", - "description": "Stop trace events collection." - }, - { - "name": "start", - "description": "Start trace events collection.", - "parameters": [ - { - "name": "categories", - "description": "Category/tag filter", - "experimental": true, - "deprecated": true, - "optional": true, - "type": "string" - }, - { - "name": "options", - "description": "Tracing options", - "experimental": true, - "deprecated": true, - "optional": true, - "type": "string" - }, - { - "name": "bufferUsageReportingInterval", - "description": "If set, the agent will issue bufferUsage events at this interval, specified in milliseconds", - "experimental": true, - "optional": true, - "type": "number" - }, - { - "name": "transferMode", - "description": "Whether to report trace events as series of dataCollected events or to save trace to a\nstream (defaults to `ReportEvents`).", - "optional": true, - "type": "string", - "enum": [ - "ReportEvents", - "ReturnAsStream" - ] - }, - { - "name": "streamFormat", - "description": "Trace data format to use. This only applies when using `ReturnAsStream`\ntransfer mode (defaults to `json`).", - "optional": true, - "$ref": "StreamFormat" - }, - { - "name": "streamCompression", - "description": "Compression format to use. This only applies when using `ReturnAsStream`\ntransfer mode (defaults to `none`)", - "experimental": true, - "optional": true, - "$ref": "StreamCompression" - }, - { - "name": "traceConfig", - "optional": true, - "$ref": "TraceConfig" - }, - { - "name": "perfettoConfig", - "description": "Base64-encoded serialized perfetto.protos.TraceConfig protobuf message\nWhen specified, the parameters `categories`, `options`, `traceConfig`\nare ignored. (Encoded as a base64 string when passed over JSON)", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "tracingBackend", - "description": "Backend type (defaults to `auto`)", - "experimental": true, - "optional": true, - "$ref": "TracingBackend" - } - ] - } - ], - "events": [ - { - "name": "tracingComplete", - "description": "Signals that tracing is stopped and there is no trace buffers pending flush, all data were\ndelivered via dataCollected events.", - "parameters": [ - { - "name": "dataLossOccurred", - "description": "Indicates whether some trace data is known to have been lost, e.g. because the trace ring\nbuffer wrapped around.", - "type": "boolean" - }, - { - "name": "stream", - "description": "A handle of the stream that holds resulting trace data.", - "optional": true, - "$ref": "IO.StreamHandle" - }, - { - "name": "traceFormat", - "description": "Trace data format of returned stream.", - "optional": true, - "$ref": "StreamFormat" - }, - { - "name": "streamCompression", - "description": "Compression format of returned stream.", - "optional": true, - "$ref": "StreamCompression" - } - ] - } - ] - }, - { - "domain": "Fetch", - "description": "A domain for letting clients substitute browser's network layer with client code.", - "dependencies": [ - "Network", - "IO", - "Page" - ], - "types": [ - { - "id": "RequestId", - "description": "Unique request identifier.\nNote that this does not identify individual HTTP requests that are part of\na network request.", - "type": "string" - }, - { - "id": "RequestStage", - "description": "Stages of the request to handle. Request will intercept before the request is\nsent. Response will intercept after the response is received (but before response\nbody is received).", - "type": "string", - "enum": [ - "Request", - "Response" - ] - }, - { - "id": "RequestPattern", - "type": "object", - "properties": [ - { - "name": "urlPattern", - "description": "Wildcards (`'*'` -> zero or more, `'?'` -> exactly one) are allowed. Escape character is\nbackslash. Omitting is equivalent to `\"*\"`.", - "optional": true, - "type": "string" - }, - { - "name": "resourceType", - "description": "If set, only requests for matching resource types will be intercepted.", - "optional": true, - "$ref": "Network.ResourceType" - }, - { - "name": "requestStage", - "description": "Stage at which to begin intercepting requests. Default is Request.", - "optional": true, - "$ref": "RequestStage" - } - ] - }, - { - "id": "HeaderEntry", - "description": "Response HTTP header entry", - "type": "object", - "properties": [ - { - "name": "name", - "type": "string" - }, - { - "name": "value", - "type": "string" - } - ] - }, - { - "id": "AuthChallenge", - "description": "Authorization challenge for HTTP status code 401 or 407.", - "type": "object", - "properties": [ - { - "name": "source", - "description": "Source of the authentication challenge.", - "optional": true, - "type": "string", - "enum": [ - "Server", - "Proxy" - ] - }, - { - "name": "origin", - "description": "Origin of the challenger.", - "type": "string" - }, - { - "name": "scheme", - "description": "The authentication scheme used, such as basic or digest", - "type": "string" - }, - { - "name": "realm", - "description": "The realm of the challenge. May be empty.", - "type": "string" - } - ] - }, - { - "id": "AuthChallengeResponse", - "description": "Response to an AuthChallenge.", - "type": "object", - "properties": [ - { - "name": "response", - "description": "The decision on what to do in response to the authorization challenge. Default means\ndeferring to the default behavior of the net stack, which will likely either the Cancel\nauthentication or display a popup dialog box.", - "type": "string", - "enum": [ - "Default", - "CancelAuth", - "ProvideCredentials" - ] - }, - { - "name": "username", - "description": "The username to provide, possibly empty. Should only be set if response is\nProvideCredentials.", - "optional": true, - "type": "string" - }, - { - "name": "password", - "description": "The password to provide, possibly empty. Should only be set if response is\nProvideCredentials.", - "optional": true, - "type": "string" - } - ] - } - ], - "commands": [ - { - "name": "disable", - "description": "Disables the fetch domain." - }, - { - "name": "enable", - "description": "Enables issuing of requestPaused events. A request will be paused until client\ncalls one of failRequest, fulfillRequest or continueRequest/continueWithAuth.", - "parameters": [ - { - "name": "patterns", - "description": "If specified, only requests matching any of these patterns will produce\nfetchRequested event and will be paused until clients response. If not set,\nall requests will be affected.", - "optional": true, - "type": "array", - "items": { - "$ref": "RequestPattern" - } - }, - { - "name": "handleAuthRequests", - "description": "If true, authRequired events will be issued and requests will be paused\nexpecting a call to continueWithAuth.", - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "failRequest", - "description": "Causes the request to fail with specified reason.", - "parameters": [ - { - "name": "requestId", - "description": "An id the client received in requestPaused event.", - "$ref": "RequestId" - }, - { - "name": "errorReason", - "description": "Causes the request to fail with the given reason.", - "$ref": "Network.ErrorReason" - } - ] - }, - { - "name": "fulfillRequest", - "description": "Provides response to the request.", - "parameters": [ - { - "name": "requestId", - "description": "An id the client received in requestPaused event.", - "$ref": "RequestId" - }, - { - "name": "responseCode", - "description": "An HTTP response code.", - "type": "integer" - }, - { - "name": "responseHeaders", - "description": "Response headers.", - "optional": true, - "type": "array", - "items": { - "$ref": "HeaderEntry" - } - }, - { - "name": "binaryResponseHeaders", - "description": "Alternative way of specifying response headers as a \\0-separated\nseries of name: value pairs. Prefer the above method unless you\nneed to represent some non-UTF8 values that can't be transmitted\nover the protocol as text. (Encoded as a base64 string when passed over JSON)", - "optional": true, - "type": "string" - }, - { - "name": "body", - "description": "A response body. If absent, original response body will be used if\nthe request is intercepted at the response stage and empty body\nwill be used if the request is intercepted at the request stage. (Encoded as a base64 string when passed over JSON)", - "optional": true, - "type": "string" - }, - { - "name": "responsePhrase", - "description": "A textual representation of responseCode.\nIf absent, a standard phrase matching responseCode is used.", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "continueRequest", - "description": "Continues the request, optionally modifying some of its parameters.", - "parameters": [ - { - "name": "requestId", - "description": "An id the client received in requestPaused event.", - "$ref": "RequestId" - }, - { - "name": "url", - "description": "If set, the request url will be modified in a way that's not observable by page.", - "optional": true, - "type": "string" - }, - { - "name": "method", - "description": "If set, the request method is overridden.", - "optional": true, - "type": "string" - }, - { - "name": "postData", - "description": "If set, overrides the post data in the request. (Encoded as a base64 string when passed over JSON)", - "optional": true, - "type": "string" - }, - { - "name": "headers", - "description": "If set, overrides the request headers. Note that the overrides do not\nextend to subsequent redirect hops, if a redirect happens. Another override\nmay be applied to a different request produced by a redirect.", - "optional": true, - "type": "array", - "items": { - "$ref": "HeaderEntry" - } - }, - { - "name": "interceptResponse", - "description": "If set, overrides response interception behavior for this request.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "continueWithAuth", - "description": "Continues a request supplying authChallengeResponse following authRequired event.", - "parameters": [ - { - "name": "requestId", - "description": "An id the client received in authRequired event.", - "$ref": "RequestId" - }, - { - "name": "authChallengeResponse", - "description": "Response to with an authChallenge.", - "$ref": "AuthChallengeResponse" - } - ] - }, - { - "name": "getResponseBody", - "description": "Causes the body of the response to be received from the server and\nreturned as a single string. May only be issued for a request that\nis paused in the Response stage and is mutually exclusive with\ntakeResponseBodyForInterceptionAsStream. Calling other methods that\naffect the request or disabling fetch domain before body is received\nresults in an undefined behavior.\nNote that the response body is not available for redirects. Requests\npaused in the _redirect received_ state may be differentiated by\n`responseCode` and presence of `location` response header, see\ncomments to `requestPaused` for details.", - "parameters": [ - { - "name": "requestId", - "description": "Identifier for the intercepted request to get body for.", - "$ref": "RequestId" - } - ], - "returns": [ - { - "name": "body", - "description": "Response body.", - "type": "string" - }, - { - "name": "base64Encoded", - "description": "True, if content was sent as base64.", - "type": "boolean" - } - ] - }, - { - "name": "takeResponseBodyAsStream", - "description": "Returns a handle to the stream representing the response body.\nThe request must be paused in the HeadersReceived stage.\nNote that after this command the request can't be continued\nas is -- client either needs to cancel it or to provide the\nresponse body.\nThe stream only supports sequential read, IO.read will fail if the position\nis specified.\nThis method is mutually exclusive with getResponseBody.\nCalling other methods that affect the request or disabling fetch\ndomain before body is received results in an undefined behavior.", - "parameters": [ - { - "name": "requestId", - "$ref": "RequestId" - } - ], - "returns": [ - { - "name": "stream", - "$ref": "IO.StreamHandle" - } - ] - } - ], - "events": [ - { - "name": "requestPaused", - "description": "Issued when the domain is enabled and the request URL matches the\nspecified filter. The request is paused until the client responds\nwith one of continueRequest, failRequest or fulfillRequest.\nThe stage of the request can be determined by presence of responseErrorReason\nand responseStatusCode -- the request is at the response stage if either\nof these fields is present and in the request stage otherwise.\nRedirect responses and subsequent requests are reported similarly to regular\nresponses and requests. Redirect responses may be distinguished by the value\nof `responseStatusCode` (which is one of 301, 302, 303, 307, 308) along with\npresence of the `location` header. Requests resulting from a redirect will\nhave `redirectedRequestId` field set.", - "parameters": [ - { - "name": "requestId", - "description": "Each request the page makes will have a unique id.", - "$ref": "RequestId" - }, - { - "name": "request", - "description": "The details of the request.", - "$ref": "Network.Request" - }, - { - "name": "frameId", - "description": "The id of the frame that initiated the request.", - "$ref": "Page.FrameId" - }, - { - "name": "resourceType", - "description": "How the requested resource will be used.", - "$ref": "Network.ResourceType" - }, - { - "name": "responseErrorReason", - "description": "Response error if intercepted at response stage.", - "optional": true, - "$ref": "Network.ErrorReason" - }, - { - "name": "responseStatusCode", - "description": "Response code if intercepted at response stage.", - "optional": true, - "type": "integer" - }, - { - "name": "responseStatusText", - "description": "Response status text if intercepted at response stage.", - "optional": true, - "type": "string" - }, - { - "name": "responseHeaders", - "description": "Response headers if intercepted at the response stage.", - "optional": true, - "type": "array", - "items": { - "$ref": "HeaderEntry" - } - }, - { - "name": "networkId", - "description": "If the intercepted request had a corresponding Network.requestWillBeSent event fired for it,\nthen this networkId will be the same as the requestId present in the requestWillBeSent event.", - "optional": true, - "$ref": "Network.RequestId" - }, - { - "name": "redirectedRequestId", - "description": "If the request is due to a redirect response from the server, the id of the request that\nhas caused the redirect.", - "experimental": true, - "optional": true, - "$ref": "RequestId" - } - ] - }, - { - "name": "authRequired", - "description": "Issued when the domain is enabled with handleAuthRequests set to true.\nThe request is paused until client responds with continueWithAuth.", - "parameters": [ - { - "name": "requestId", - "description": "Each request the page makes will have a unique id.", - "$ref": "RequestId" - }, - { - "name": "request", - "description": "The details of the request.", - "$ref": "Network.Request" - }, - { - "name": "frameId", - "description": "The id of the frame that initiated the request.", - "$ref": "Page.FrameId" - }, - { - "name": "resourceType", - "description": "How the requested resource will be used.", - "$ref": "Network.ResourceType" - }, - { - "name": "authChallenge", - "description": "Details of the Authorization Challenge encountered.\nIf this is set, client should respond with continueRequest that\ncontains AuthChallengeResponse.", - "$ref": "AuthChallenge" - } - ] - } - ] - }, - { - "domain": "Debugger", - "description": "Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing\nbreakpoints, stepping through execution, exploring stack traces, etc.", - "dependencies": [ - "Runtime" - ], - "types": [ - { - "id": "BreakpointId", - "description": "Breakpoint identifier.", - "type": "string" - }, - { - "id": "CallFrameId", - "description": "Call frame identifier.", - "type": "string" - }, - { - "id": "Location", - "description": "Location in the source code.", - "type": "object", - "properties": [ - { - "name": "scriptId", - "description": "Script identifier as reported in the `Debugger.scriptParsed`.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "lineNumber", - "description": "Line number in the script (0-based).", - "type": "integer" - }, - { - "name": "columnNumber", - "description": "Column number in the script (0-based).", - "optional": true, - "type": "integer" - } - ] - }, - { - "id": "CallFrame", - "description": "JavaScript call frame. Array of call frames form the call stack.", - "type": "object", - "properties": [ - { - "name": "callFrameId", - "description": "Call frame identifier. This identifier is only valid while the virtual machine is paused.", - "$ref": "CallFrameId" - }, - { - "name": "functionName", - "description": "Name of the JavaScript function called on this call frame.", - "type": "string" - }, - { - "name": "functionLocation", - "description": "Location in the source code.", - "optional": true, - "$ref": "Location" - }, - { - "name": "location", - "description": "Location in the source code.", - "$ref": "Location" - }, - { - "name": "url", - "description": "JavaScript script name or url.\nDeprecated in favor of using the `location.scriptId` to resolve the URL via a previously\nsent `Debugger.scriptParsed` event.", - "deprecated": true, - "type": "string" - }, - { - "name": "scopeChain", - "description": "Scope chain for this call frame.", - "type": "array", - "items": { - "$ref": "Scope" - } - }, - { - "name": "this", - "description": "`this` object for this call frame.", - "$ref": "Runtime.RemoteObject" - }, - { - "name": "returnValue", - "description": "The value being returned, if the function is at return point.", - "optional": true, - "$ref": "Runtime.RemoteObject" - }, - { - "name": "canBeRestarted", - "description": "Valid only while the VM is paused and indicates whether this frame\ncan be restarted or not. Note that a `true` value here does not\nguarantee that Debugger#restartFrame with this CallFrameId will be\nsuccessful, but it is very likely.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ] - }, - { - "id": "Scope", - "description": "Scope description.", - "type": "object", - "properties": [ - { - "name": "type", - "description": "Scope type.", - "type": "string", - "enum": [ - "global", - "local", - "with", - "closure", - "catch", - "block", - "script", - "eval", - "module", - "wasm-expression-stack" - ] - }, - { - "name": "object", - "description": "Object representing the scope. For `global` and `with` scopes it represents the actual\nobject; for the rest of the scopes, it is artificial transient object enumerating scope\nvariables as its properties.", - "$ref": "Runtime.RemoteObject" - }, - { - "name": "name", - "optional": true, - "type": "string" - }, - { - "name": "startLocation", - "description": "Location in the source code where scope starts", - "optional": true, - "$ref": "Location" - }, - { - "name": "endLocation", - "description": "Location in the source code where scope ends", - "optional": true, - "$ref": "Location" - } - ] - }, - { - "id": "SearchMatch", - "description": "Search match for resource.", - "type": "object", - "properties": [ - { - "name": "lineNumber", - "description": "Line number in resource content.", - "type": "number" - }, - { - "name": "lineContent", - "description": "Line with match content.", - "type": "string" - } - ] - }, - { - "id": "BreakLocation", - "type": "object", - "properties": [ - { - "name": "scriptId", - "description": "Script identifier as reported in the `Debugger.scriptParsed`.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "lineNumber", - "description": "Line number in the script (0-based).", - "type": "integer" - }, - { - "name": "columnNumber", - "description": "Column number in the script (0-based).", - "optional": true, - "type": "integer" - }, - { - "name": "type", - "optional": true, - "type": "string", - "enum": [ - "debuggerStatement", - "call", - "return" - ] - } - ] - }, - { - "id": "ScriptLanguage", - "description": "Enum of possible script languages.", - "type": "string", - "enum": [ - "JavaScript", - "WebAssembly" - ] - }, - { - "id": "DebugSymbols", - "description": "Debug symbols available for a wasm script.", - "type": "object", - "properties": [ - { - "name": "type", - "description": "Type of the debug symbols.", - "type": "string", - "enum": [ - "SourceMap", - "EmbeddedDWARF", - "ExternalDWARF" - ] - }, - { - "name": "externalURL", - "description": "URL of the external symbol source.", - "optional": true, - "type": "string" - } - ] - }, - { - "id": "ResolvedBreakpoint", - "type": "object", - "properties": [ - { - "name": "breakpointId", - "description": "Breakpoint unique identifier.", - "$ref": "BreakpointId" - }, - { - "name": "location", - "description": "Actual breakpoint location.", - "$ref": "Location" - } - ] - } - ], - "commands": [ - { - "name": "continueToLocation", - "description": "Continues execution until specific location is reached.", - "parameters": [ - { - "name": "location", - "description": "Location to continue to.", - "$ref": "Location" - }, - { - "name": "targetCallFrames", - "optional": true, - "type": "string", - "enum": [ - "any", - "current" - ] - } - ] - }, - { - "name": "disable", - "description": "Disables debugger for given page." - }, - { - "name": "enable", - "description": "Enables debugger for the given page. Clients should not assume that the debugging has been\nenabled until the result for this command is received.", - "parameters": [ - { - "name": "maxScriptsCacheSize", - "description": "The maximum size in bytes of collected scripts (not referenced by other heap objects)\nthe debugger can hold. Puts no limit if parameter is omitted.", - "experimental": true, - "optional": true, - "type": "number" - } - ], - "returns": [ - { - "name": "debuggerId", - "description": "Unique identifier of the debugger.", - "experimental": true, - "$ref": "Runtime.UniqueDebuggerId" - } - ] - }, - { - "name": "evaluateOnCallFrame", - "description": "Evaluates expression on a given call frame.", - "parameters": [ - { - "name": "callFrameId", - "description": "Call frame identifier to evaluate on.", - "$ref": "CallFrameId" - }, - { - "name": "expression", - "description": "Expression to evaluate.", - "type": "string" - }, - { - "name": "objectGroup", - "description": "String object group name to put result into (allows rapid releasing resulting object handles\nusing `releaseObjectGroup`).", - "optional": true, - "type": "string" - }, - { - "name": "includeCommandLineAPI", - "description": "Specifies whether command line API should be available to the evaluated expression, defaults\nto false.", - "optional": true, - "type": "boolean" - }, - { - "name": "silent", - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause\nexecution. Overrides `setPauseOnException` state.", - "optional": true, - "type": "boolean" - }, - { - "name": "returnByValue", - "description": "Whether the result is expected to be a JSON object that should be sent by value.", - "optional": true, - "type": "boolean" - }, - { - "name": "generatePreview", - "description": "Whether preview should be generated for the result.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "throwOnSideEffect", - "description": "Whether to throw an exception if side effect cannot be ruled out during evaluation.", - "optional": true, - "type": "boolean" - }, - { - "name": "timeout", - "description": "Terminate execution after timing out (number of milliseconds).", - "experimental": true, - "optional": true, - "$ref": "Runtime.TimeDelta" - } - ], - "returns": [ - { - "name": "result", - "description": "Object wrapper for the evaluation result.", - "$ref": "Runtime.RemoteObject" - }, - { - "name": "exceptionDetails", - "description": "Exception details.", - "optional": true, - "$ref": "Runtime.ExceptionDetails" - } - ] - }, - { - "name": "getPossibleBreakpoints", - "description": "Returns possible locations for breakpoint. scriptId in start and end range locations should be\nthe same.", - "parameters": [ - { - "name": "start", - "description": "Start of range to search possible breakpoint locations in.", - "$ref": "Location" - }, - { - "name": "end", - "description": "End of range to search possible breakpoint locations in (excluding). When not specified, end\nof scripts is used as end of range.", - "optional": true, - "$ref": "Location" - }, - { - "name": "restrictToFunction", - "description": "Only consider locations which are in the same (non-nested) function as start.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "locations", - "description": "List of the possible breakpoint locations.", - "type": "array", - "items": { - "$ref": "BreakLocation" - } - } - ] - }, - { - "name": "getScriptSource", - "description": "Returns source for the script with given id.", - "parameters": [ - { - "name": "scriptId", - "description": "Id of the script to get source for.", - "$ref": "Runtime.ScriptId" - } - ], - "returns": [ - { - "name": "scriptSource", - "description": "Script source (empty in case of Wasm bytecode).", - "type": "string" - }, - { - "name": "bytecode", - "description": "Wasm bytecode. (Encoded as a base64 string when passed over JSON)", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "pause", - "description": "Stops on the next JavaScript statement." - }, - { - "name": "removeBreakpoint", - "description": "Removes JavaScript breakpoint.", - "parameters": [ - { - "name": "breakpointId", - "$ref": "BreakpointId" - } - ] - }, - { - "name": "restartFrame", - "description": "Restarts particular call frame from the beginning. The old, deprecated\nbehavior of `restartFrame` is to stay paused and allow further CDP commands\nafter a restart was scheduled. This can cause problems with restarting, so\nwe now continue execution immediatly after it has been scheduled until we\nreach the beginning of the restarted frame.\n\nTo stay back-wards compatible, `restartFrame` now expects a `mode`\nparameter to be present. If the `mode` parameter is missing, `restartFrame`\nerrors out.\n\nThe various return values are deprecated and `callFrames` is always empty.\nUse the call frames from the `Debugger#paused` events instead, that fires\nonce V8 pauses at the beginning of the restarted function.", - "parameters": [ - { - "name": "callFrameId", - "description": "Call frame identifier to evaluate on.", - "$ref": "CallFrameId" - }, - { - "name": "mode", - "description": "The `mode` parameter must be present and set to 'StepInto', otherwise\n`restartFrame` will error out.", - "experimental": true, - "optional": true, - "type": "string", - "enum": [ - "StepInto" - ] - } - ], - "returns": [ - { - "name": "callFrames", - "description": "New stack trace.", - "deprecated": true, - "type": "array", - "items": { - "$ref": "CallFrame" - } - }, - { - "name": "asyncStackTrace", - "description": "Async stack trace, if any.", - "deprecated": true, - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "asyncStackTraceId", - "description": "Async stack trace, if any.", - "deprecated": true, - "optional": true, - "$ref": "Runtime.StackTraceId" - } - ] - }, - { - "name": "resume", - "description": "Resumes JavaScript execution.", - "parameters": [ - { - "name": "terminateOnResume", - "description": "Set to true to terminate execution upon resuming execution. In contrast\nto Runtime.terminateExecution, this will allows to execute further\nJavaScript (i.e. via evaluation) until execution of the paused code\nis actually resumed, at which point termination is triggered.\nIf execution is currently not paused, this parameter has no effect.", - "optional": true, - "type": "boolean" - } - ] - }, - { - "name": "searchInContent", - "description": "Searches for given string in script content.", - "parameters": [ - { - "name": "scriptId", - "description": "Id of the script to search in.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "query", - "description": "String to search for.", - "type": "string" - }, - { - "name": "caseSensitive", - "description": "If true, search is case sensitive.", - "optional": true, - "type": "boolean" - }, - { - "name": "isRegex", - "description": "If true, treats string parameter as regex.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "result", - "description": "List of search matches.", - "type": "array", - "items": { - "$ref": "SearchMatch" - } - } - ] - }, - { - "name": "setAsyncCallStackDepth", - "description": "Enables or disables async call stacks tracking.", - "parameters": [ - { - "name": "maxDepth", - "description": "Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async\ncall stacks (default).", - "type": "integer" - } - ] - }, - { - "name": "setBreakpoint", - "description": "Sets JavaScript breakpoint at a given location.", - "parameters": [ - { - "name": "location", - "description": "Location to set breakpoint in.", - "$ref": "Location" - }, - { - "name": "condition", - "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the\nbreakpoint if this expression evaluates to true.", - "optional": true, - "type": "string" - } - ], - "returns": [ - { - "name": "breakpointId", - "description": "Id of the created breakpoint for further reference.", - "$ref": "BreakpointId" - }, - { - "name": "actualLocation", - "description": "Location this breakpoint resolved into.", - "$ref": "Location" - } - ] - }, - { - "name": "setInstrumentationBreakpoint", - "description": "Sets instrumentation breakpoint.", - "parameters": [ - { - "name": "instrumentation", - "description": "Instrumentation name.", - "type": "string", - "enum": [ - "beforeScriptExecution", - "beforeScriptWithSourceMapExecution" - ] - } - ], - "returns": [ - { - "name": "breakpointId", - "description": "Id of the created breakpoint for further reference.", - "$ref": "BreakpointId" - } - ] - }, - { - "name": "setBreakpointByUrl", - "description": "Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this\ncommand is issued, all existing parsed scripts will have breakpoints resolved and returned in\n`locations` property. Further matching script parsing will result in subsequent\n`breakpointResolved` events issued. This logical breakpoint will survive page reloads.", - "parameters": [ - { - "name": "lineNumber", - "description": "Line number to set breakpoint at.", - "type": "integer" - }, - { - "name": "url", - "description": "URL of the resources to set breakpoint on.", - "optional": true, - "type": "string" - }, - { - "name": "urlRegex", - "description": "Regex pattern for the URLs of the resources to set breakpoints on. Either `url` or\n`urlRegex` must be specified.", - "optional": true, - "type": "string" - }, - { - "name": "scriptHash", - "description": "Script hash of the resources to set breakpoint on.", - "optional": true, - "type": "string" - }, - { - "name": "columnNumber", - "description": "Offset in the line to set breakpoint at.", - "optional": true, - "type": "integer" - }, - { - "name": "condition", - "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the\nbreakpoint if this expression evaluates to true.", - "optional": true, - "type": "string" - } - ], - "returns": [ - { - "name": "breakpointId", - "description": "Id of the created breakpoint for further reference.", - "$ref": "BreakpointId" - }, - { - "name": "locations", - "description": "List of the locations this breakpoint resolved into upon addition.", - "type": "array", - "items": { - "$ref": "Location" - } - } - ] - }, - { - "name": "setBreakpointsActive", - "description": "Activates / deactivates all breakpoints on the page.", - "parameters": [ - { - "name": "active", - "description": "New value for breakpoints active state.", - "type": "boolean" - } - ] - }, - { - "name": "setPauseOnExceptions", - "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions,\nor caught exceptions, no exceptions. Initial pause on exceptions state is `none`.", - "parameters": [ - { - "name": "state", - "description": "Pause on exceptions mode.", - "type": "string", - "enum": [ - "none", - "caught", - "uncaught", - "all" - ] - } - ] - }, - { - "name": "setScriptSource", - "description": "Edits JavaScript source live.\n\nIn general, functions that are currently on the stack can not be edited with\na single exception: If the edited function is the top-most stack frame and\nthat is the only activation of that function on the stack. In this case\nthe live edit will be successful and a `Debugger.restartFrame` for the\ntop-most function is automatically triggered.", - "parameters": [ - { - "name": "scriptId", - "description": "Id of the script to edit.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "scriptSource", - "description": "New content of the script.", - "type": "string" - }, - { - "name": "dryRun", - "description": "If true the change will not actually be applied. Dry run may be used to get result\ndescription without actually modifying the code.", - "optional": true, - "type": "boolean" - }, - { - "name": "allowTopFrameEditing", - "description": "If true, then `scriptSource` is allowed to change the function on top of the stack\nas long as the top-most stack frame is the only activation of that function.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "callFrames", - "description": "New stack trace in case editing has happened while VM was stopped.", - "deprecated": true, - "optional": true, - "type": "array", - "items": { - "$ref": "CallFrame" - } - }, - { - "name": "stackChanged", - "description": "Whether current call stack was modified after applying the changes.", - "deprecated": true, - "optional": true, - "type": "boolean" - }, - { - "name": "asyncStackTrace", - "description": "Async stack trace, if any.", - "deprecated": true, - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "asyncStackTraceId", - "description": "Async stack trace, if any.", - "deprecated": true, - "optional": true, - "$ref": "Runtime.StackTraceId" - }, - { - "name": "status", - "description": "Whether the operation was successful or not. Only `Ok` denotes a\nsuccessful live edit while the other enum variants denote why\nthe live edit failed.", - "experimental": true, - "type": "string", - "enum": [ - "Ok", - "CompileError", - "BlockedByActiveGenerator", - "BlockedByActiveFunction", - "BlockedByTopLevelEsModuleChange" - ] - }, - { - "name": "exceptionDetails", - "description": "Exception details if any. Only present when `status` is `CompileError`.", - "optional": true, - "$ref": "Runtime.ExceptionDetails" - } - ] - }, - { - "name": "setSkipAllPauses", - "description": "Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).", - "parameters": [ - { - "name": "skip", - "description": "New value for skip pauses state.", - "type": "boolean" - } - ] - }, - { - "name": "setVariableValue", - "description": "Changes value of variable in a callframe. Object-based scopes are not supported and must be\nmutated manually.", - "parameters": [ - { - "name": "scopeNumber", - "description": "0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch'\nscope types are allowed. Other scopes could be manipulated manually.", - "type": "integer" - }, - { - "name": "variableName", - "description": "Variable name.", - "type": "string" - }, - { - "name": "newValue", - "description": "New variable value.", - "$ref": "Runtime.CallArgument" - }, - { - "name": "callFrameId", - "description": "Id of callframe that holds variable.", - "$ref": "CallFrameId" - } - ] - }, - { - "name": "stepInto", - "description": "Steps into the function call.", - "parameters": [ - { - "name": "breakOnAsyncCall", - "description": "Debugger will pause on the execution of the first async task which was scheduled\nbefore next pause.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "skipList", - "description": "The skipList specifies location ranges that should be skipped on step into.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "$ref": "LocationRange" - } - } - ] - }, - { - "name": "stepOut", - "description": "Steps out of the function call." - }, - { - "name": "stepOver", - "description": "Steps over the statement.", - "parameters": [ - { - "name": "skipList", - "description": "The skipList specifies location ranges that should be skipped on step over.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "$ref": "LocationRange" - } - } - ] - } - ], - "events": [ - { - "name": "paused", - "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.", - "parameters": [ - { - "name": "callFrames", - "description": "Call stack the virtual machine stopped on.", - "type": "array", - "items": { - "$ref": "CallFrame" - } - }, - { - "name": "reason", - "description": "Pause reason.", - "type": "string", - "enum": [ - "ambiguous", - "assert", - "CSPViolation", - "debugCommand", - "DOM", - "EventListener", - "exception", - "instrumentation", - "OOM", - "other", - "promiseRejection", - "XHR", - "step" - ] - }, - { - "name": "data", - "description": "Object containing break-specific auxiliary properties.", - "optional": true, - "type": "object" - }, - { - "name": "hitBreakpoints", - "description": "Hit breakpoints IDs", - "optional": true, - "type": "array", - "items": { - "type": "string" - } - }, - { - "name": "asyncStackTrace", - "description": "Async stack trace, if any.", - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "asyncStackTraceId", - "description": "Async stack trace, if any.", - "experimental": true, - "optional": true, - "$ref": "Runtime.StackTraceId" - }, - { - "name": "asyncCallStackTraceId", - "description": "Never present, will be removed.", - "experimental": true, - "deprecated": true, - "optional": true, - "$ref": "Runtime.StackTraceId" - } - ] - }, - { - "name": "resumed", - "description": "Fired when the virtual machine resumed execution." - }, - { - "name": "scriptFailedToParse", - "description": "Fired when virtual machine fails to parse the script.", - "parameters": [ - { - "name": "scriptId", - "description": "Identifier of the script parsed.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "url", - "description": "URL or name of the script parsed (if any).", - "type": "string" - }, - { - "name": "startLine", - "description": "Line offset of the script within the resource with given URL (for script tags).", - "type": "integer" - }, - { - "name": "startColumn", - "description": "Column offset of the script within the resource with given URL.", - "type": "integer" - }, - { - "name": "endLine", - "description": "Last line of the script.", - "type": "integer" - }, - { - "name": "endColumn", - "description": "Length of the last line of the script.", - "type": "integer" - }, - { - "name": "executionContextId", - "description": "Specifies script creation context.", - "$ref": "Runtime.ExecutionContextId" - }, - { - "name": "hash", - "description": "Content hash of the script, SHA-256.", - "type": "string" - }, - { - "name": "buildId", - "description": "For Wasm modules, the content of the `build_id` custom section. For JavaScript the `debugId` magic comment.", - "type": "string" - }, - { - "name": "executionContextAuxData", - "description": "Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}", - "optional": true, - "type": "object" - }, - { - "name": "sourceMapURL", - "description": "URL of source map associated with script (if any).", - "optional": true, - "type": "string" - }, - { - "name": "hasSourceURL", - "description": "True, if this script has sourceURL.", - "optional": true, - "type": "boolean" - }, - { - "name": "isModule", - "description": "True, if this script is ES6 module.", - "optional": true, - "type": "boolean" - }, - { - "name": "length", - "description": "This script length.", - "optional": true, - "type": "integer" - }, - { - "name": "stackTrace", - "description": "JavaScript top stack frame of where the script parsed event was triggered if available.", - "experimental": true, - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "codeOffset", - "description": "If the scriptLanguage is WebAssembly, the code section offset in the module.", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "scriptLanguage", - "description": "The language of the script.", - "experimental": true, - "optional": true, - "$ref": "Debugger.ScriptLanguage" - }, - { - "name": "embedderName", - "description": "The name the embedder supplied for this script.", - "experimental": true, - "optional": true, - "type": "string" - } - ] - }, - { - "name": "scriptParsed", - "description": "Fired when virtual machine parses script. This event is also fired for all known and uncollected\nscripts upon enabling debugger.", - "parameters": [ - { - "name": "scriptId", - "description": "Identifier of the script parsed.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "url", - "description": "URL or name of the script parsed (if any).", - "type": "string" - }, - { - "name": "startLine", - "description": "Line offset of the script within the resource with given URL (for script tags).", - "type": "integer" - }, - { - "name": "startColumn", - "description": "Column offset of the script within the resource with given URL.", - "type": "integer" - }, - { - "name": "endLine", - "description": "Last line of the script.", - "type": "integer" - }, - { - "name": "endColumn", - "description": "Length of the last line of the script.", - "type": "integer" - }, - { - "name": "executionContextId", - "description": "Specifies script creation context.", - "$ref": "Runtime.ExecutionContextId" - }, - { - "name": "hash", - "description": "Content hash of the script, SHA-256.", - "type": "string" - }, - { - "name": "buildId", - "description": "For Wasm modules, the content of the `build_id` custom section. For JavaScript the `debugId` magic comment.", - "type": "string" - }, - { - "name": "executionContextAuxData", - "description": "Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}", - "optional": true, - "type": "object" - }, - { - "name": "isLiveEdit", - "description": "True, if this script is generated as a result of the live edit operation.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "sourceMapURL", - "description": "URL of source map associated with script (if any).", - "optional": true, - "type": "string" - }, - { - "name": "hasSourceURL", - "description": "True, if this script has sourceURL.", - "optional": true, - "type": "boolean" - }, - { - "name": "isModule", - "description": "True, if this script is ES6 module.", - "optional": true, - "type": "boolean" - }, - { - "name": "length", - "description": "This script length.", - "optional": true, - "type": "integer" - }, - { - "name": "stackTrace", - "description": "JavaScript top stack frame of where the script parsed event was triggered if available.", - "experimental": true, - "optional": true, - "$ref": "Runtime.StackTrace" - }, - { - "name": "codeOffset", - "description": "If the scriptLanguage is WebAssembly, the code section offset in the module.", - "experimental": true, - "optional": true, - "type": "integer" - }, - { - "name": "scriptLanguage", - "description": "The language of the script.", - "experimental": true, - "optional": true, - "$ref": "Debugger.ScriptLanguage" - }, - { - "name": "debugSymbols", - "description": "If the scriptLanguage is WebAssembly, the source of debug symbols for the module.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "$ref": "Debugger.DebugSymbols" - } - }, - { - "name": "embedderName", - "description": "The name the embedder supplied for this script.", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "resolvedBreakpoints", - "description": "The list of set breakpoints in this script if calls to `setBreakpointByUrl`\nmatches this script's URL or hash. Clients that use this list can ignore the\n`breakpointResolved` event. They are equivalent.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "$ref": "ResolvedBreakpoint" - } - } - ] - } - ] - }, - { - "domain": "Profiler", - "dependencies": [ - "Runtime", - "Debugger" - ], - "types": [ - { - "id": "ProfileNode", - "description": "Profile node. Holds callsite information, execution statistics and child nodes.", - "type": "object", - "properties": [ - { - "name": "id", - "description": "Unique id of the node.", - "type": "integer" - }, - { - "name": "callFrame", - "description": "Function location.", - "$ref": "Runtime.CallFrame" - }, - { - "name": "hitCount", - "description": "Number of samples where this node was on top of the call stack.", - "optional": true, - "type": "integer" - }, - { - "name": "children", - "description": "Child node ids.", - "optional": true, - "type": "array", - "items": { - "type": "integer" - } - }, - { - "name": "deoptReason", - "description": "The reason of being not optimized. The function may be deoptimized or marked as don't\noptimize.", - "optional": true, - "type": "string" - }, - { - "name": "positionTicks", - "description": "An array of source position ticks.", - "optional": true, - "type": "array", - "items": { - "$ref": "PositionTickInfo" - } - } - ] - }, - { - "id": "Profile", - "description": "Profile.", - "type": "object", - "properties": [ - { - "name": "nodes", - "description": "The list of profile nodes. First item is the root node.", - "type": "array", - "items": { - "$ref": "ProfileNode" - } - }, - { - "name": "startTime", - "description": "Profiling start timestamp in microseconds.", - "type": "number" - }, - { - "name": "endTime", - "description": "Profiling end timestamp in microseconds.", - "type": "number" - }, - { - "name": "samples", - "description": "Ids of samples top nodes.", - "optional": true, - "type": "array", - "items": { - "type": "integer" - } - }, - { - "name": "timeDeltas", - "description": "Time intervals between adjacent samples in microseconds. The first delta is relative to the\nprofile startTime.", - "optional": true, - "type": "array", - "items": { - "type": "integer" - } - } - ] - }, - { - "id": "PositionTickInfo", - "description": "Specifies a number of samples attributed to a certain source position.", - "type": "object", - "properties": [ - { - "name": "line", - "description": "Source line number (1-based).", - "type": "integer" - }, - { - "name": "ticks", - "description": "Number of samples attributed to the source line.", - "type": "integer" - } - ] - }, - { - "id": "CoverageRange", - "description": "Coverage data for a source range.", - "type": "object", - "properties": [ - { - "name": "startOffset", - "description": "JavaScript script source offset for the range start.", - "type": "integer" - }, - { - "name": "endOffset", - "description": "JavaScript script source offset for the range end.", - "type": "integer" - }, - { - "name": "count", - "description": "Collected execution count of the source range.", - "type": "integer" - } - ] - }, - { - "id": "FunctionCoverage", - "description": "Coverage data for a JavaScript function.", - "type": "object", - "properties": [ - { - "name": "functionName", - "description": "JavaScript function name.", - "type": "string" - }, - { - "name": "ranges", - "description": "Source ranges inside the function with coverage data.", - "type": "array", - "items": { - "$ref": "CoverageRange" - } - }, - { - "name": "isBlockCoverage", - "description": "Whether coverage data for this function has block granularity.", - "type": "boolean" - } - ] - }, - { - "id": "ScriptCoverage", - "description": "Coverage data for a JavaScript script.", - "type": "object", - "properties": [ - { - "name": "scriptId", - "description": "JavaScript script id.", - "$ref": "Runtime.ScriptId" - }, - { - "name": "url", - "description": "JavaScript script name or url.", - "type": "string" - }, - { - "name": "functions", - "description": "Functions contained in the script that has coverage data.", - "type": "array", - "items": { - "$ref": "FunctionCoverage" - } - } - ] - } - ], - "commands": [ - { - "name": "disable" - }, - { - "name": "enable" - }, - { - "name": "getBestEffortCoverage", - "description": "Collect coverage data for the current isolate. The coverage data may be incomplete due to\ngarbage collection.", - "returns": [ - { - "name": "result", - "description": "Coverage data for the current isolate.", - "type": "array", - "items": { - "$ref": "ScriptCoverage" - } - } - ] - }, - { - "name": "setSamplingInterval", - "description": "Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.", - "parameters": [ - { - "name": "interval", - "description": "New sampling interval in microseconds.", - "type": "integer" - } - ] - }, - { - "name": "start" - }, - { - "name": "startPreciseCoverage", - "description": "Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code\ncoverage may be incomplete. Enabling prevents running optimized code and resets execution\ncounters.", - "parameters": [ - { - "name": "callCount", - "description": "Collect accurate call counts beyond simple 'covered' or 'not covered'.", - "optional": true, - "type": "boolean" - }, - { - "name": "detailed", - "description": "Collect block-based coverage.", - "optional": true, - "type": "boolean" - }, - { - "name": "allowTriggeredUpdates", - "description": "Allow the backend to send updates on its own initiative", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "timestamp", - "description": "Monotonically increasing time (in seconds) when the coverage update was taken in the backend.", - "type": "number" - } - ] - }, - { - "name": "stop", - "returns": [ - { - "name": "profile", - "description": "Recorded profile.", - "$ref": "Profile" - } - ] - }, - { - "name": "stopPreciseCoverage", - "description": "Disable precise code coverage. Disabling releases unnecessary execution count records and allows\nexecuting optimized code." - }, - { - "name": "takePreciseCoverage", - "description": "Collect coverage data for the current isolate, and resets execution counters. Precise code\ncoverage needs to have started.", - "returns": [ - { - "name": "result", - "description": "Coverage data for the current isolate.", - "type": "array", - "items": { - "$ref": "ScriptCoverage" - } - }, - { - "name": "timestamp", - "description": "Monotonically increasing time (in seconds) when the coverage update was taken in the backend.", - "type": "number" - } - ] - } - ], - "events": [ - { - "name": "consoleProfileFinished", - "parameters": [ - { - "name": "id", - "type": "string" - }, - { - "name": "location", - "description": "Location of console.profileEnd().", - "$ref": "Debugger.Location" - }, - { - "name": "profile", - "$ref": "Profile" - }, - { - "name": "title", - "description": "Profile title passed as an argument to console.profile().", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "consoleProfileStarted", - "description": "Sent when new profile recording is started using console.profile() call.", - "parameters": [ - { - "name": "id", - "type": "string" - }, - { - "name": "location", - "description": "Location of console.profile().", - "$ref": "Debugger.Location" - }, - { - "name": "title", - "description": "Profile title passed as an argument to console.profile().", - "optional": true, - "type": "string" - } - ] - } - ] - }, - { - "domain": "Runtime", - "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects.\nEvaluation results are returned as mirror object that expose object type, string representation\nand unique identifier that can be used for further object reference. Original objects are\nmaintained in memory unless they are either explicitly released or are released along with the\nother objects in their object group.", - "types": [ - { - "id": "ScriptId", - "description": "Unique script identifier.", - "type": "string" - }, - { - "id": "SerializationOptions", - "description": "Represents options for serialization. Overrides `generatePreview` and `returnByValue`.", - "type": "object", - "properties": [ - { - "name": "serialization", - "type": "string", - "enum": [ - "deep", - "json", - "idOnly" - ] - }, - { - "name": "maxDepth", - "description": "Deep serialization depth. Default is full depth. Respected only in `deep` serialization mode.", - "optional": true, - "type": "integer" - }, - { - "name": "additionalParameters", - "description": "Embedder-specific parameters. For example if connected to V8 in Chrome these control DOM\nserialization via `maxNodeDepth: integer` and `includeShadowTree: \"none\" | \"open\" | \"all\"`.\nValues can be only of type string or integer.", - "optional": true, - "type": "object" - } - ] - }, - { - "id": "DeepSerializedValue", - "description": "Represents deep serialized value.", - "type": "object", - "properties": [ - { - "name": "type", - "type": "string", - "enum": [ - "undefined", - "null", - "string", - "number", - "boolean", - "bigint", - "regexp", - "date", - "symbol", - "array", - "object", - "function", - "map", - "set", - "weakmap", - "weakset", - "error", - "proxy", - "promise", - "typedarray", - "arraybuffer", - "node", - "window", - "generator" - ] - }, - { - "name": "value", - "optional": true, - "type": "any" - }, - { - "name": "objectId", - "optional": true, - "type": "string" - }, - { - "name": "weakLocalObjectReference", - "description": "Set if value reference met more then once during serialization. In such\ncase, value is provided only to one of the serialized values. Unique\nper value in the scope of one CDP call.", - "optional": true, - "type": "integer" - } - ] - }, - { - "id": "RemoteObjectId", - "description": "Unique object identifier.", - "type": "string" - }, - { - "id": "UnserializableValue", - "description": "Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,\n`-Infinity`, and bigint literals.", - "type": "string" - }, - { - "id": "RemoteObject", - "description": "Mirror object referencing original JavaScript object.", - "type": "object", - "properties": [ - { - "name": "type", - "description": "Object type.", - "type": "string", - "enum": [ - "object", - "function", - "undefined", - "string", - "number", - "boolean", - "symbol", - "bigint" - ] - }, - { - "name": "subtype", - "description": "Object subtype hint. Specified for `object` type values only.\nNOTE: If you change anything here, make sure to also update\n`subtype` in `ObjectPreview` and `PropertyPreview` below.", - "optional": true, - "type": "string", - "enum": [ - "array", - "null", - "node", - "regexp", - "date", - "map", - "set", - "weakmap", - "weakset", - "iterator", - "generator", - "error", - "proxy", - "promise", - "typedarray", - "arraybuffer", - "dataview", - "webassemblymemory", - "wasmvalue" - ] - }, - { - "name": "className", - "description": "Object class (constructor) name. Specified for `object` type values only.", - "optional": true, - "type": "string" - }, - { - "name": "value", - "description": "Remote object value in case of primitive values or JSON values (if it was requested).", - "optional": true, - "type": "any" - }, - { - "name": "unserializableValue", - "description": "Primitive value which can not be JSON-stringified does not have `value`, but gets this\nproperty.", - "optional": true, - "$ref": "UnserializableValue" - }, - { - "name": "description", - "description": "String representation of the object.", - "optional": true, - "type": "string" - }, - { - "name": "deepSerializedValue", - "description": "Deep serialized value.", - "experimental": true, - "optional": true, - "$ref": "DeepSerializedValue" - }, - { - "name": "objectId", - "description": "Unique object identifier (for non-primitive values).", - "optional": true, - "$ref": "RemoteObjectId" - }, - { - "name": "preview", - "description": "Preview containing abbreviated property values. Specified for `object` type values only.", - "experimental": true, - "optional": true, - "$ref": "ObjectPreview" - }, - { - "name": "customPreview", - "experimental": true, - "optional": true, - "$ref": "CustomPreview" - } - ] - }, - { - "id": "PropertyDescriptor", - "description": "Object property descriptor.", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Property name or symbol description.", - "type": "string" - }, - { - "name": "value", - "description": "The value associated with the property.", - "optional": true, - "$ref": "RemoteObject" - }, - { - "name": "writable", - "description": "True if the value associated with the property may be changed (data descriptors only).", - "optional": true, - "type": "boolean" - }, - { - "name": "get", - "description": "A function which serves as a getter for the property, or `undefined` if there is no getter\n(accessor descriptors only).", - "optional": true, - "$ref": "RemoteObject" - }, - { - "name": "set", - "description": "A function which serves as a setter for the property, or `undefined` if there is no setter\n(accessor descriptors only).", - "optional": true, - "$ref": "RemoteObject" - }, - { - "name": "configurable", - "description": "True if the type of this property descriptor may be changed and if the property may be\ndeleted from the corresponding object.", - "type": "boolean" - }, - { - "name": "enumerable", - "description": "True if this property shows up during enumeration of the properties on the corresponding\nobject.", - "type": "boolean" - }, - { - "name": "wasThrown", - "description": "True if the result was thrown during the evaluation.", - "optional": true, - "type": "boolean" - }, - { - "name": "isOwn", - "description": "True if the property is owned for the object.", - "optional": true, - "type": "boolean" - }, - { - "name": "symbol", - "description": "Property symbol object, if the property is of the `symbol` type.", - "optional": true, - "$ref": "RemoteObject" - } - ] - }, - { - "id": "InternalPropertyDescriptor", - "description": "Object internal property descriptor. This property isn't normally visible in JavaScript code.", - "type": "object", - "properties": [ - { - "name": "name", - "description": "Conventional property name.", - "type": "string" - }, - { - "name": "value", - "description": "The value associated with the property.", - "optional": true, - "$ref": "RemoteObject" - } - ] - }, - { - "id": "CallArgument", - "description": "Represents function call argument. Either remote object id `objectId`, primitive `value`,\nunserializable primitive value or neither of (for undefined) them should be specified.", - "type": "object", - "properties": [ - { - "name": "value", - "description": "Primitive value or serializable javascript object.", - "optional": true, - "type": "any" - }, - { - "name": "unserializableValue", - "description": "Primitive value which can not be JSON-stringified.", - "optional": true, - "$ref": "UnserializableValue" - }, - { - "name": "objectId", - "description": "Remote object handle.", - "optional": true, - "$ref": "RemoteObjectId" - } - ] - }, - { - "id": "ExecutionContextId", - "description": "Id of an execution context.", - "type": "integer" - }, - { - "id": "ExecutionContextDescription", - "description": "Description of an isolated world.", - "type": "object", - "properties": [ - { - "name": "id", - "description": "Unique id of the execution context. It can be used to specify in which execution context\nscript evaluation should be performed.", - "$ref": "ExecutionContextId" - }, - { - "name": "origin", - "description": "Execution context origin.", - "type": "string" - }, - { - "name": "name", - "description": "Human readable name describing given context.", - "type": "string" - }, - { - "name": "uniqueId", - "description": "A system-unique execution context identifier. Unlike the id, this is unique across\nmultiple processes, so can be reliably used to identify specific context while backend\nperforms a cross-process navigation.", - "experimental": true, - "type": "string" - }, - { - "name": "auxData", - "description": "Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string}", - "optional": true, - "type": "object" - } - ] - }, - { - "id": "ExceptionDetails", - "description": "Detailed information about exception (or error) that was thrown during script compilation or\nexecution.", - "type": "object", - "properties": [ - { - "name": "exceptionId", - "description": "Exception id.", - "type": "integer" - }, - { - "name": "text", - "description": "Exception text, which should be used together with exception object when available.", - "type": "string" - }, - { - "name": "lineNumber", - "description": "Line number of the exception location (0-based).", - "type": "integer" - }, - { - "name": "columnNumber", - "description": "Column number of the exception location (0-based).", - "type": "integer" - }, - { - "name": "scriptId", - "description": "Script ID of the exception location.", - "optional": true, - "$ref": "ScriptId" - }, - { - "name": "url", - "description": "URL of the exception location, to be used when the script was not reported.", - "optional": true, - "type": "string" - }, - { - "name": "stackTrace", - "description": "JavaScript stack trace if available.", - "optional": true, - "$ref": "StackTrace" - }, - { - "name": "exception", - "description": "Exception object if available.", - "optional": true, - "$ref": "RemoteObject" - }, - { - "name": "executionContextId", - "description": "Identifier of the context where exception happened.", - "optional": true, - "$ref": "ExecutionContextId" - }, - { - "name": "exceptionMetaData", - "description": "Dictionary with entries of meta data that the client associated\nwith this exception, such as information about associated network\nrequests, etc.", - "experimental": true, - "optional": true, - "type": "object" - } - ] - }, - { - "id": "Timestamp", - "description": "Number of milliseconds since epoch.", - "type": "number" - }, - { - "id": "TimeDelta", - "description": "Number of milliseconds.", - "type": "number" - }, - { - "id": "CallFrame", - "description": "Stack entry for runtime errors and assertions.", - "type": "object", - "properties": [ - { - "name": "functionName", - "description": "JavaScript function name.", - "type": "string" - }, - { - "name": "scriptId", - "description": "JavaScript script id.", - "$ref": "ScriptId" - }, - { - "name": "url", - "description": "JavaScript script name or url.", - "type": "string" - }, - { - "name": "lineNumber", - "description": "JavaScript script line number (0-based).", - "type": "integer" - }, - { - "name": "columnNumber", - "description": "JavaScript script column number (0-based).", - "type": "integer" - } - ] - }, - { - "id": "StackTrace", - "description": "Call frames for assertions or error messages.", - "type": "object", - "properties": [ - { - "name": "description", - "description": "String label of this stack trace. For async traces this may be a name of the function that\ninitiated the async call.", - "optional": true, - "type": "string" - }, - { - "name": "callFrames", - "description": "JavaScript function name.", - "type": "array", - "items": { - "$ref": "CallFrame" - } - }, - { - "name": "parent", - "description": "Asynchronous JavaScript stack trace that preceded this stack, if available.", - "optional": true, - "$ref": "StackTrace" - }, - { - "name": "parentId", - "description": "Asynchronous JavaScript stack trace that preceded this stack, if available.", - "experimental": true, - "optional": true, - "$ref": "StackTraceId" - } - ] - } - ], - "commands": [ - { - "name": "awaitPromise", - "description": "Add handler to promise with given promise object id.", - "parameters": [ - { - "name": "promiseObjectId", - "description": "Identifier of the promise.", - "$ref": "RemoteObjectId" - }, - { - "name": "returnByValue", - "description": "Whether the result is expected to be a JSON object that should be sent by value.", - "optional": true, - "type": "boolean" - }, - { - "name": "generatePreview", - "description": "Whether preview should be generated for the result.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "result", - "description": "Promise result. Will contain rejected value if promise was rejected.", - "$ref": "RemoteObject" - }, - { - "name": "exceptionDetails", - "description": "Exception details if stack strace is available.", - "optional": true, - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "callFunctionOn", - "description": "Calls function with given declaration on the given object. Object group of the result is\ninherited from the target object.", - "parameters": [ - { - "name": "functionDeclaration", - "description": "Declaration of the function to call.", - "type": "string" - }, - { - "name": "objectId", - "description": "Identifier of the object to call function on. Either objectId or executionContextId should\nbe specified.", - "optional": true, - "$ref": "RemoteObjectId" - }, - { - "name": "arguments", - "description": "Call arguments. All call arguments must belong to the same JavaScript world as the target\nobject.", - "optional": true, - "type": "array", - "items": { - "$ref": "CallArgument" - } - }, - { - "name": "silent", - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause\nexecution. Overrides `setPauseOnException` state.", - "optional": true, - "type": "boolean" - }, - { - "name": "returnByValue", - "description": "Whether the result is expected to be a JSON object which should be sent by value.\nCan be overriden by `serializationOptions`.", - "optional": true, - "type": "boolean" - }, - { - "name": "generatePreview", - "description": "Whether preview should be generated for the result.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "userGesture", - "description": "Whether execution should be treated as initiated by user in the UI.", - "optional": true, - "type": "boolean" - }, - { - "name": "awaitPromise", - "description": "Whether execution should `await` for resulting value and return once awaited promise is\nresolved.", - "optional": true, - "type": "boolean" - }, - { - "name": "executionContextId", - "description": "Specifies execution context which global object will be used to call function on. Either\nexecutionContextId or objectId should be specified.", - "optional": true, - "$ref": "ExecutionContextId" - }, - { - "name": "objectGroup", - "description": "Symbolic group name that can be used to release multiple objects. If objectGroup is not\nspecified and objectId is, objectGroup will be inherited from object.", - "optional": true, - "type": "string" - }, - { - "name": "throwOnSideEffect", - "description": "Whether to throw an exception if side effect cannot be ruled out during evaluation.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "uniqueContextId", - "description": "An alternative way to specify the execution context to call function on.\nCompared to contextId that may be reused across processes, this is guaranteed to be\nsystem-unique, so it can be used to prevent accidental function call\nin context different than intended (e.g. as a result of navigation across process\nboundaries).\nThis is mutually exclusive with `executionContextId`.", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "serializationOptions", - "description": "Specifies the result serialization. If provided, overrides\n`generatePreview` and `returnByValue`.", - "experimental": true, - "optional": true, - "$ref": "SerializationOptions" - } - ], - "returns": [ - { - "name": "result", - "description": "Call result.", - "$ref": "RemoteObject" - }, - { - "name": "exceptionDetails", - "description": "Exception details.", - "optional": true, - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "compileScript", - "description": "Compiles expression.", - "parameters": [ - { - "name": "expression", - "description": "Expression to compile.", - "type": "string" - }, - { - "name": "sourceURL", - "description": "Source url to be set for the script.", - "type": "string" - }, - { - "name": "persistScript", - "description": "Specifies whether the compiled script should be persisted.", - "type": "boolean" - }, - { - "name": "executionContextId", - "description": "Specifies in which execution context to perform script run. If the parameter is omitted the\nevaluation will be performed in the context of the inspected page.", - "optional": true, - "$ref": "ExecutionContextId" - } - ], - "returns": [ - { - "name": "scriptId", - "description": "Id of the script.", - "optional": true, - "$ref": "ScriptId" - }, - { - "name": "exceptionDetails", - "description": "Exception details.", - "optional": true, - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "disable", - "description": "Disables reporting of execution contexts creation." - }, - { - "name": "discardConsoleEntries", - "description": "Discards collected exceptions and console API calls." - }, - { - "name": "enable", - "description": "Enables reporting of execution contexts creation by means of `executionContextCreated` event.\nWhen the reporting gets enabled the event will be sent immediately for each existing execution\ncontext." - }, - { - "name": "evaluate", - "description": "Evaluates expression on global object.", - "parameters": [ - { - "name": "expression", - "description": "Expression to evaluate.", - "type": "string" - }, - { - "name": "objectGroup", - "description": "Symbolic group name that can be used to release multiple objects.", - "optional": true, - "type": "string" - }, - { - "name": "includeCommandLineAPI", - "description": "Determines whether Command Line API should be available during the evaluation.", - "optional": true, - "type": "boolean" - }, - { - "name": "silent", - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause\nexecution. Overrides `setPauseOnException` state.", - "optional": true, - "type": "boolean" - }, - { - "name": "contextId", - "description": "Specifies in which execution context to perform evaluation. If the parameter is omitted the\nevaluation will be performed in the context of the inspected page.\nThis is mutually exclusive with `uniqueContextId`, which offers an\nalternative way to identify the execution context that is more reliable\nin a multi-process environment.", - "optional": true, - "$ref": "ExecutionContextId" - }, - { - "name": "returnByValue", - "description": "Whether the result is expected to be a JSON object that should be sent by value.", - "optional": true, - "type": "boolean" - }, - { - "name": "generatePreview", - "description": "Whether preview should be generated for the result.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "userGesture", - "description": "Whether execution should be treated as initiated by user in the UI.", - "optional": true, - "type": "boolean" - }, - { - "name": "awaitPromise", - "description": "Whether execution should `await` for resulting value and return once awaited promise is\nresolved.", - "optional": true, - "type": "boolean" - }, - { - "name": "throwOnSideEffect", - "description": "Whether to throw an exception if side effect cannot be ruled out during evaluation.\nThis implies `disableBreaks` below.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "timeout", - "description": "Terminate execution after timing out (number of milliseconds).", - "experimental": true, - "optional": true, - "$ref": "TimeDelta" - }, - { - "name": "disableBreaks", - "description": "Disable breakpoints during execution.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "replMode", - "description": "Setting this flag to true enables `let` re-declaration and top-level `await`.\nNote that `let` variables can only be re-declared if they originate from\n`replMode` themselves.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "allowUnsafeEvalBlockedByCSP", - "description": "The Content Security Policy (CSP) for the target might block 'unsafe-eval'\nwhich includes eval(), Function(), setTimeout() and setInterval()\nwhen called with non-callable arguments. This flag bypasses CSP for this\nevaluation and allows unsafe-eval. Defaults to true.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "uniqueContextId", - "description": "An alternative way to specify the execution context to evaluate in.\nCompared to contextId that may be reused across processes, this is guaranteed to be\nsystem-unique, so it can be used to prevent accidental evaluation of the expression\nin context different than intended (e.g. as a result of navigation across process\nboundaries).\nThis is mutually exclusive with `contextId`.", - "experimental": true, - "optional": true, - "type": "string" - }, - { - "name": "serializationOptions", - "description": "Specifies the result serialization. If provided, overrides\n`generatePreview` and `returnByValue`.", - "experimental": true, - "optional": true, - "$ref": "SerializationOptions" - } - ], - "returns": [ - { - "name": "result", - "description": "Evaluation result.", - "$ref": "RemoteObject" - }, - { - "name": "exceptionDetails", - "description": "Exception details.", - "optional": true, - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "getProperties", - "description": "Returns properties of a given object. Object group of the result is inherited from the target\nobject.", - "parameters": [ - { - "name": "objectId", - "description": "Identifier of the object to return properties for.", - "$ref": "RemoteObjectId" - }, - { - "name": "ownProperties", - "description": "If true, returns properties belonging only to the element itself, not to its prototype\nchain.", - "optional": true, - "type": "boolean" - }, - { - "name": "accessorPropertiesOnly", - "description": "If true, returns accessor properties (with getter/setter) only; internal properties are not\nreturned either.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "generatePreview", - "description": "Whether preview should be generated for the results.", - "experimental": true, - "optional": true, - "type": "boolean" - }, - { - "name": "nonIndexedPropertiesOnly", - "description": "If true, returns non-indexed properties only.", - "experimental": true, - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "result", - "description": "Object properties.", - "type": "array", - "items": { - "$ref": "PropertyDescriptor" - } - }, - { - "name": "internalProperties", - "description": "Internal object properties (only of the element itself).", - "optional": true, - "type": "array", - "items": { - "$ref": "InternalPropertyDescriptor" - } - }, - { - "name": "privateProperties", - "description": "Object private properties.", - "experimental": true, - "optional": true, - "type": "array", - "items": { - "$ref": "PrivatePropertyDescriptor" - } - }, - { - "name": "exceptionDetails", - "description": "Exception details.", - "optional": true, - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "globalLexicalScopeNames", - "description": "Returns all let, const and class variables from global scope.", - "parameters": [ - { - "name": "executionContextId", - "description": "Specifies in which execution context to lookup global scope variables.", - "optional": true, - "$ref": "ExecutionContextId" - } - ], - "returns": [ - { - "name": "names", - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - { - "name": "queryObjects", - "parameters": [ - { - "name": "prototypeObjectId", - "description": "Identifier of the prototype to return objects for.", - "$ref": "RemoteObjectId" - }, - { - "name": "objectGroup", - "description": "Symbolic group name that can be used to release the results.", - "optional": true, - "type": "string" - } - ], - "returns": [ - { - "name": "objects", - "description": "Array with objects.", - "$ref": "RemoteObject" - } - ] - }, - { - "name": "releaseObject", - "description": "Releases remote object with given id.", - "parameters": [ - { - "name": "objectId", - "description": "Identifier of the object to release.", - "$ref": "RemoteObjectId" - } - ] - }, - { - "name": "releaseObjectGroup", - "description": "Releases all remote objects that belong to a given group.", - "parameters": [ - { - "name": "objectGroup", - "description": "Symbolic object group name.", - "type": "string" - } - ] - }, - { - "name": "runIfWaitingForDebugger", - "description": "Tells inspected instance to run if it was waiting for debugger to attach." - }, - { - "name": "runScript", - "description": "Runs script with given id in a given context.", - "parameters": [ - { - "name": "scriptId", - "description": "Id of the script to run.", - "$ref": "ScriptId" - }, - { - "name": "executionContextId", - "description": "Specifies in which execution context to perform script run. If the parameter is omitted the\nevaluation will be performed in the context of the inspected page.", - "optional": true, - "$ref": "ExecutionContextId" - }, - { - "name": "objectGroup", - "description": "Symbolic group name that can be used to release multiple objects.", - "optional": true, - "type": "string" - }, - { - "name": "silent", - "description": "In silent mode exceptions thrown during evaluation are not reported and do not pause\nexecution. Overrides `setPauseOnException` state.", - "optional": true, - "type": "boolean" - }, - { - "name": "includeCommandLineAPI", - "description": "Determines whether Command Line API should be available during the evaluation.", - "optional": true, - "type": "boolean" - }, - { - "name": "returnByValue", - "description": "Whether the result is expected to be a JSON object which should be sent by value.", - "optional": true, - "type": "boolean" - }, - { - "name": "generatePreview", - "description": "Whether preview should be generated for the result.", - "optional": true, - "type": "boolean" - }, - { - "name": "awaitPromise", - "description": "Whether execution should `await` for resulting value and return once awaited promise is\nresolved.", - "optional": true, - "type": "boolean" - } - ], - "returns": [ - { - "name": "result", - "description": "Run result.", - "$ref": "RemoteObject" - }, - { - "name": "exceptionDetails", - "description": "Exception details.", - "optional": true, - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "setAsyncCallStackDepth", - "description": "Enables or disables async call stacks tracking.", - "redirect": "Debugger", - "parameters": [ - { - "name": "maxDepth", - "description": "Maximum depth of async call stacks. Setting to `0` will effectively disable collecting async\ncall stacks (default).", - "type": "integer" - } - ] - }, - { - "name": "addBinding", - "description": "If executionContextId is empty, adds binding with the given name on the\nglobal objects of all inspected contexts, including those created later,\nbindings survive reloads.\nBinding function takes exactly one argument, this argument should be string,\nin case of any other input, function throws an exception.\nEach binding function call produces Runtime.bindingCalled notification.", - "parameters": [ - { - "name": "name", - "type": "string" - }, - { - "name": "executionContextId", - "description": "If specified, the binding would only be exposed to the specified\nexecution context. If omitted and `executionContextName` is not set,\nthe binding is exposed to all execution contexts of the target.\nThis parameter is mutually exclusive with `executionContextName`.\nDeprecated in favor of `executionContextName` due to an unclear use case\nand bugs in implementation (crbug.com/1169639). `executionContextId` will be\nremoved in the future.", - "experimental": true, - "deprecated": true, - "optional": true, - "$ref": "ExecutionContextId" - }, - { - "name": "executionContextName", - "description": "If specified, the binding is exposed to the executionContext with\nmatching name, even for contexts created after the binding is added.\nSee also `ExecutionContext.name` and `worldName` parameter to\n`Page.addScriptToEvaluateOnNewDocument`.\nThis parameter is mutually exclusive with `executionContextId`.", - "optional": true, - "type": "string" - } - ] - }, - { - "name": "removeBinding", - "description": "This method does not remove binding function from global object but\nunsubscribes current runtime agent from Runtime.bindingCalled notifications.", - "parameters": [ - { - "name": "name", - "type": "string" - } - ] - } - ], - "events": [ - { - "name": "consoleAPICalled", - "description": "Issued when console API was called.", - "parameters": [ - { - "name": "type", - "description": "Type of the call.", - "type": "string", - "enum": [ - "log", - "debug", - "info", - "error", - "warning", - "dir", - "dirxml", - "table", - "trace", - "clear", - "startGroup", - "startGroupCollapsed", - "endGroup", - "assert", - "profile", - "profileEnd", - "count", - "timeEnd" - ] - }, - { - "name": "args", - "description": "Call arguments.", - "type": "array", - "items": { - "$ref": "RemoteObject" - } - }, - { - "name": "executionContextId", - "description": "Identifier of the context where the call was made.", - "$ref": "ExecutionContextId" - }, - { - "name": "timestamp", - "description": "Call timestamp.", - "$ref": "Timestamp" - }, - { - "name": "stackTrace", - "description": "Stack trace captured when the call was made. The async stack chain is automatically reported for\nthe following call types: `assert`, `error`, `trace`, `warning`. For other types the async call\nchain can be retrieved using `Debugger.getStackTrace` and `stackTrace.parentId` field.", - "optional": true, - "$ref": "StackTrace" - }, - { - "name": "context", - "description": "Console context descriptor for calls on non-default console context (not console.*):\n'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call\non named context.", - "experimental": true, - "optional": true, - "type": "string" - } - ] - }, - { - "name": "exceptionRevoked", - "description": "Issued when unhandled exception was revoked.", - "parameters": [ - { - "name": "reason", - "description": "Reason describing why exception was revoked.", - "type": "string" - }, - { - "name": "exceptionId", - "description": "The id of revoked exception, as reported in `exceptionThrown`.", - "type": "integer" - } - ] - }, - { - "name": "exceptionThrown", - "description": "Issued when exception was thrown and unhandled.", - "parameters": [ - { - "name": "timestamp", - "description": "Timestamp of the exception.", - "$ref": "Timestamp" - }, - { - "name": "exceptionDetails", - "$ref": "ExceptionDetails" - } - ] - }, - { - "name": "executionContextCreated", - "description": "Issued when new execution context is created.", - "parameters": [ - { - "name": "context", - "description": "A newly created execution context.", - "$ref": "ExecutionContextDescription" - } - ] - }, - { - "name": "executionContextDestroyed", - "description": "Issued when execution context is destroyed.", - "parameters": [ - { - "name": "executionContextId", - "description": "Id of the destroyed context", - "deprecated": true, - "$ref": "ExecutionContextId" - }, - { - "name": "executionContextUniqueId", - "description": "Unique Id of the destroyed context", - "experimental": true, - "type": "string" - } - ] - }, - { - "name": "executionContextsCleared", - "description": "Issued when all executionContexts were cleared in browser" - }, - { - "name": "inspectRequested", - "description": "Issued when object should be inspected (for example, as a result of inspect() command line API\ncall).", - "parameters": [ - { - "name": "object", - "$ref": "RemoteObject" - }, - { - "name": "hints", - "type": "object" - }, - { - "name": "executionContextId", - "description": "Identifier of the context where the call was made.", - "experimental": true, - "optional": true, - "$ref": "ExecutionContextId" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/pages/_data/versions.json b/pages/_data/versions.json deleted file mode 100644 index bc9059bf58..0000000000 --- a/pages/_data/versions.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "slug": "tot", - "name": "latest (tip-of-tree)" - }, - { - "slug": "1-2", - "name": "stable (1.2)" - }, - { - "slug": "1-3", - "name": "stable RC (1.3)" - }, - { - "slug": "v8", - "name": "v8-inspector (node)" - } -] diff --git a/pages/_includes/shell.hbs b/pages/_includes/shell.hbs deleted file mode 100644 index a357c82d6a..0000000000 --- a/pages/_includes/shell.hbs +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - {{#if domain}} - - {{else}} - - {{/if}} - - {{#if domain}} - {{{title}}} - {{{domain.domain}}} domain - {{else}} - {{{title}}} - {{/if}} - - - - - - - - {{#if domain}} - - {{else}} - - {{/if}} - - - - - - - -
-
-

Chrome DevTools Protocol

- - -
-
-
- {{{content}}} -
-
-
- - - diff --git a/pages/domainGenerator.js b/pages/domainGenerator.js deleted file mode 100644 index 9a7dc9490d..0000000000 --- a/pages/domainGenerator.js +++ /dev/null @@ -1,268 +0,0 @@ -import { marked } from 'marked'; - -const html = String.raw; - -const computeHash = (typeName, name, id) => { - const typeReference = typeName.toLowerCase().substr(0, typeName.length - 1); - return `${typeReference}-${name || id}`; -} - -// Thx aslushnikov! -const itemSort = (a, b) => { - if (a.experimental !== b.experimental) return a.experimental ? 1 : -1; - if (a.deprecated !== b.deprecated) return a.deprecated ? 1 : -1; - if (a.optional !== b.optional) return a.optional ? 1 : -1; - return (a.name || a.id).localeCompare(b.name || b.id); -}; - -// This handles a few weird cases of raw HTML or over-escaping in the protocol JSON -function parseSafeMarkdown(mdText) { - // Inline codeblocks to doublecheck: IO.StreamHandle, - // Preload.PreloadingAttemptSource, Preload.RuleSet > backendNodeId, - // Accessibility.AXValueSource > nativeSource. - // Replace LINT comments with an empty string. - mdText = mdText.replaceAll('<', '<').replaceAll('>', '>').replaceAll(/^LINT\..*$\n/gm, ''); - const html = marked(mdText, {escape: true}); - return html.replaceAll('&lt;', '<').replaceAll('&gt;', '>'); -} - -export class DomainGenerator { - constructor(version) { - this.version = version; - } - - data() { - const version = this.version; - const versionPart = version === 'tot' ? '' : ` - version ${version}`; - const title = `Chrome DevTools Protocol${versionPart}` - return { - layout: 'shell.hbs', - title, - version, - shadow: 'domain', - pagination: { - data: `${version}.domains`, - size: 1, - alias: 'domain', - }, - permalink(data) { - return `${version}/${data.domain.domain}/index.html`; - }, - } - } - render(data) { - return this.domainTemplate(data.pagination.items[0]); - } - - descriptionTemplate(description, item) { - // Some descriptions use markdown. eg. Page.printToPDF - // Some params have an emum: e.g. Debugger.continueToLocation - return html` -
- ${description ? parseSafeMarkdown(description) : ''} - ${item ? this.enumDetails(item) : ''} -
- `; - } - - statusTemplate(experimental, deprecated) { - let output = ''; - if (experimental) { - output += html`Experimental` - } - if (deprecated) { - output += html`Deprecated` - } - return output; - } - - nameIncludingDomainTemplate(domain, name) { - return html`${domain}.${name}`; - } - - domainTocTemplate(typeName, domain, items) { - if (!items) { - return ''; - } - - let output = html`

${typeName}

`; - for (const {experimental, deprecated, name, id} of items) { - output += html` - - `; - } - return output; - } - - computeReferral(item) { - if (item.type) { - return (item.items && item.items['$ref']) || ''; - } - return item['$ref']; - } - - computeReferralUrl(domain, referral) { - // Referral points to a different domain - if (referral.indexOf('.') !== -1) { - return this.url(`/${this.version}/${referral.replace('.', '/#type-')}`); - } - return this.url(`/${this.version}/${domain}/#type-${referral}`); - } - - propertiesType(domain, item) { - const {type} = item; - const referral = this.computeReferral(item); - - if (type) { - const arrayDetails = _ => { - if (type !== 'array') return ''; - return html`[ ${this.propertiesType(domain, item.items)} ]`; - } - return html`${type}${arrayDetails()}`; - } - if (referral) { - return html`${referral}` - } - return ''; - } - - propertyTemplate(domain, items) { - let properties = ''; - - for (const item of items) { - const {name, description, experimental, deprecated, optional} = item; - properties += html` -
- ${name} -
-
- ${this.propertiesType(domain, item)} - ${this.descriptionTemplate(description, item)} - ${this.statusTemplate(experimental, deprecated)} -
- `; - } - - return properties; - } - - propertiesDetailsTemplate(domain, details) { - let name = ''; - let items = undefined; - if (details.parameters) { - name = 'parameters'; - items = details.parameters; - } - if (details.properties) { - name = 'properties'; - items = details.properties; - } - if (!name) { - return ''; - } - - return html` -
${name}
-
- ${this.propertyTemplate(domain, items)} -
- `; - } - - returnDetailsTemplate(domain, details) { - const {returns, name} = details; - if (!returns || !returns.length) { - return ''; - } - - return html` -
Return Object
-
- ${this.propertyTemplate(domain, returns)} -
- `; - } - - enumDetails(details) { - const {enum: enumValues} = details; - if (!enumValues || !enumValues.length) { - return ''; - } - - const enumItems = enumValues.map(e => html`${e}`); - return html` -
Allowed Values: ${enumItems.join(', ')}
- `; - } - - detailsTemplate(typeName, domain, details) { - const {name, description, id, type, experimental, deprecated} = details; - const computedId = computeHash(typeName, name, id); - const actualName = name || id; - - return html` -
-

- ${this.nameIncludingDomainTemplate(domain, actualName)} - ${this.statusTemplate(experimental, deprecated)} - -

- ${this.descriptionTemplate(description, details)} - ${type - ? html`

Type: ${type}

` - : '' - } - ${this.propertiesDetailsTemplate(domain, details)} - ${this.returnDetailsTemplate(domain, details)} -
- `; - } - - detailsSection(name, domain, items) { - if (!items || items.length === 0) { - return ''; - } - - let details = ''; - for (const item of items) { - details += this.detailsTemplate(name, domain, item); - } - - return html` -

${name}

-
- ${details} -
- `; - } - - domainTemplate({domain, description, experimental, deprecated, commands, events, types}) { - - commands && commands.sort(itemSort); - events && events.sort(itemSort); - types && types.sort(itemSort); - - return html` -
- - - ${this.detailsSection('Methods', domain, commands)} - ${this.detailsSection('Events', domain, events)} - ${this.detailsSection('Types', domain, types)} -
- `; - } -} diff --git a/pages/index.md b/pages/index.md deleted file mode 100644 index a4cdd783cb..0000000000 --- a/pages/index.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -layout: shell.hbs -title: Chrome DevTools Protocol -version: tot ---- - -

The Chrome DevTools Protocol allows for tools to instrument, inspect, debug and profile Chromium, Chrome and other Blink-based browsers. -Many existing projects currently use the protocol. -The Chrome DevTools uses this protocol and the team maintains its API. - -

Instrumentation is divided into a number of domains (DOM, Debugger, Network -etc.). Each domain defines a number of commands it supports and events it -generates. Both commands and events are serialized JSON objects of a fixed -structure. - -

Protocol API Docs

- -

The latest (tip-of-tree) protocol (tot) — -It changes frequently -and can break at any time. However it captures the full capabilities of the Protocol, whereas the stable release is a subset. -There is no backwards compatibility support guaranteed. - -

v8-inspector protocol (v8) — -Enables -debugging & profiling -of Node.js apps. - -

stable 1.3 protocol (1-3) — -The stable release of the protocol, tagged at Chrome 64. It includes a smaller subset of the complete protocol compatibilities. - -

Resources

- -

See Getting Started with CDP. The awesome-chrome-devtools page links to many of the tools in the protocol ecosystem, including protocol API libraries in JavaScript, TypeScript, Python, Java, and Go. - -

Consider subscribing to the chrome-debugging-protocol mailing list. - -

Using Protocol Monitor in Chrome DevTools

-

This is especially handy to understand how the DevTools frontend makes use of the protocol. -You can view all requests/responses and methods as they happen in the Protocol Monitor -panel in DevTools. - -

- - Screenshot of the Protocol Monitor - -
- -Click the gear icon in the top-right of the DevTools to open the Settings panel. -Select Experiments on the left of settings. Turn on "Protocol Monitor", then close and reopen DevTools. -Now click the ⋮ menu icon, choose More Tools and then select Protocol monitor. - -

You can also send commands using Protocol Monitor. If the command does not require any parameters, -type the command into the prompt at the bottom of the Protocol Monitor panel and press Enter, for example, -Page.captureScreenshot. If the command requires parameters, provide them as JSON, for example, -{"cmd":"Page.captureScreenshot","args":{"format": "jpeg"}}. - -

By clicking on the icon next to the command input (in Chrome 117+), you can open the command editor. After you select a CDP command, the editor creates a structured form based on the protocol definitions that allows you to edit parameters, and view their documentation and types. Send the commands by clicking on the send button or using Ctrl + Enter. Use the context menu in the list of previously sent commands to open one of them in the editor. - -

- - Screenshot of CDP Editor - -
- - -

Alternatively, you can execute commands from the DevTools console. First, open devtools-on-devtools, -then within the inner DevTools window, use Main.MainImpl.sendOverProtocol() in the console: - -

let Main = await import('./devtools-frontend/front_end/entrypoints/main/main.js'); // or './entrypoints/main/main.js' or './main/main.js' depending on the browser version
-await Main.MainImpl.sendOverProtocol('Emulation.setDeviceMetricsOverride', {
-  mobile: true,
-  width: 412,
-  height: 732,
-  deviceScaleFactor: 2.625,
-});
-
-const data = await Main.MainImpl.sendOverProtocol("Page.captureScreenshot");
- - -

DevTools protocol via Chrome extension

-

To allow chrome extensions to interact with the protocol, we introduced -chrome.debugger -extension API that exposes this JSON message -transport interface. As a result, you can not only attach to the remotely -running Chrome instance, but also instrument it from its own extension. - -

Chrome Debugger Extension API provides a higher level API where command -domain, name and body are provided explicitly in the sendCommand -call. This API hides request ids and handles binding of the request with its -response, hence allowing sendCommand to report result in the -callback function call. One can also use this API in combination with the other -Extension APIs. - -

If you are developing a Web-based IDE, you should implement an extension that -exposes debugging capabilities to your page and your IDE will be able to open -pages with the target application, set breakpoints there, evaluate expressions -in console, live edit JavaScript and CSS, display live DOM, network interaction -and any other aspect that Developer Tools is instrumenting today. - -

Opening embedded Developer Tools will terminate the -remote connection and thus detach the extension. - -

Frequently Asked Questions

- -

How is the protocol defined?

-

The canonical protocol definitions live in the Chromium source tree: -(browser_protocol.pdl -and js_protocol.pdl). -They are maintained manually by the DevTools engineering team. The declarative protocol definitions are used across tools; -for instance, a binding layer is created within Chromium for the Chrome DevTools to interact with, -and separately bindings generated for -Chrome Headless’s C++ interface. - -

Can I get the protocol as JSON?

- -

These canonical .pdl files are mirrored on GitHub in the devtools-protocol repo -where JSON versions, TypeScript definitions and closure typedefs are generated. It's published regularly to NPM. - -

Also, if you've set --remote-debugging-port=9222 with Chrome, the complete protocol version it speaks -is available at localhost:9222/json/protocol. - -

How do I access the browser target?

-

The endpoint is exposed as webSocketDebuggerUrl in /json/version. -Note the browser in the URL, rather than page. -If Chrome was launched with --remote-debugging-port=0 and chose an open port, -the browser endpoint is written to both stderr and the DevToolsActivePort file in browser profile folder. - -

Does the protocol support multiple simultaneous clients?

-

Chrome 63 introduced support for multiple clients. See -this article for details. - -

Upon disconnection, the outgoing client will receive a detached event. -For example: {"method":"Inspector.detached","params":{"reason":"replaced_with_devtools"}}. -View the enum of -possible reasons. -(For reference: the original patch). -After disconnection, some apps have chosen to pause their state and offer a reconnect button. - -

HTTP Endpoints

-

If started with a remote-debugging-port, these HTTP endpoints are available on the same port. -(Chromium implementation) - -

GET /json/version

-

Browser version metadata

-
-{
-    "Browser": "Chrome/72.0.3601.0",
-    "Protocol-Version": "1.3",
-    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3601.0 Safari/537.36",
-    "V8-Version": "7.2.233",
-    "WebKit-Version": "537.36 (@cfede9db1d154de0468cb0538479f34c0755a0f4)",
-    "webSocketDebuggerUrl": "ws://localhost:9222/devtools/browser/b0b8a4fb-bb17-4359-9533-a8d9f3908bd8"
-}
- -

GET /json or /json/list

-

A list of all available websocket targets. -

-[ {
-  "description": "",
-  "devtoolsFrontendUrl": "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/devtools/inspector.html?ws=localhost:9222/devtools/page/DAB7FB6187B554E10B0BD18821265734",
-  "id": "DAB7FB6187B554E10B0BD18821265734",
-  "title": "Yahoo",
-  "type": "page",
-  "url": "https://www.yahoo.com/",
-  "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/DAB7FB6187B554E10B0BD18821265734"
-} ]
- -

GET /json/protocol/

-

The current devtools protocol, as JSON: -

-{
-  "domains": [
-      {
-          "domain": "Accessibility",
-          "experimental": true,
-          "dependencies": [
-              "DOM"
-          ],
-          "types": [
-              {
-                  "id": "AXValueType",
-                  "description": "Enum of possible property types.",
-                  "type": "string",
-                  "enum": [
-                      "boolean",
-                      "tristate",
-// ...
- -

PUT /json/new?{url}

-

Opens a new tab. Responds with the websocket target data for the new tab. - -

GET /json/activate/{targetId}

-

Brings a page into the foreground (activate a tab). -

For valid targets, the response is 200: "Target activated". -If the target is invalid, the response is 404: "No such target id: {targetId}" -

GET /json/close/{targetId}

-

Closes the target page identified by targetId. -

For valid targets, the response is 200: "Target is closing". -If the target is invalid, the response is 404: "No such target id: {targetId}" - -

WebSocket /devtools/page/{targetId}

-

The WebSocket endpoint for the protocol. - -

GET /devtools/inspector.html

-

A copy of the DevTools frontend that ship with Chrome. diff --git a/pages/scripts/clipboard.js b/pages/scripts/clipboard.js deleted file mode 100644 index 9ddcf61bbd..0000000000 --- a/pages/scripts/clipboard.js +++ /dev/null @@ -1,59 +0,0 @@ - -// Single-clicking on the permalink hash copies the URL to the clipboard -// Double-clicking on the permalink hash will copy markdown -// [`Domain.method`](https://...) -for (const permalinkEl of document.querySelectorAll('.permalink')) { - const href = permalinkEl.href; - const textSlug = permalinkEl.dataset.slug; - const markdown = `[\`${textSlug}\`](${href})`; - const htmlStr = `${textSlug}`; - - permalinkEl.addEventListener('click', handleClicks); - permalinkEl.addEventListener('dblclick', handleClicks); - - function handleClicks(e) { - // No need to scroll - e.preventDefault(); - // Add hash back to url, but without pushState cuz it usually creates more problems - window.location.href = href; - - const textBlob = new Blob([e.type === 'dblclick' ? markdown : href], { type: 'text/plain' }); - const htmlBlob = new Blob([htmlStr], { type: 'text/html' }); - // text/markdown not supported. (for several reasons) - // …one being https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/clipboard/clipboard_writer.cc;l=307-318;drc=717a5ba32f0aba300c860d5bff7c87bbcff44afc - // const mdBlob = new Blob([markdown], { type: "text/markdown" }); - const cpItem = new ClipboardItem({ - [textBlob.type]: textBlob, - [htmlBlob.type]: htmlBlob, - }); - - navigator.clipboard.write([cpItem]) - .then(_ => { - const classNames = ['copied']; - if (e.type === 'dblclick') { - classNames.push('copied__md'); - } - // Show psuedo-element. rAF used to trigger animation reliably - permalinkEl.className = 'permalink'; - requestAnimationFrame(_ => { - requestAnimationFrame(_ => { - permalinkEl.classList.add(...classNames); - }); - }); - }) - // This can happen if the user denies clipboard permissions - .catch(err => console.error('Could not copy to clipboard: ', err)); - } -}; - -// Handle back-button navigations through hashes. (yes it does seem weird that this need to be done manually.......) -window.addEventListener("popstate", scrollToCurrentHash); -document.addEventListener("DOMContentLoaded", scrollToCurrentHash); -function scrollToCurrentHash(e) { - const u = new URL(location.href); - const hash = u.hash.slice(1); - if (!hash) return; - - const elem = document.querySelector(`#${hash}`); - elem.scrollIntoView({block: 'start'}); -} diff --git a/pages/scripts/cr-markdownish.js b/pages/scripts/cr-markdownish.js deleted file mode 100644 index bd36a10ed6..0000000000 --- a/pages/scripts/cr-markdownish.js +++ /dev/null @@ -1,136 +0,0 @@ -class CRMarkdownish extends HTMLElement { - connectedCallback() { - this.render(); - } - - static get observedAttributes() { - return ['markdown']; - } - - attributeChangedCallback(name, oldValue, newValue) { - this.render(); - } - - render() { - const markdown = this.getAttribute('markdown'); - - if (!markdown) { - this.innerHTML = ''; - return; - } - - // skip the work if we don't have markdown in it. - const hasMarkdown = /(\n-)|`/.test(markdown); - if (!hasMarkdown) { - this.innerHTML = markdown; - return; - } - - const text = this._escapeHtml(markdown); - let html = this._convertMarkdownLists(text); - html = this._convertMarkdownCodeBlocks(html); - this.innerHTML = html; - } - - /** - * @param {string} text - * @return {!string} - */ - _convertMarkdownLists(text) { - let inList = false; - let html = []; - - for (const line of text.split(/\n/)) { - if (inList && line === '') { - inList = false; - html.push(''); - continue; - } - if (line.startsWith('-')) { - if (!inList) html.push('

'); - - return html.join('\n'); - } - - /** - * @param {!string} text - * @return {!Element} - */ - _convertMarkdownCodeBlocks(text) { - const html = []; - const parts = text.split(/`(.*?)`/g); // Split on markdown code slashes - while (parts.length) { - // Pop off the same number of elements as there are capture groups. - const [preambleText, codeText] = parts.splice(0, 2); - html.push(preambleText); - if (codeText) { - html.push(`${codeText}`); - } - } - return html.join(''); - } - - /** - * Escape special characters in the given string of html. - * - * @param {string} string The string to escape for inserting into HTML - * @return {string} - * @see https://github.com/component/escape-html/ - */ - _escapeHtml(string) { - const matchHtmlRegExp = /["'&<>]/; - - var str = '' + string; - var match = matchHtmlRegExp.exec(str); - - if (!match) { - return str; - } - - var escape; - var html = ''; - var index = 0; - var lastIndex = 0; - - for (index = match.index; index < str.length; index++) { - switch (str.charCodeAt(index)) { - case 34: // " - escape = '"'; - break; - case 38: // & - escape = '&'; - break; - case 39: // ' - escape = '''; - break; - case 60: // < - escape = '<'; - break; - case 62: // > - escape = '>'; - break; - default: - continue; - } - - if (lastIndex !== index) { - html += str.substring(lastIndex, index); - } - - lastIndex = index + 1; - html += escape; - } - - return lastIndex !== index ? - html + str.substring(lastIndex, index) : - html; - } -}; -customElements.define('cr-markdownish', CRMarkdownish); diff --git a/pages/scripts/index.js b/pages/scripts/index.js deleted file mode 100644 index 5a8b4c1ed9..0000000000 --- a/pages/scripts/index.js +++ /dev/null @@ -1,365 +0,0 @@ -import {html, render} from 'lit-html'; -import './cr-markdownish.js'; -import './clipboard.js' - -/** - * A model managing keywords searches. - * TODO: remembers previous searches (localstorage?). - */ -class KeywordsModel { - constructor(index) { - this.index = index; - this.keys = Object.keys(index); - } - getMatches(searchString) { - if (!searchString) { - return []; - } - let str = searchString.toLowerCase(); - let useCache = false; - if (this.prevKey_) { - const occurredAt = str.indexOf(this.prevKey_); - // An occurance at 0 means the previous key is contained in the new - // search string. - // We don't handle the case where the search is exactly the same; - // we assume it cannot be the same because we're handling a 'change' - // event. This logic should be updated if ever not handled by a 'change' - // event. - if (occurredAt === 0) { - // Use the cached list of matching keys. - useCache = true; - } - } - let matches; - if (useCache) { - matches = this.prevMatches_.filter((key) => { - return key.indexOf(str) !== -1; - }); - } else { - const exactMatches = []; - const wildcardMatches = []; - this.keys.forEach((key) => { - let matchIndex = key.indexOf(str); - if (matchIndex === 0) { - exactMatches.push(key); - } else if (matchIndex !== -1) { - wildcardMatches.push(key); - } - }); - matches = exactMatches.concat(wildcardMatches); - } - - this.prevKey_ = str; - this.prevMatches_ = matches; - - return matches.map((key) => { - return this.index[key]; - }); - } -} - -const TYPE_ENUM = { - DOMAIN: '0', - EVENT: '1', - PARAM: '2', - TYPE: '3', - METHOD: '4' -}; - -const TYPE_LABEL_ENUM = { - '0': 'Domain', - '1': 'Event', - '2': 'Parameter', - '3': 'Type', - '4': 'Method' -}; - -const TYPE_ICON_ENUM = { - '0': '', - '1': 'image:wb-iridescent', - '2': 'icons:more-horiz', - '3': 'icons:code', - '4': 'icons:apps' -}; - -class CRSearchResults extends HTMLElement { - constructor(baseUrl) { - super(); - this.attachShadow({mode: 'open'}); - - this.baseUrl = baseUrl; - } - - set searchString(searchString) { - this.matches = this.keywordsModel.getMatches(searchString); - - render(html` - -
- ${this.matches.map((match) => { - const {keyword, pageReferences} = match; - const {type, description, href, domainHref} = pageReferences[0]; - - let fullUrl = this.baseUrl + domainHref; - - if (href) { - fullUrl += href; - } - - return html` - -
-
- ${keyword} - ${TYPE_LABEL_ENUM[type]} -
-
-
- -
-
- `; - })} -
- `, this.shadowRoot, { - host: this, - }); - } - - click(event) { - this.navigate(event.currentTarget); - } - - get results() { - return this.shadowRoot.querySelectorAll('a'); - } - - get selectedResult() { - return this.results[this._selected]; - } - - focusSelectedResult() { - if (this.selectedResult) { - this.selectedResult.classList.add('selected'); - this.selectedResult.scrollIntoView({block: 'center'}); - } - } - - focusDown() { - if (this._selected === undefined) { - this._selected = 0; - } else { - if (this.selectedResult) { - this.selectedResult.classList.remove('selected'); - } - this._selected = Math.min(this._selected + 1, this.matches.length - 1); - } - - this.focusSelectedResult(); - } - - focusUp() { - if (this._selected === undefined) { - return; - } - - if (this.selectedResult) { - this.selectedResult.classList.remove('selected'); - } - this._selected = Math.max(this._selected - 1, 0); - - this.focusSelectedResult(); - } - - select() { - if (this._selected === undefined || this.selectedResult === undefined) { - return; - } - - this.navigate(this.selectedResult); - } - - navigate(element) { - const oldURL = new URL(window.location.href); - const newURL = new URL(element.href); - window.location = newURL; - - if (oldURL.pathname === newURL.pathname) { - window.location.reload(true); - } - } -} -customElements.define('cr-search-results', CRSearchResults); - -customElements.define('cr-search-control', class extends HTMLElement { - constructor() { - super(); - this.attachShadow({mode: 'open'}); - - this.createMenu(); - } - - get baseUrl() { - return this.getAttribute('base-url'); - } - - get protocolSearchIndexUrl() { - return this.baseUrl + this.getAttribute('protocol-search-index'); - } - - get inputElement() { - return this.shadowRoot.querySelector('input'); - } - - createMenu() { - this.menuContainer = document.querySelector('main > section'); - this.menu = new CRSearchResults(this.baseUrl); - this.menu.addEventListener('navigation', () => { - this.menu.remove(); - this.inputElement.value = ''; - this.menuContainer.classList.remove('hidden'); - }); - - fetch(this.protocolSearchIndexUrl).then(response => { - return response.json(); - }).then(value => { - this.menu.keywordsModel = new KeywordsModel(value); - }); - } - - connectedCallback() { - render(html` - - - `, this.shadowRoot, { - host: this, - }); - } - - handleArrows(event) { - switch (event.code) { - case 'ArrowDown': - this.menu.focusDown(); - return; - case 'ArrowUp': - this.menu.focusUp(); - return; - case 'Enter': - event.preventDefault(); - this.menu.select(); - return; - } - - if (event.code === 'Escape') { - this.inputElement.value = ''; - this.inputElement.blur(); - } - - const textValue = this.inputElement.value; - - if (textValue === '') { - this.menu.replaceWith(this.menuContainer); - return; - } - - if (!this.menu.connected) { - this.menuContainer.replaceWith(this.menu); - } - - this.menu.searchString = textValue; - } -}); - -const menuNavigationButton = document.querySelector('.menu-link'); -const aside = document.querySelector('aside'); -const mainSection = document.querySelector('main'); -const asideCloseButton = document.querySelector('.aside-close-button'); - -document.addEventListener('keydown', (event) => { - // Make sure that copy-pasting works - if (event.metaKey || event.ctrlKey || event.altKey) { - return; - } - // One of `a-z` or `A-Z` - if (event.keyCode >= 65 && event.keyCode <= 90) { - document.querySelector('cr-search-control').inputElement.focus(); - } - // Escape key - if (event.key === 'Escape' && aside.classList.contains('shown')) { - aside.classList.remove('shown'); - } -}); - -menuNavigationButton.addEventListener('click', (event) => { - // Don't trigger the click event on the main section - event.stopPropagation(); - aside.addEventListener('transitionend', () => { - // Move focus into close button of drawer - asideCloseButton.focus(); - }, {once: true}); - aside.classList.add('shown'); -}); -function closeAside() { - if (!aside.classList.contains('shown')) { - return; - } - aside.classList.remove('shown'); - menuNavigationButton.focus(); -} -mainSection.addEventListener('click', closeAside); -asideCloseButton.addEventListener('click', closeAside); diff --git a/pages/service-worker.js b/pages/service-worker.js deleted file mode 100644 index 635404a349..0000000000 --- a/pages/service-worker.js +++ /dev/null @@ -1,16 +0,0 @@ -// thx @nekrtemplar -// https://github.com/NekR/self-destroying-sw - -self.addEventListener('install', function(e) { - self.skipWaiting(); -}); - -self.addEventListener('activate', function(e) { - self.registration.unregister() - .then(function() { - return self.clients.matchAll(); - }) - .then(function(clients) { - clients.forEach(client => client.navigate(client.url)) - }); -}); diff --git a/pages/styles/protocol.css b/pages/styles/protocol.css deleted file mode 100644 index bf92634894..0000000000 --- a/pages/styles/protocol.css +++ /dev/null @@ -1,416 +0,0 @@ -html, body { - padding: 0; - margin: 0; - height: 100%; - background-color: #fafafa; - - font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; - - --header-text-color: white; - /* Border used in the aside to mark different sections */ - --separation-border: 1px solid rgba(0, 0, 0, 0.14); - /* Material-like elevation shadow */ - --elevation-shadow: rgba(0, 0, 0, 0.14) 0px 2px 2px 0px, rgba(0, 0, 0, 0.12) 0px 1px 5px 0px, rgba(0, 0, 0, 0.2) 0px 3px 1px -2px; - - --home-icon: url('data:image/svg+xml;utf8,'); -} - -body { - display: flex; -} - -.monospace, code { - font-family: Consolas, Menlo, monospace; -} - -code { - color: #8E24AA; - font-size: 15px; - white-space: nowrap; -} - -a, .aside-close-button { - color: hsl(232, 50%, 45%); -} - -aside { - height: 100vh; - display: flex; - min-width: 200px; - flex-direction: column; - border-right: var(--separation-border); - -} - -nav { - background-color: white; -} - -.navs header { - font-size: 1.3em; - height: 2em; - display: flex; - justify-content: center; - align-items: center; - border-bottom: var(--separation-border); - color: #727272; - font-size: 16px; -} - -#domains { - display: flex; - flex-direction: column; - flex: 1; - /* - * Without this, the scroller won't properly compute its height and - * enforce that items in it are overflowing. - */ - min-height: 0; - - border-top: var(--separation-border); -} - -/* Scroller used to make sure that domains are overflowing with display flex */ -#domains .scroller { - flex: 1; - overflow-y: auto; -} - -#home a, .menu-link { - background-image: var(--home-icon); - background-repeat: no-repeat; - padding-left: 26px; - background-size: 14px 14px; - border-left: 0; - background-position: 6px; -} - -.navs a { - flex: 1; - font-weight: 400; - min-height: 32px; - padding: 0 16px; - border-left: 10px solid transparent; - display: flex; - align-items: center; - text-decoration: none; -} - -.navs a:hover { - background-color: hsl(0,0%, 96%); -} - -#domains nav a.experimental { - border-left: 10px solid #E5737399; -} - -#domains nav a.deprecated { - border-left: 10px solid #FFCC8099; -} - -#domains.version-tot nav a:not(.tot), -#domains.version-1-2 nav a:not([class~="1-2"]), -#domains.version-1-3 nav a:not([class~="1-3"]), -#domains.version-v8 nav a:not(.v8) { - display: none; -} - -main { - height: 100%; - display: flex; - flex-direction: column; - overflow-x: auto; - /* Make sure that if the content is too small, we still show the full header */ - flex-grow: 1; -} - -main, cr-search-results { - background-color: #fafafa; -} - -main > header { - background-color: #3f51b5; - color: var(--header-text-color); - justify-content: space-between; - align-items: center; -} - -main > header h1 { - --header-height: 26px; - font-size: var(--header-height); - line-height: var(--header-height); - padding-left: 10px; - display: inline-block; - font-weight: 400; -} - -main > header .menu-link { - color: var(--header-text-color); - background-color: inherit; - text-decoration: underline; - border: none; - display: none; - font-size: 1em; - margin-top: 20px; - /* - * Reset the background image, as we don't want it on this link, - * but we do want it on all others. - */ - background-image: none; -} - -/* When narrow, hide page title to avoid wrapping h1 + search */ -@media only screen and (max-width:825px) { - main > header h1 { - display:none; - } -} - -.aside-close-button { - display: none; -} - -/* hide sidenav on mobile */ -@media only screen and (max-width:640px) { - aside { - transform: translate(-200px, 0); - position: absolute; - width: 200px; - z-index: 1; - background: inherit; - visibility: hidden; - transition: cubic-bezier(0,0,0.32,1); - transition-duration: 200ms; - } - - aside.shown { - transform: none; - visibility: visible; - } - - .aside-close-button { - display: block; - font-size: 1em; - width: 48px; - } - - #home nav { - display: flex; - } - - main > header .menu-link { - display: inline-block; - } -} - -cr-search-control { - flex: 1; - margin: 14px 25px; - display: inline-block; -} - -main > section { - overflow-y: auto; - padding: 25px; - /* To make sure that the GitHub badge positions correctly */ - position: relative; - /* so scroll-anchors twoards the bottom of the page are positioned in the viewport correctly */ - padding-bottom: 80vh; -} -@media only screen and (max-width:640px) { - main > section { - padding: 25px 4vw; - } -} - -/* Make sure that code snippets don't overflow the full content container */ -pre { - overflow-x: auto; -} - -/* Make sure that images don't overflow the full content container */ -img { - max-width: 100%; - object-fit: scale-down; -} - -.gh-badge img { - float: right; - /* The image is a triangle facing the right */ - shape-outside: polygon(0 0, 150px 0, 150px 150px); - /* - * All content in the main section has a padding, but this - * image must be floated to the borders of the section. - */ - margin: -21px -15px; -} - -/* Limit content width and center it */ -.main-content-section { - max-width: 100ch; - margin: 0 auto; -} - -.main-content-section:not(.domain), -.domain-section > div { - padding: 5px 15px; - margin-bottom: 25px; - background-color: white; - box-shadow: var(--elevation-shadow); -} - -span.experimental, span.deprecated { - font-size: 70%; - text-transform: uppercase; - padding: 2px; - margin-right: 5px; - cursor: help; - vertical-align: baseline; - font-weight: normal; - font-family: inherit; -} - -span.experimental { - background-color: #ec8888; - color: #171616; - border: 1px solid transparent; -} - -span.deprecated { - background-color: #FFCC80; - color: black; - border: 1px solid #EF6C00; -} - -.domain-experimental span.experimental { - display: none; -} - -.domain-experimental .heading-domain span.experimental { - display: inline-block; -} - -.domain-experimental .heading-domain { - border: 1px solid #E57373; -} - -span.domain-dot { - color: #555555; -} - -.toc-link { - line-height: 1.1em; -} - -.details { - padding-bottom: 10px; - word-break: break-word; -} - -.details:not(:last-child) { - border-bottom: var(--separation-border); -} - -.details .permalink { - opacity: 0; -} - -.details:hover .permalink, .details .permalink:focus { - opacity: 1; -} - -.details .permalink.copied::after { - content: "Copied URL!"; - background-color: #E0E0E0; - color: initial; - display: inline-block; - text-decoration: none; - margin-left: 6px; - font-size: 70%; - padding: 1px 3px; - font-weight: normal; - animation: 1s fadeOut 1s forwards; -} -.details .permalink.copied__md::after{ - content: "Copied markdown!"; -} - -.details .properties-name { - color: #4c4b4b; - font-weight: 300; - text-transform: uppercase; - margin: 1rem 0 0; -} - -.properties-container { - display: grid; - grid-template-columns: repeat(1, 1fr 2fr); -} - -.properties-container dt { - flex: 1; - text-align: right; -} - -.properties-container dd { - flex: 2; - margin-left: 10px; -} - -.properties-container dt, .properties-container dd { - padding: 5px; -} - -.details-description { - display: inline; - font-size: 90%; -} - -.details-description p { - display: inline; -} - -.param-container:not(:last-child) { - margin-bottom: 10px; -} - -.optional::after { - content: "optional"; - opacity: .6; - font-size: 70%; - display: block; -} - -.param-type { - display: block; - font-weight: bold; -} - -.param-type__array { - font-weight: normal; -} - -.param-type .param-type__array .param-type { - display: inline; -} - -h4 { - /* use padding rather than margin for better positioning when viewing #method-navigate, etc. */ - margin-top: 0; - padding-top: 1.33em; -} - -h3 { - color: hsl(0, 0%, 47%); -} - -@media(max-width: 800px) { - .navs a { - min-height: 48px; - } -} - -@keyframes fadeOut { - 0% {opacity: 1} - 100% {opacity: 0} - } diff --git a/pages/tot.11ty.js b/pages/tot.11ty.js deleted file mode 100644 index 92a8ef03e9..0000000000 --- a/pages/tot.11ty.js +++ /dev/null @@ -1,7 +0,0 @@ -import {DomainGenerator} from './domainGenerator.js'; - -export default class extends DomainGenerator { - constructor() { - super('tot'); - } -} diff --git a/pages/tot.md b/pages/tot.md deleted file mode 100644 index 3e26f71257..0000000000 --- a/pages/tot.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: shell.hbs -title: Chrome DevTools Protocol - latest (tip-of-tree) -version: tot ---- -The **latest (tip-of-tree) protocol** changes -frequently and may break at any time. -However it captures the full capabilities of the Protocol, whereas the stable release is a subset. -There is no backwards compatibility support guaranteed for the capabilities it introduces. - -
Latest browser_protocol.json version updated:
-Date: 2026-09-04 04:40:14 +0000 - - -
Latest js_protocol.json version updated:
-Date: 2026-08-12 05:00:19 +0000 - diff --git a/pages/v8.11ty.js b/pages/v8.11ty.js deleted file mode 100644 index 0186ed4c9b..0000000000 --- a/pages/v8.11ty.js +++ /dev/null @@ -1,7 +0,0 @@ -import {DomainGenerator} from './domainGenerator.js'; - -export default class extends DomainGenerator { - constructor() { - super('v8'); - } -} diff --git a/pages/v8.md b/pages/v8.md deleted file mode 100644 index 513bb1c7f4..0000000000 --- a/pages/v8.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: shell.hbs -title: Chrome DevTools Protocol - v8-inspector (node) -version: v8 ---- -This is the protocol available with --inspect in node 6.3+. -See Debugging Node.js with Chrome DevTools -to understand the basics of using the DevTools with Node. This protocol allows any tool to connect to node to debug it. - -The protocol domains available expose all underlying methods that deliver the JavaScript functionality found in Chrome DevTools. -More on the debugging protocol. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000000..5095420481 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1006 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@types/node': + specifier: ^26.5.0 + version: 26.5.0 + devtools-protocol: + specifier: ^0.0.1693794 + version: 0.0.1693794 + oxfmt: + specifier: ^0.67.0 + version: 0.67.0 + oxlint: + specifier: ^1.82.0 + version: 1.82.0 + statikk: + specifier: ^3.1.0 + version: 3.1.0 + typescript: + specifier: ^7.0.2 + version: 7.0.2 + +packages: + + '@oxfmt/binding-android-arm-eabi@0.67.0': + resolution: {integrity: sha512-2olh3ioEmc4gRzQm7jxyB1b/PFBoFvTq8KdgYySeNpysDtA6DEg2Mvya4/I6flhL7G0eOrE8RD7JCNCIMhE16Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.67.0': + resolution: {integrity: sha512-ulfw8EHN1MBq/MFFDXw2/M1VAFu5mRUcnuZ8Hqbv9viAnFzO9t1jKSAsDqKYYDGMlytF/uj6Z5z5n/tHupnKhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.67.0': + resolution: {integrity: sha512-MfONZx/O2o9M5v2jDFol556G9+A+P9xCuJ4DZ+qhE+RnaCdoscy6Eu5nq1dbuNxhwdJyZ6kLI7fnG9mwEeOeGg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.67.0': + resolution: {integrity: sha512-CYnIx5LvFVJnyJcCqwH2jxMKjFjqo5678MPjdmNFoSGMhlOvZ/xRZqvhDcolKrXc8fezW3AKh+C4wyoFuWOSSg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.67.0': + resolution: {integrity: sha512-7/iF1orvIS9mxhKUqnmtMgm+OrSQ5acPwuvdQrm6ECgqbwPmC+Pw9cdke3sNfVN6pT2hbJ58+jP8BCThl5HXOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.67.0': + resolution: {integrity: sha512-yy+OGys07IZOpOmYPZoObKyUQLkfxeQqeCypk+1jaZd8HGo77hzvU1Jg8X3+W75o+9lszOjBfg0nkGtlwYywXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.67.0': + resolution: {integrity: sha512-wPIeeigXgJpwNw3wydYRt3U9iN9Y/ejpOZuYL9IA7igxWs7LIQMOkhKxTumRvy6dIv0iXKk3RTw3Vmjg0i+2sg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.67.0': + resolution: {integrity: sha512-0+XNxcdbkTfxdcD4qW6Ci9n+mBNJ8xTBumnxKvKBmRFOdx0Wf8/KiHjCJayooXmYkqRpRVd98Q5egvzx5BLSgQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-arm64-musl@0.67.0': + resolution: {integrity: sha512-I75LKPJyNOYUzkqAiAMIE31+Ye7xtQXZdoty1IXn4B+bw5Zpmez5wfG19ejGpNnS/BzQ7LFS+7jxuTPb+vHiZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-ppc64-gnu@0.67.0': + resolution: {integrity: sha512-c2M5iRpe1QMZSRE/UvZoPdXBWb5Ic/ycvOyNiKCqPwQ/OyOKIMiJs02ynlNnjb7ZZJnRXYLmGcohoINOcwDK3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-gnu@0.67.0': + resolution: {integrity: sha512-dQzzYlV24Udhfm5ECuSdgqRvFJU/CGHzcYYEO3dLM6W6+CHiBFrq9OjIllkdCcPhsoSQ8o223Dja84MOSzed9A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-riscv64-musl@0.67.0': + resolution: {integrity: sha512-rFNq1CgX4qMJANOq42LkAs90JE80GpiaEohAV2qn/gT2hGjQTW1zBO5zQBxArI4926pM1OSzo3CN0tBszGBIaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-linux-s390x-gnu@0.67.0': + resolution: {integrity: sha512-Sky6rEdz2o5IGq01lPhS12yEvDdChVEcaYrcLHkveh4Fx0qPjljE/Iul6SX/bRMl6lNc8J7J/mDQdzgBdA++Pg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-gnu@0.67.0': + resolution: {integrity: sha512-vPXmlNORV8AZq2Ocxh07pxwMjfENUWCV/eZArnao0qC3NO/hDeTVkQvee7SJJUbIiF5PZbBa4kYmaXnu7Rk58w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxfmt/binding-linux-x64-musl@0.67.0': + resolution: {integrity: sha512-x/WAtFqYtVr3vZ9ni8nr4kn9whSitg8fOljq/pZzBpxopRdY1BMLZCZkrbIbaBcYkm46qGbqVea2FCWmtQ2P9w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxfmt/binding-openharmony-arm64@0.67.0': + resolution: {integrity: sha512-eRw9Neh4/aA6i+q/R3WU1gGQINhVM0J4fXIm6t27caOamkr/37uAkp1IdBx4zlJH97hmXR63z/q9n5c5dN7MzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.67.0': + resolution: {integrity: sha512-YIMvb+sGNYN2uc6+QK2HLPeEKM2vl7QZ5onQzpAJRb6pnf0DwUFP5R8tdS9R0l8hdUil2gu4Uxd0Yxrop0iT4w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.67.0': + resolution: {integrity: sha512-LzmU9MyACPzwNDIK0ItMedHPz735Ug7ELWguxo4/kuy6zWuDoeglOAEFCY8jLg0PzRpFO3hDyLFe2Gu2eFDeGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.67.0': + resolution: {integrity: sha512-sbQOIDNLUEeVZcAJcSL5VURn7kfjvilPviody4Yl5n8lQCDtUm+C9oHTTwZS/m4d/Z6Vv3jNEiAofH932NPPCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.82.0': + resolution: {integrity: sha512-a3LB+C5Dsj5b/qtmG/mv5WrzuiXEpg1KF5nXWcEvaoN5TYAqkIvxPOwTPp3Jy/FoGpRo8zsTFhMElMXfeoOEzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.82.0': + resolution: {integrity: sha512-OBlhRgNqFblGpGenno/aqOfJLOkQ2B8Ig3iDAalfn0H8hJGZKXPeexCRTDm6uwv6YUjSA9Xnwt1y/Bgj5ZH8uw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.82.0': + resolution: {integrity: sha512-dsopxqtY5ZdyT9uLHyGt1SyiLop6hi7hWI3PKpePodkRQOkLaCm+OE4fR9CAz9qdfjiFO8531tX/QDyP/psjFg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.82.0': + resolution: {integrity: sha512-94Lu0SgTClKColU66g1VDuigV3HkcbkJBnTtZjGYfE8UPugaWDgKrm2icjC6HJVUYler2OXaHP/X0TBy8+CowQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.82.0': + resolution: {integrity: sha512-hne/V06ewhh1i0w8+l7GDNROAGCGPmyFuOwiP7YTRu0JycyStJ4785dmF8xU5p0uUwt2emvIF9vc7Xjis+cJ0g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.82.0': + resolution: {integrity: sha512-aWY2xtbZf1LneW9Qsv/n2Sp8gOu74JrlQzEtj4coHX2SHFrCfhmAumaU+sI/A5nr+yoTRTSmI/pL2s6ADlNSkw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.82.0': + resolution: {integrity: sha512-Fe+TtXCXMh/5f7kWlZ2VAwsMumZWtraFlKVk1NJlL52/beGwfDE7ov+/8gVirHzWokzGu7X65hSPq0ucPDskWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.82.0': + resolution: {integrity: sha512-6azCZ6OJudlvipNttXCCQcyeFfcJ/NvUZdSN1z8elo73kCHtyQC7WTiUcSjWYvJ1jaq9KDUyMAoAS/vNzhBomA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-arm64-musl@1.82.0': + resolution: {integrity: sha512-PLEaSD8IAIIlwW4dwOd9YaxuxeOpwiXL4J24rcnE4iNtyM5j9Q9/3+gti08oXpx0u2ygNjRDx9xjWWpQonuJEw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-ppc64-gnu@1.82.0': + resolution: {integrity: sha512-D94em/BwknNTn4vqxjHh5wb2oL566eFhArabqKIr0cNZMHOJuiraFp1A8tXpH05bbE5tqwEfLXTI0MWEGtn3Dw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-gnu@1.82.0': + resolution: {integrity: sha512-MOprxBaoYU2D4VgxXCl3ghydThWtx7Um1lL51kGYNeQ5Al7WzsH7/tqGdNtbLrIWnjq3bsm13+nz/gRIxjrOXw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-riscv64-musl@1.82.0': + resolution: {integrity: sha512-5h55QsfJ/luDXZzC20k6SNOY1Az+dCP9WvntKtcUWh2JhckAdwApY2ZusaBTwLENnReXU+A2fJtSrYvZJNKNPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@oxlint/binding-linux-s390x-gnu@1.82.0': + resolution: {integrity: sha512-IE8NJNLlHr0CaXyGJPGVn0eTkUyoj1I2UfA8x7I4PSOYKsQ/6btVC7Pywrj5onk0cMH25r6Z38SoN3AvE5Zuog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-gnu@1.82.0': + resolution: {integrity: sha512-XUUUxaBo9XKl+J1B9EmP1cTGQPddzeURvoGkfwh/94PGnbW+hBprDljneoI2M1jzC1bzrIV3ihc7iM9UXl8+tg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@oxlint/binding-linux-x64-musl@1.82.0': + resolution: {integrity: sha512-SWLSFulX9TDuH6yvbPYp4+VNn6jkkIvvI+KiujDM5rWBRHEfkesCC/pCneIIUr6ovkxZ5fRtpi2v5Cz5FrMJZg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@oxlint/binding-openharmony-arm64@1.82.0': + resolution: {integrity: sha512-BQy35f6ZUdNr9a6c7B7orxQTcLjByGT2z3WAgmRovpRwmPYAaJ+NTplmMzhdjdJ4qSchfMNZy/Ukg+qRg6zseQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.82.0': + resolution: {integrity: sha512-V4QhSTg5gctZue8RJjsGi7NpQPThr/p1/HfmiMC5kfe1KFEup9SQRVub4A6kijQjdHfxj7bLL1KO3QO7/5bwMQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.82.0': + resolution: {integrity: sha512-TUSCLaKB2yktpFAJ/r3HAUYsaV/3DT7JS4iNKyoh3a9YNwD0UG7Ezh4D8m23654vQcU6P/RQrCAjRPKe4peP/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.82.0': + resolution: {integrity: sha512-VTVoRIWJTb+wvUX8EYoPArfFH02whuR10goFXE/LHRRX33ajRrFgqbcONXZMiF4C5rnattfkm87HqYn8jb8hmQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@types/node@26.5.0': + resolution: {integrity: sha512-dVSGpriSoCgz8WnDNTuSSuSv1PC/ALXihO4ulRZt7Md8k9mlbdin3lGOcDE8SnWOgf513ByWlXd7BK4azmyg/A==} + + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.1: + resolution: {integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==} + engines: {node: '>= 0.8.0'} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + devtools-protocol@0.0.1693794: + resolution: {integrity: sha512-DNKetxxc6finacohsKecb/1oD3z/PJYqlOnk8cG2pp6t9O3ET4Oz+W3SxBJkG/RFFBGRKfwdY0HEC6b7OdC2Nw==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} + + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.1.0: + resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==} + engines: {node: '>= 0.8'} + + oxfmt@0.67.0: + resolution: {integrity: sha512-vV7sSiPsaO0mSxdoUdayipVDFPzW/UQ+hrezEHa20+Tx1dnMdZLSRHMT0PdS67FFbhd74M1n08asW21aLGeCrA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + + oxlint@1.82.0: + resolution: {integrity: sha512-+iFM1BGw1ntYJt3QngbJmjbrGxPaKMUADOXOijpWGnYcBPq8YZnQftSS1C+pVcDYy9YxqDVJKQqQkTazTQMboQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=7.0.2001' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + range-parser@1.3.0: + resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} + engines: {node: '>= 0.6'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} + + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + statikk@3.1.0: + resolution: {integrity: sha512-iDuOK1WHM2L5hdJeYhRlvtGEK5PG1f9rJ/RXu0b9X0RmpLGtt9igFzcCcAFDLnio9dxgAWseGEZyfP6lar5IZw==} + engines: {node: '>=18'} + hasBin: true + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + tinypool@2.1.2: + resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} + engines: {node: ^20.0.0 || >=22.0.0} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + +snapshots: + + '@oxfmt/binding-android-arm-eabi@0.67.0': + optional: true + + '@oxfmt/binding-android-arm64@0.67.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.67.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.67.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.67.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.67.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.67.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.67.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.67.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.67.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.67.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.67.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.82.0': + optional: true + + '@oxlint/binding-android-arm64@1.82.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.82.0': + optional: true + + '@oxlint/binding-darwin-x64@1.82.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.82.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.82.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.82.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.82.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.82.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.82.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.82.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.82.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.82.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.82.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.82.0': + optional: true + + '@types/node@26.5.0': + dependencies: + undici-types: 8.9.0 + + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + bytes@3.1.2: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.1: + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + connect@3.7.0: + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + cors@2.8.6: + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + depd@2.0.0: {} + + devtools-protocol@0.0.1693794: {} + + ee-first@1.1.1: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + escape-html@1.0.3: {} + + etag@1.8.1: {} + + finalhandler@1.1.2: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + fresh@2.0.0: {} + + http-errors@2.0.1: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.2 + toidentifier: 1.0.1 + + inherits@2.0.4: {} + + mime-db@1.54.0: {} + + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + + ms@2.0.0: {} + + ms@2.1.3: {} + + negotiator@0.6.4: {} + + object-assign@4.1.1: {} + + on-finished@2.3.0: + dependencies: + ee-first: 1.1.1 + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.1.0: {} + + oxfmt@0.67.0: + dependencies: + tinypool: 2.1.2 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.67.0 + '@oxfmt/binding-android-arm64': 0.67.0 + '@oxfmt/binding-darwin-arm64': 0.67.0 + '@oxfmt/binding-darwin-x64': 0.67.0 + '@oxfmt/binding-freebsd-x64': 0.67.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.67.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.67.0 + '@oxfmt/binding-linux-arm64-gnu': 0.67.0 + '@oxfmt/binding-linux-arm64-musl': 0.67.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.67.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.67.0 + '@oxfmt/binding-linux-riscv64-musl': 0.67.0 + '@oxfmt/binding-linux-s390x-gnu': 0.67.0 + '@oxfmt/binding-linux-x64-gnu': 0.67.0 + '@oxfmt/binding-linux-x64-musl': 0.67.0 + '@oxfmt/binding-openharmony-arm64': 0.67.0 + '@oxfmt/binding-win32-arm64-msvc': 0.67.0 + '@oxfmt/binding-win32-ia32-msvc': 0.67.0 + '@oxfmt/binding-win32-x64-msvc': 0.67.0 + + oxlint@1.82.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.82.0 + '@oxlint/binding-android-arm64': 1.82.0 + '@oxlint/binding-darwin-arm64': 1.82.0 + '@oxlint/binding-darwin-x64': 1.82.0 + '@oxlint/binding-freebsd-x64': 1.82.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.82.0 + '@oxlint/binding-linux-arm-musleabihf': 1.82.0 + '@oxlint/binding-linux-arm64-gnu': 1.82.0 + '@oxlint/binding-linux-arm64-musl': 1.82.0 + '@oxlint/binding-linux-ppc64-gnu': 1.82.0 + '@oxlint/binding-linux-riscv64-gnu': 1.82.0 + '@oxlint/binding-linux-riscv64-musl': 1.82.0 + '@oxlint/binding-linux-s390x-gnu': 1.82.0 + '@oxlint/binding-linux-x64-gnu': 1.82.0 + '@oxlint/binding-linux-x64-musl': 1.82.0 + '@oxlint/binding-openharmony-arm64': 1.82.0 + '@oxlint/binding-win32-arm64-msvc': 1.82.0 + '@oxlint/binding-win32-ia32-msvc': 1.82.0 + '@oxlint/binding-win32-x64-msvc': 1.82.0 + + parseurl@1.3.3: {} + + range-parser@1.3.0: {} + + safe-buffer@5.2.1: {} + + send@1.2.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 2.0.0 + http-errors: 2.0.1 + mime-types: 3.0.2 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.3.0 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + + serve-static@2.2.1: + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 1.2.1 + transitivePeerDependencies: + - supports-color + + setprototypeof@1.2.0: {} + + statikk@3.1.0: + dependencies: + compression: 1.8.1 + connect: 3.7.0 + cors: 2.8.6 + serve-static: 2.2.1 + transitivePeerDependencies: + - supports-color + + statuses@1.5.0: {} + + statuses@2.0.2: {} + + tinypool@2.1.2: {} + + toidentifier@1.0.1: {} + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + undici-types@8.9.0: {} + + unpipe@1.0.0: {} + + utils-merge@1.0.1: {} + + vary@1.1.2: {} diff --git a/prep-tot-protocol-files.sh b/prep-tot-protocol-files.sh index 7fe778b88f..1f33ca4de0 100755 --- a/prep-tot-protocol-files.sh +++ b/prep-tot-protocol-files.sh @@ -15,8 +15,8 @@ js_protocol_path="$protocol_repo_path/json/js_protocol.json" # => into viewer cd $local_script_path -local_tot_protocol_path="pages/_data/tot.json" -local_v8_protocol_path="pages/_data/v8.json" +local_tot_protocol_path="data/tot.json" +local_v8_protocol_path="data/v8.json" if ! [ -s $browser_protocol_path ]; then echo "error: couldn't find local protocol file" >&2; exit 1 @@ -24,30 +24,5 @@ fi # copy the protocol.json over cp $js_protocol_path $local_v8_protocol_path # merge and create all our data files -node merge-protocol-files.cjs $browser_protocol_path $js_protocol_path > $local_tot_protocol_path - -node make-stable-protocol.cjs - -node create-search-index.cjs - -# get the latest change -# => into chromium -cd $(dirname "$browser_protocol_path") -br_commit_line=$(git log --date=iso --no-color --max-count=1 -- browser_protocol.json | grep -E -o "^commit.*") -br_date_line=$(git log --date=iso --no-color --max-count=1 -- browser_protocol.json | grep -E -o "^Date.*") - -cd $(dirname "$js_protocol_path") -js_commit_line=$(git log --date=iso --no-color --max-count=1 -- js_protocol.json | grep -E -o "^commit.*") -js_date_line=$(git log --date=iso --no-color --max-count=1 -- js_protocol.json | grep -E -o "^Date.*") - -# copy it into the HTML file -# => into viewer -cd $local_script_path - -# we no longer printing the most recent protocol git hashes. -# we can restore this when the devtools-protocol repo starts includes that data - -cat pages/tot.md | sed -Ee "s/^()Date.*/\1$br_date_line/" > pages/tot.md.new -cat pages/tot.md.new | sed -Ee "s/^()Date.*/\1$js_date_line/" > pages/tot.md -rm -f pages/tot.md.new +node scripts/merge-protocol-files.js $browser_protocol_path $js_protocol_path > $local_tot_protocol_path diff --git a/readme.md b/readme.md index 3996e0f1fb..7b9828820a 100644 --- a/readme.md +++ b/readme.md @@ -1,67 +1,94 @@ -# debugger-protocol-viewer +# Chrome DevTools Protocol Viewer -Website for viewing Chrome DevTools Protocol defined at -https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/public/devtools_protocol/. +The official web viewer for the [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) (CDP). -More: [DevTools Protocol repo](https://github.com/ChromeDevTools/devtools-protocol) and [published DevTools Protocol website](https://chromedevtools.github.io/devtools-protocol/). +The protocol source of truth is defined in the Chromium codebase: +https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/public/devtools_protocol/ +- **Published Website**: [chromedevtools.github.io/devtools-protocol](https://chromedevtools.github.io/devtools-protocol/) +- **Protocol Definitions**: [ChromeDevTools/devtools-protocol](https://github.com/ChromeDevTools/devtools-protocol) -## Building +--- +## Overview & Architecture + +This viewer is a **zero-dependency vanilla client-side application** built with modern web standards: + +- **Dynamic Runtime Rendering**: Protocol domains, methods, events, and types are rendered dynamically from protocol JSON at runtime. No template regeneration or manual navigation edits are needed when new domains or members land in Chromium. +- **Isomorphic Protocol Core**: Data normalization, member sorting, stabilization, and route parsing live in [`src/protocol-model.js`](./src/protocol-model.js), fully testable in Node.js without DOM dependencies. +- **Type Cross-References**: Native reverse-dependency analysis ("Used by") dynamically links every protocol type to the commands, events, and types referencing it. +- **Multi-Target Support**: Instant switching between **Tip-of-Tree (latest)**, **Stable (1.3)**, and **V8 Inspector (Node.js)** via the left navigation target switcher. +- **Instant Global Search**: Keyboard shortcut (`/` or `Cmd+K`) provides instant fuzzy search across domains, methods, events, and types. +- **Legacy URL Preservation**: Static HTML stubs (`/tot//index.html`) and wildcard fallback (`/404.html`) ensure 100% backward compatibility for existing permalinks across the web. + +--- + +## Quickstart & Local Development + +### 1. Install Dependencies ```sh -# install dependencies -npm i +pnpm install +``` -# regenerate the protocol files -npm run prep +### 2. Build the Site -# build it -npm run build +Builds the production distribution in `devtools-protocol/` and generates backward-compatible static redirect stubs: -# serve it locally -npm run serve +```sh +pnpm run build ``` -## Deploying +### 3. Serve Locally -We deploy to https://chromedevtools.github.io/devtools-protocol/ despite the source living here. -The [repo/branch layout is described here](https://github.com/ChromeDevTools/debugger-protocol-viewer/issues/78). -There is no need to manually trigger deployments. It’s done [automatically](https://github.com/ChromeDevTools/devtools-protocol/commit/c9c207e583264058326792210d1b29a95109beac) as part of the devtools-protocol GitHub Actions workflow. +Start a local HTTP server to view the built site: -FYI: The protocol files here in `debugger-protocol-viewer#master` don't get updated. A deployment writes to the `devtools-protocol#ghpages` branch. +```sh +pnpm run serve +``` -## Adding new version +Open [http://localhost:8696/devtools-protocol/](http://localhost:8696/devtools-protocol/) in your browser. -To add a new protocol version: +--- -1. Modify `pages/_data/versions.json` -1. Create `pages/_data/VERSION_SLUG.json` -1. Create `_versions/VERSION_SLUG.html` file with protocol version description -1. Update the `
` tag in `pages/_includes/shell.hbs`. -1. Build project +## Testing -## Adding new domains +The project uses Node's native test runner (`node:test`) for unit, stub integrity, and end-to-end testing: -Run `npm run prep` then `node generate-sidenav-html.cjs` and add into `
` in `pages/_includes/shell.hbs`. +```sh +# Run the entire preflight suite (typecheck, lint, format check, and tests) +pnpm run preflight -## History +# Run the test suite +pnpm test +# Run isomorphic core unit tests (<50ms) +pnpm run test:unit -* [v0.1](https://rawgit.com/ChromeDevTools/devtools-protocol/v0.1/index.html) original Eric Guzman app. -* [v0.2](https://rawgit.com/ChromeDevTools/devtools-protocol/v0.2/index.html) irish's "upgrades". -* [v0.8](https://rawgit.com/ChromeDevTools/devtools-protocol/v0.8/index.html) guzman's polymer 0.8 refactor -* [v1.0](https://rawgit.com/ChromeDevTools/devtools-protocol/v1.0/index.html) konrad's polymer 1.0 + jekyll refactor -* [v2.0](https://github.com/ChromeDevTools/debugger-protocol-viewer/tree/polymer) tim's polymer 2.0 - jekyll refactor -* [v3.0](https://chromedevtools.github.io/devtools-protocol/) tim's Eleventy refactor -* which brings us to… [now](https://chromedevtools.github.io/devtools-protocol/). +# Run stub generator integrity tests +pnpm run test:stubs +# Run headless Chrome E2E browser tests via CDP +pnpm run test:e2e +``` -## License +The E2E tests launch headless Chrome with `--remote-debugging-port=0` and communicate directly over native WebSockets via Chrome DevTools Protocol to validate route navigation, legacy hash redirects, target switching, search shortcuts, and in-domain quick jump pills. + +--- + +## Deployment + +Deployments to [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/) happen automatically via GitHub Actions in the [devtools-protocol repository](https://github.com/ChromeDevTools/devtools-protocol) on updates. -Apache +The built distribution is pushed to the `devtools-protocol#gh-pages` branch. -## Contributing +--- + +## Contributing & Issues + +- **Viewer Issues & Feature Requests**: Report in [this repository's issue tracker](https://github.com/ChromeDevTools/debugger-protocol-viewer/issues). +- **Protocol Bugs / Chromium Issues**: Report directly at [crbug.com/new](https://crbug.com/new). + +## License -Report issues about the website via GitHub issues in this repo. Please report -issues with CDP itself via https://crbug.com/new. Pull requests very welcome! +[Apache 2.0](./LICENSE) diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 121c80a1c0..0000000000 --- a/rollup.config.js +++ /dev/null @@ -1,11 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve'; -import terser from "@rollup/plugin-terser"; - -export default { - input: 'pages/scripts/index.js', - output: { - file: 'devtools-protocol/scripts/index.js', - format: 'esm', - }, - plugins: [ resolve(), terser(), ], -} diff --git a/scripts/deploy-gh-pages.js b/scripts/deploy-gh-pages.js new file mode 100644 index 0000000000..7dfdf81eb4 --- /dev/null +++ b/scripts/deploy-gh-pages.js @@ -0,0 +1,36 @@ +#!/usr/bin/env node + +import { execSync } from 'node:child_process'; +import fs from 'node:fs'; +import path from 'node:path'; +import os from 'node:os'; + +const dir = path.resolve('devtools-protocol'); +if (!fs.existsSync(dir)) { + console.error(`Directory ${dir} does not exist. Run "pnpm run build" first.`); + process.exit(1); +} + +const tmpIndex = path.join(os.tmpdir(), `gh-pages-deploy-index-${Date.now()}`); +try { + execSync(`git --work-tree="${dir}" add -A .`, { + env: { ...process.env, GIT_INDEX_FILE: tmpIndex }, + stdio: 'inherit', + }); + const tree = execSync('git write-tree', { + env: { ...process.env, GIT_INDEX_FILE: tmpIndex }, + encoding: 'utf8', + }).trim(); + const commit = execSync(`git commit-tree ${tree} -m "deploy: update gh-pages to modern viewer"`, { + encoding: 'utf8', + }).trim(); + console.log(`Created deployment commit: ${commit}`); + execSync(`git push origin ${commit}:refs/heads/gh-pages --force`, { + stdio: 'inherit', + }); + console.log('Successfully deployed to gh-pages branch on origin!'); +} finally { + if (fs.existsSync(tmpIndex)) { + fs.unlinkSync(tmpIndex); + } +} diff --git a/scripts/generate-stubs.js b/scripts/generate-stubs.js new file mode 100644 index 0000000000..6bac112ba7 --- /dev/null +++ b/scripts/generate-stubs.js @@ -0,0 +1,119 @@ +#!/usr/bin/env node + +/** + * @fileoverview Generates static legacy stubs (/tot//index.html) and bundles + * client assets into the output directory for GitHub Pages deployment. + */ + +import fs from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +/** @import { ProtocolDomain } from '../types/types.d.ts' */ + +/** + * Generates HTML for a domain redirect stub with noscript fallback links. + * @param {ProtocolDomain} domain + * @returns {string} + */ +export function generateDomainStub(domain) { + const domainName = domain.domain; + const items = []; + + for (const command of domain.commands || []) { + items.push( + `
  • ${domainName}.${command.name}
  • `, + ); + } + for (const event of domain.events || []) { + items.push( + `
  • ${domainName}.${event.name}
  • `, + ); + } + for (const type of domain.types || []) { + items.push(`
  • ${domainName}.${type.id}
  • `); + } + + const itemsHtml = items.length ? `\n ${items.join('\n ')}\n ` : ''; + + return ` + + + + Redirecting to DevTools Protocol: ${domainName}... + + + +

    Redirecting to ${domainName}...

    + + + +`; +} + +/** + * Generates stubs and copies assets to output directory. + * @param {Object} options + * @param {string} [options.protocolPath] Path to protocol JSON (tot.json) + * @param {string} [options.outputDir] Output directory path + * @param {string} [options.srcDir] Source directory path + * @returns {{ domainCount: number, outputDir: string }} + */ +export function generateStubs({ + protocolPath = path.resolve('data/tot.json'), + outputDir = path.resolve('devtools-protocol'), + srcDir = path.resolve('src'), +} = {}) { + const rawData = fs.readFileSync(protocolPath, 'utf8'); + const protocol = JSON.parse(rawData); + + if (!protocol || !Array.isArray(protocol.domains)) { + throw new Error(`Invalid protocol JSON at ${protocolPath}: missing domains array.`); + } + + fs.rmSync(outputDir, { recursive: true, force: true }); + fs.mkdirSync(outputDir, { recursive: true }); + + // Copy all assets from src/ to outputDir/ + fs.cpSync(srcDir, outputDir, { recursive: true }); + + // Create .nojekyll in output directory + fs.writeFileSync(path.join(outputDir, '.nojekyll'), ''); + + // Generate tot//index.html stubs + const totDir = path.join(outputDir, 'tot'); + fs.mkdirSync(totDir, { recursive: true }); + + for (const domain of protocol.domains) { + if (!domain || !domain.domain) continue; + const domainDir = path.join(totDir, domain.domain); + fs.mkdirSync(domainDir, { recursive: true }); + + const stubHtml = generateDomainStub(domain); + fs.writeFileSync(path.join(domainDir, 'index.html'), stubHtml, 'utf8'); + } + + console.log(`[generate-stubs] Generated ${protocol.domains.length} domain stubs in ${totDir}`); + console.log(`[generate-stubs] Deployed assets and .nojekyll to ${outputDir}`); + + return { domainCount: protocol.domains.length, outputDir }; +} + +// Auto-run if executed directly as CLI +const isDirectRun = + process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url); +if (isDirectRun) { + const protocolPath = process.argv[2] ? path.resolve(process.argv[2]) : undefined; + const outputDir = process.argv[3] ? path.resolve(process.argv[3]) : undefined; + generateStubs({ protocolPath, outputDir }); +} diff --git a/scripts/merge-protocol-files.js b/scripts/merge-protocol-files.js new file mode 100644 index 0000000000..e348bbb3ed --- /dev/null +++ b/scripts/merge-protocol-files.js @@ -0,0 +1,21 @@ +/** + * @fileoverview Merges two protocol JSON files (browser_protocol and js_protocol) into tot.json. + */ + +import fs from 'node:fs'; + +const args = process.argv.slice(2); + +const protocol1Text = fs.readFileSync(args[0], 'utf8'); +const protocol1 = JSON.parse(protocol1Text); + +const protocol2Text = fs.readFileSync(args[1], 'utf8'); +const protocol2 = JSON.parse(protocol2Text); + +const mergedDomains = [...protocol1.domains, ...protocol2.domains]; + +const protocolMerged = { + domains: mergedDomains, +}; + +console.log(JSON.stringify(protocolMerged, null, ' ')); diff --git a/search_index/1-2.json b/search_index/1-2.json deleted file mode 100644 index 677ff206d9..0000000000 --- a/search_index/1-2.json +++ /dev/null @@ -1 +0,0 @@ -{"page":{"keyword":"Page","pageReferences":[{"domain":"Page","type":"0","description":"Actions and events related to the inspected page belong to the page domain.","domainHref":"1-2/Page/"}]},"page.enable":{"keyword":"Page.enable","pageReferences":[{"domain":"Page","type":"4","description":"Enables page domain notifications.","domainHref":"1-2/Page/","href":"#method-enable"}]},"page.disable":{"keyword":"Page.disable","pageReferences":[{"domain":"Page","type":"4","description":"Disables page domain notifications.","domainHref":"1-2/Page/","href":"#method-disable"}]},"page.reload":{"keyword":"Page.reload","pageReferences":[{"domain":"Page","type":"4","description":"Reloads given page optionally ignoring the cache.","domainHref":"1-2/Page/","href":"#method-reload"}]},"page.navigate":{"keyword":"Page.navigate","pageReferences":[{"domain":"Page","type":"4","description":"Navigates current page to the given URL.","domainHref":"1-2/Page/","href":"#method-navigate"}]},"page.setgeolocationoverride":{"keyword":"Page.setGeolocationOverride","pageReferences":[{"domain":"Page","type":"4","description":"Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position unavailable.","domainHref":"1-2/Page/","href":"#method-setGeolocationOverride"}]},"page.cleargeolocationoverride":{"keyword":"Page.clearGeolocationOverride","pageReferences":[{"domain":"Page","type":"4","description":"Clears the overriden Geolocation Position and Error.","domainHref":"1-2/Page/","href":"#method-clearGeolocationOverride"}]},"page.handlejavascriptdialog":{"keyword":"Page.handleJavaScriptDialog","pageReferences":[{"domain":"Page","type":"4","description":"Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).","domainHref":"1-2/Page/","href":"#method-handleJavaScriptDialog"}]},"page.domcontenteventfired":{"keyword":"Page.domContentEventFired","pageReferences":[{"domain":"Page","type":"1","domainHref":"1-2/Page/","href":"#event-domContentEventFired"}]},"page.loadeventfired":{"keyword":"Page.loadEventFired","pageReferences":[{"domain":"Page","type":"1","domainHref":"1-2/Page/","href":"#event-loadEventFired"}]},"page.frameattached":{"keyword":"Page.frameAttached","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has been attached to its parent.","domainHref":"1-2/Page/","href":"#event-frameAttached"}]},"page.framenavigated":{"keyword":"Page.frameNavigated","pageReferences":[{"domain":"Page","type":"1","description":"Fired once navigation of the frame has completed. Frame is now associated with the new loader.","domainHref":"1-2/Page/","href":"#event-frameNavigated"}]},"page.framedetached":{"keyword":"Page.frameDetached","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has been detached from its parent.","domainHref":"1-2/Page/","href":"#event-frameDetached"}]},"page.javascriptdialogopening":{"keyword":"Page.javascriptDialogOpening","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to open.","domainHref":"1-2/Page/","href":"#event-javascriptDialogOpening"}]},"page.javascriptdialogclosed":{"keyword":"Page.javascriptDialogClosed","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been closed.","domainHref":"1-2/Page/","href":"#event-javascriptDialogClosed"}]},"page.interstitialshown":{"keyword":"Page.interstitialShown","pageReferences":[{"domain":"Page","type":"1","description":"Fired when interstitial page was shown","domainHref":"1-2/Page/","href":"#event-interstitialShown"}]},"page.interstitialhidden":{"keyword":"Page.interstitialHidden","pageReferences":[{"domain":"Page","type":"1","description":"Fired when interstitial page was hidden","domainHref":"1-2/Page/","href":"#event-interstitialHidden"}]},"page.navigationrequested":{"keyword":"Page.navigationRequested","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a navigation is started if navigation throttles are enabled. The navigation will be deferred until processNavigation is called.","domainHref":"1-2/Page/","href":"#event-navigationRequested"}]},"page.resourcetype":{"keyword":"Page.ResourceType","pageReferences":[{"domain":"Page","type":"3","description":"Resource type as it was perceived by the rendering engine.","domainHref":"1-2/Page/","href":"#type-ResourceType"}]},"page.frameid":{"keyword":"Page.FrameId","pageReferences":[{"domain":"Page","type":"3","description":"Unique frame identifier.","domainHref":"1-2/Page/","href":"#type-FrameId"}]},"page.frame":{"keyword":"Page.Frame","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Frame on the page.","domainHref":"1-2/Page/","href":"#type-Frame"}]},"emulation":{"keyword":"Emulation","pageReferences":[{"domain":"Emulation","type":"0","description":"This domain emulates different environments for the page.","domainHref":"1-2/Emulation/"}]},"emulation.setdevicemetricsoverride":{"keyword":"Emulation.setDeviceMetricsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media query results).","domainHref":"1-2/Emulation/","href":"#method-setDeviceMetricsOverride"}]},"emulation.cleardevicemetricsoverride":{"keyword":"Emulation.clearDeviceMetricsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears the overriden device metrics.","domainHref":"1-2/Emulation/","href":"#method-clearDeviceMetricsOverride"}]},"emulation.settouchemulationenabled":{"keyword":"Emulation.setTouchEmulationEnabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Toggles mouse event-based touch event emulation.","domainHref":"1-2/Emulation/","href":"#method-setTouchEmulationEnabled"}]},"emulation.setemulatedmedia":{"keyword":"Emulation.setEmulatedMedia","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given media for CSS media queries.","domainHref":"1-2/Emulation/","href":"#method-setEmulatedMedia"}]},"emulation.screenorientation":{"keyword":"Emulation.ScreenOrientation","pageReferences":[{"domain":"Emulation","type":"3","description":"Screen orientation.","domainHref":"1-2/Emulation/","href":"#type-ScreenOrientation"}]},"network":{"keyword":"Network","pageReferences":[{"domain":"Network","type":"0","description":"Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.","domainHref":"1-2/Network/"}]},"network.enable":{"keyword":"Network.enable","pageReferences":[{"domain":"Network","type":"4","description":"Enables network tracking, network events will now be delivered to the client.","domainHref":"1-2/Network/","href":"#method-enable"}]},"network.disable":{"keyword":"Network.disable","pageReferences":[{"domain":"Network","type":"4","description":"Disables network tracking, prevents network events from being sent to the client.","domainHref":"1-2/Network/","href":"#method-disable"}]},"network.setuseragentoverride":{"keyword":"Network.setUserAgentOverride","pageReferences":[{"domain":"Network","type":"4","description":"Allows overriding user agent with the given string.","domainHref":"1-2/Network/","href":"#method-setUserAgentOverride"}]},"network.setextrahttpheaders":{"keyword":"Network.setExtraHTTPHeaders","pageReferences":[{"domain":"Network","type":"4","description":"Specifies whether to always send extra HTTP headers with the requests from this page.","domainHref":"1-2/Network/","href":"#method-setExtraHTTPHeaders"}]},"network.getresponsebody":{"keyword":"Network.getResponseBody","pageReferences":[{"domain":"Network","type":"4","description":"Returns content served for the given request.","domainHref":"1-2/Network/","href":"#method-getResponseBody"}]},"network.canclearbrowsercache":{"keyword":"Network.canClearBrowserCache","pageReferences":[{"domain":"Network","type":"4","description":"Tells whether clearing browser cache is supported.","domainHref":"1-2/Network/","href":"#method-canClearBrowserCache"}]},"network.clearbrowsercache":{"keyword":"Network.clearBrowserCache","pageReferences":[{"domain":"Network","type":"4","description":"Clears browser cache.","domainHref":"1-2/Network/","href":"#method-clearBrowserCache"}]},"network.canclearbrowsercookies":{"keyword":"Network.canClearBrowserCookies","pageReferences":[{"domain":"Network","type":"4","description":"Tells whether clearing browser cookies is supported.","domainHref":"1-2/Network/","href":"#method-canClearBrowserCookies"}]},"network.clearbrowsercookies":{"keyword":"Network.clearBrowserCookies","pageReferences":[{"domain":"Network","type":"4","description":"Clears browser cookies.","domainHref":"1-2/Network/","href":"#method-clearBrowserCookies"}]},"network.emulatenetworkconditions":{"keyword":"Network.emulateNetworkConditions","pageReferences":[{"domain":"Network","type":"4","description":"Activates emulation of network conditions.","domainHref":"1-2/Network/","href":"#method-emulateNetworkConditions"}]},"network.setcachedisabled":{"keyword":"Network.setCacheDisabled","pageReferences":[{"domain":"Network","type":"4","description":"Toggles ignoring cache for each request. If true, cache will not be used.","domainHref":"1-2/Network/","href":"#method-setCacheDisabled"}]},"network.requestwillbesent":{"keyword":"Network.requestWillBeSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when page is about to send HTTP request.","domainHref":"1-2/Network/","href":"#event-requestWillBeSent"}]},"network.requestservedfromcache":{"keyword":"Network.requestServedFromCache","pageReferences":[{"domain":"Network","type":"1","description":"Fired if request ended up loading from cache.","domainHref":"1-2/Network/","href":"#event-requestServedFromCache"}]},"network.responsereceived":{"keyword":"Network.responseReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP response is available.","domainHref":"1-2/Network/","href":"#event-responseReceived"}]},"network.datareceived":{"keyword":"Network.dataReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when data chunk was received over the network.","domainHref":"1-2/Network/","href":"#event-dataReceived"}]},"network.loadingfinished":{"keyword":"Network.loadingFinished","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP request has finished loading.","domainHref":"1-2/Network/","href":"#event-loadingFinished"}]},"network.loadingfailed":{"keyword":"Network.loadingFailed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP request has failed to load.","domainHref":"1-2/Network/","href":"#event-loadingFailed"}]},"network.loaderid":{"keyword":"Network.LoaderId","pageReferences":[{"domain":"Network","type":"3","description":"Unique loader identifier.","domainHref":"1-2/Network/","href":"#type-LoaderId"}]},"network.requestid":{"keyword":"Network.RequestId","pageReferences":[{"domain":"Network","type":"3","description":"Unique request identifier.","domainHref":"1-2/Network/","href":"#type-RequestId"}]},"network.timestamp":{"keyword":"Network.Timestamp","pageReferences":[{"domain":"Network","type":"3","description":"Number of seconds since epoch.","domainHref":"1-2/Network/","href":"#type-Timestamp"}]},"network.headers":{"keyword":"Network.Headers","pageReferences":[{"domain":"Network","type":"3","description":"Request / response headers as keys / values of JSON object.","domainHref":"1-2/Network/","href":"#type-Headers"}]},"network.connectiontype":{"keyword":"Network.ConnectionType","pageReferences":[{"domain":"Network","type":"3","description":"Loading priority of a resource request.","domainHref":"1-2/Network/","href":"#type-ConnectionType"}]},"network.cookiesamesite":{"keyword":"Network.CookieSameSite","pageReferences":[{"domain":"Network","type":"3","description":"Represents the cookie's 'SameSite' status: https://tools.ietf.org/html/draft-west-first-party-cookies","domainHref":"1-2/Network/","href":"#type-CookieSameSite"}]},"network.resourcetiming":{"keyword":"Network.ResourceTiming","pageReferences":[{"domain":"Network","type":"3","description":"Timing information for the request.","domainHref":"1-2/Network/","href":"#type-ResourceTiming"}]},"network.resourcepriority":{"keyword":"Network.ResourcePriority","pageReferences":[{"domain":"Network","type":"3","description":"Loading priority of a resource request.","domainHref":"1-2/Network/","href":"#type-ResourcePriority"}]},"network.request":{"keyword":"Network.Request","pageReferences":[{"domain":"Network","type":"3","description":"HTTP request data.","domainHref":"1-2/Network/","href":"#type-Request"}]},"network.signedcertificatetimestamp":{"keyword":"Network.SignedCertificateTimestamp","pageReferences":[{"domain":"Network","type":"3","description":"Details of a signed certificate timestamp (SCT).","domainHref":"1-2/Network/","href":"#type-SignedCertificateTimestamp"}]},"network.securitydetails":{"keyword":"Network.SecurityDetails","pageReferences":[{"domain":"Network","type":"3","description":"Security details about a request.","domainHref":"1-2/Network/","href":"#type-SecurityDetails"}]},"network.response":{"keyword":"Network.Response","pageReferences":[{"domain":"Network","type":"3","description":"HTTP response data.","domainHref":"1-2/Network/","href":"#type-Response"}]},"network.cachedresource":{"keyword":"Network.CachedResource","pageReferences":[{"domain":"Network","type":"3","description":"Information about the cached resource.","domainHref":"1-2/Network/","href":"#type-CachedResource"}]},"network.initiator":{"keyword":"Network.Initiator","pageReferences":[{"domain":"Network","type":"3","description":"Information about the request initiator.","domainHref":"1-2/Network/","href":"#type-Initiator"}]},"dom":{"keyword":"DOM","pageReferences":[{"domain":"DOM","type":"0","description":"This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an id. This id can be used to get additional information on the No...","domainHref":"1-2/DOM/"}]},"dom.enable":{"keyword":"DOM.enable","pageReferences":[{"domain":"DOM","type":"4","description":"Enables DOM agent for the given page.","domainHref":"1-2/DOM/","href":"#method-enable"}]},"dom.disable":{"keyword":"DOM.disable","pageReferences":[{"domain":"DOM","type":"4","description":"Disables DOM agent for the given page.","domainHref":"1-2/DOM/","href":"#method-disable"}]},"dom.getdocument":{"keyword":"DOM.getDocument","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the root DOM node to the caller.","domainHref":"1-2/DOM/","href":"#method-getDocument"}]},"dom.requestchildnodes":{"keyword":"DOM.requestChildNodes","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that children of the node with given id are returned to the caller in form of setChildNodes events where not only immediate children are retrieved, but all children down to the s...","domainHref":"1-2/DOM/","href":"#method-requestChildNodes"}]},"dom.queryselector":{"keyword":"DOM.querySelector","pageReferences":[{"domain":"DOM","type":"4","description":"Executes querySelector on a given node.","domainHref":"1-2/DOM/","href":"#method-querySelector"}]},"dom.queryselectorall":{"keyword":"DOM.querySelectorAll","pageReferences":[{"domain":"DOM","type":"4","description":"Executes querySelectorAll on a given node.","domainHref":"1-2/DOM/","href":"#method-querySelectorAll"}]},"dom.setnodename":{"keyword":"DOM.setNodeName","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node name for a node with given id.","domainHref":"1-2/DOM/","href":"#method-setNodeName"}]},"dom.setnodevalue":{"keyword":"DOM.setNodeValue","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node value for a node with given id.","domainHref":"1-2/DOM/","href":"#method-setNodeValue"}]},"dom.removenode":{"keyword":"DOM.removeNode","pageReferences":[{"domain":"DOM","type":"4","description":"Removes node with given id.","domainHref":"1-2/DOM/","href":"#method-removeNode"}]},"dom.setattributevalue":{"keyword":"DOM.setAttributeValue","pageReferences":[{"domain":"DOM","type":"4","description":"Sets attribute for an element with given id.","domainHref":"1-2/DOM/","href":"#method-setAttributeValue"}]},"dom.setattributesastext":{"keyword":"DOM.setAttributesAsText","pageReferences":[{"domain":"DOM","type":"4","description":"Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs.","domainHref":"1-2/DOM/","href":"#method-setAttributesAsText"}]},"dom.removeattribute":{"keyword":"DOM.removeAttribute","pageReferences":[{"domain":"DOM","type":"4","description":"Removes attribute with given name from an element with given id.","domainHref":"1-2/DOM/","href":"#method-removeAttribute"}]},"dom.getouterhtml":{"keyword":"DOM.getOuterHTML","pageReferences":[{"domain":"DOM","type":"4","description":"Returns node's HTML markup.","domainHref":"1-2/DOM/","href":"#method-getOuterHTML"}]},"dom.setouterhtml":{"keyword":"DOM.setOuterHTML","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node HTML markup, returns new node id.","domainHref":"1-2/DOM/","href":"#method-setOuterHTML"}]},"dom.requestnode":{"keyword":"DOM.requestNode","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of setChil...","domainHref":"1-2/DOM/","href":"#method-requestNode"}]},"dom.highlightrect":{"keyword":"DOM.highlightRect","pageReferences":[{"domain":"DOM","type":"4","description":"Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.","domainHref":"1-2/DOM/","href":"#method-highlightRect"}]},"dom.highlightnode":{"keyword":"DOM.highlightNode","pageReferences":[{"domain":"DOM","type":"4","description":"Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified.","domainHref":"1-2/DOM/","href":"#method-highlightNode"}]},"dom.hidehighlight":{"keyword":"DOM.hideHighlight","pageReferences":[{"domain":"DOM","type":"4","description":"Hides DOM node highlight.","domainHref":"1-2/DOM/","href":"#method-hideHighlight"}]},"dom.resolvenode":{"keyword":"DOM.resolveNode","pageReferences":[{"domain":"DOM","type":"4","description":"Resolves JavaScript node object for given node id.","domainHref":"1-2/DOM/","href":"#method-resolveNode"}]},"dom.getattributes":{"keyword":"DOM.getAttributes","pageReferences":[{"domain":"DOM","type":"4","description":"Returns attributes for the specified node.","domainHref":"1-2/DOM/","href":"#method-getAttributes"}]},"dom.moveto":{"keyword":"DOM.moveTo","pageReferences":[{"domain":"DOM","type":"4","description":"Moves node into the new container, places it before the given anchor.","domainHref":"1-2/DOM/","href":"#method-moveTo"}]},"dom.documentupdated":{"keyword":"DOM.documentUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when Document has been totally updated. Node ids are no longer valid.","domainHref":"1-2/DOM/","href":"#event-documentUpdated"}]},"dom.setchildnodes":{"keyword":"DOM.setChildNodes","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids.","domainHref":"1-2/DOM/","href":"#event-setChildNodes"}]},"dom.attributemodified":{"keyword":"DOM.attributeModified","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when Element's attribute is modified.","domainHref":"1-2/DOM/","href":"#event-attributeModified"}]},"dom.attributeremoved":{"keyword":"DOM.attributeRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when Element's attribute is removed.","domainHref":"1-2/DOM/","href":"#event-attributeRemoved"}]},"dom.characterdatamodified":{"keyword":"DOM.characterDataModified","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors DOMCharacterDataModified event.","domainHref":"1-2/DOM/","href":"#event-characterDataModified"}]},"dom.childnodecountupdated":{"keyword":"DOM.childNodeCountUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when Container's child node count has changed.","domainHref":"1-2/DOM/","href":"#event-childNodeCountUpdated"}]},"dom.childnodeinserted":{"keyword":"DOM.childNodeInserted","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors DOMNodeInserted event.","domainHref":"1-2/DOM/","href":"#event-childNodeInserted"}]},"dom.childnoderemoved":{"keyword":"DOM.childNodeRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors DOMNodeRemoved event.","domainHref":"1-2/DOM/","href":"#event-childNodeRemoved"}]},"dom.nodeid":{"keyword":"DOM.NodeId","pageReferences":[{"domain":"DOM","type":"3","description":"Unique DOM node identifier.","domainHref":"1-2/DOM/","href":"#type-NodeId"}]},"dom.pseudotype":{"keyword":"DOM.PseudoType","pageReferences":[{"domain":"DOM","type":"3","description":"Pseudo element type.","domainHref":"1-2/DOM/","href":"#type-PseudoType"}]},"dom.shadowroottype":{"keyword":"DOM.ShadowRootType","pageReferences":[{"domain":"DOM","type":"3","description":"Shadow root type.","domainHref":"1-2/DOM/","href":"#type-ShadowRootType"}]},"dom.node":{"keyword":"DOM.Node","pageReferences":[{"domain":"DOM","type":"3","description":"DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type.","domainHref":"1-2/DOM/","href":"#type-Node"}]},"dom.rgba":{"keyword":"DOM.RGBA","pageReferences":[{"domain":"DOM","type":"3","description":"A structure holding an RGBA color.","domainHref":"1-2/DOM/","href":"#type-RGBA"}]},"dom.highlightconfig":{"keyword":"DOM.HighlightConfig","pageReferences":[{"domain":"DOM","type":"3","description":"Configuration data for the highlighting of page elements.","domainHref":"1-2/DOM/","href":"#type-HighlightConfig"}]},"domdebugger":{"keyword":"DOMDebugger","pageReferences":[{"domain":"DOMDebugger","type":"0","description":"DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript execution will stop on these operations as if there was a regular breakpoint set.","domainHref":"1-2/DOMDebugger/"}]},"domdebugger.setdombreakpoint":{"keyword":"DOMDebugger.setDOMBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular operation with DOM.","domainHref":"1-2/DOMDebugger/","href":"#method-setDOMBreakpoint"}]},"domdebugger.removedombreakpoint":{"keyword":"DOMDebugger.removeDOMBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes DOM breakpoint that was set using setDOMBreakpoint.","domainHref":"1-2/DOMDebugger/","href":"#method-removeDOMBreakpoint"}]},"domdebugger.seteventlistenerbreakpoint":{"keyword":"DOMDebugger.setEventListenerBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular DOM event.","domainHref":"1-2/DOMDebugger/","href":"#method-setEventListenerBreakpoint"}]},"domdebugger.removeeventlistenerbreakpoint":{"keyword":"DOMDebugger.removeEventListenerBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint on particular DOM event.","domainHref":"1-2/DOMDebugger/","href":"#method-removeEventListenerBreakpoint"}]},"domdebugger.setxhrbreakpoint":{"keyword":"DOMDebugger.setXHRBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on XMLHttpRequest.","domainHref":"1-2/DOMDebugger/","href":"#method-setXHRBreakpoint"}]},"domdebugger.removexhrbreakpoint":{"keyword":"DOMDebugger.removeXHRBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint from XMLHttpRequest.","domainHref":"1-2/DOMDebugger/","href":"#method-removeXHRBreakpoint"}]},"domdebugger.dombreakpointtype":{"keyword":"DOMDebugger.DOMBreakpointType","pageReferences":[{"domain":"DOMDebugger","type":"3","description":"DOM breakpoint type.","domainHref":"1-2/DOMDebugger/","href":"#type-DOMBreakpointType"}]},"input":{"keyword":"Input","pageReferences":[{"domain":"Input","type":"0","domainHref":"1-2/Input/"}]},"input.dispatchkeyevent":{"keyword":"Input.dispatchKeyEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a key event to the page.","domainHref":"1-2/Input/","href":"#method-dispatchKeyEvent"}]},"input.dispatchmouseevent":{"keyword":"Input.dispatchMouseEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a mouse event to the page.","domainHref":"1-2/Input/","href":"#method-dispatchMouseEvent"}]},"schema":{"keyword":"Schema","pageReferences":[{"domain":"Schema","type":"0","description":"Provides information about the protocol schema.","domainHref":"1-2/Schema/"}]},"schema.getdomains":{"keyword":"Schema.getDomains","pageReferences":[{"domain":"Schema","type":"4","description":"Returns supported domains.","domainHref":"1-2/Schema/","href":"#method-getDomains"}]},"schema.domain":{"keyword":"Schema.Domain","pageReferences":[{"domain":"Schema","type":"3","description":"Description of the protocol domain.","domainHref":"1-2/Schema/","href":"#type-Domain"}]},"runtime":{"keyword":"Runtime","pageReferences":[{"domain":"Runtime","type":"0","description":"Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique i...","domainHref":"1-2/Runtime/"}]},"runtime.evaluate":{"keyword":"Runtime.evaluate","pageReferences":[{"domain":"Runtime","type":"4","description":"Evaluates expression on global object.","domainHref":"1-2/Runtime/","href":"#method-evaluate"}]},"runtime.awaitpromise":{"keyword":"Runtime.awaitPromise","pageReferences":[{"domain":"Runtime","type":"4","description":"Add handler to promise with given promise object id.","domainHref":"1-2/Runtime/","href":"#method-awaitPromise"}]},"runtime.callfunctionon":{"keyword":"Runtime.callFunctionOn","pageReferences":[{"domain":"Runtime","type":"4","description":"Calls function with given declaration on the given object. Object group of the result is inherited from the target object.","domainHref":"1-2/Runtime/","href":"#method-callFunctionOn"}]},"runtime.getproperties":{"keyword":"Runtime.getProperties","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns properties of a given object. Object group of the result is inherited from the target object.","domainHref":"1-2/Runtime/","href":"#method-getProperties"}]},"runtime.releaseobject":{"keyword":"Runtime.releaseObject","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases remote object with given id.","domainHref":"1-2/Runtime/","href":"#method-releaseObject"}]},"runtime.releaseobjectgroup":{"keyword":"Runtime.releaseObjectGroup","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases all remote objects that belong to a given group.","domainHref":"1-2/Runtime/","href":"#method-releaseObjectGroup"}]},"runtime.runifwaitingfordebugger":{"keyword":"Runtime.runIfWaitingForDebugger","pageReferences":[{"domain":"Runtime","type":"4","description":"Tells inspected instance to run if it was waiting for debugger to attach.","domainHref":"1-2/Runtime/","href":"#method-runIfWaitingForDebugger"}]},"runtime.enable":{"keyword":"Runtime.enable","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables reporting of execution contexts creation by means of executionContextCreated event. When the reporting gets enabled the event will be sent immediately for each existing execution ...","domainHref":"1-2/Runtime/","href":"#method-enable"}]},"runtime.disable":{"keyword":"Runtime.disable","pageReferences":[{"domain":"Runtime","type":"4","description":"Disables reporting of execution contexts creation.","domainHref":"1-2/Runtime/","href":"#method-disable"}]},"runtime.discardconsoleentries":{"keyword":"Runtime.discardConsoleEntries","pageReferences":[{"domain":"Runtime","type":"4","description":"Discards collected exceptions and console API calls.","domainHref":"1-2/Runtime/","href":"#method-discardConsoleEntries"}]},"runtime.compilescript":{"keyword":"Runtime.compileScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Compiles expression.","domainHref":"1-2/Runtime/","href":"#method-compileScript"}]},"runtime.runscript":{"keyword":"Runtime.runScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Runs script with given id in a given context.","domainHref":"1-2/Runtime/","href":"#method-runScript"}]},"runtime.executioncontextcreated":{"keyword":"Runtime.executionContextCreated","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when new execution context is created.","domainHref":"1-2/Runtime/","href":"#event-executionContextCreated"}]},"runtime.executioncontextdestroyed":{"keyword":"Runtime.executionContextDestroyed","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when execution context is destroyed.","domainHref":"1-2/Runtime/","href":"#event-executionContextDestroyed"}]},"runtime.executioncontextscleared":{"keyword":"Runtime.executionContextsCleared","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when all executionContexts were cleared in browser","domainHref":"1-2/Runtime/","href":"#event-executionContextsCleared"}]},"runtime.exceptionthrown":{"keyword":"Runtime.exceptionThrown","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when exception was thrown and unhandled.","domainHref":"1-2/Runtime/","href":"#event-exceptionThrown"}]},"runtime.exceptionrevoked":{"keyword":"Runtime.exceptionRevoked","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when unhandled exception was revoked.","domainHref":"1-2/Runtime/","href":"#event-exceptionRevoked"}]},"runtime.consoleapicalled":{"keyword":"Runtime.consoleAPICalled","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when console API was called.","domainHref":"1-2/Runtime/","href":"#event-consoleAPICalled"}]},"runtime.inspectrequested":{"keyword":"Runtime.inspectRequested","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when object should be inspected (for example, as a result of inspect() command line API call).","domainHref":"1-2/Runtime/","href":"#event-inspectRequested"}]},"runtime.scriptid":{"keyword":"Runtime.ScriptId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique script identifier.","domainHref":"1-2/Runtime/","href":"#type-ScriptId"}]},"runtime.remoteobjectid":{"keyword":"Runtime.RemoteObjectId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique object identifier.","domainHref":"1-2/Runtime/","href":"#type-RemoteObjectId"}]},"runtime.unserializablevalue":{"keyword":"Runtime.UnserializableValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Primitive value which cannot be JSON-stringified.","domainHref":"1-2/Runtime/","href":"#type-UnserializableValue"}]},"runtime.remoteobject":{"keyword":"Runtime.RemoteObject","pageReferences":[{"domain":"Runtime","type":"3","description":"Mirror object referencing original JavaScript object.","domainHref":"1-2/Runtime/","href":"#type-RemoteObject"}]},"runtime.propertydescriptor":{"keyword":"Runtime.PropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object property descriptor.","domainHref":"1-2/Runtime/","href":"#type-PropertyDescriptor"}]},"runtime.internalpropertydescriptor":{"keyword":"Runtime.InternalPropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object internal property descriptor. This property isn't normally visible in JavaScript code.","domainHref":"1-2/Runtime/","href":"#type-InternalPropertyDescriptor"}]},"runtime.callargument":{"keyword":"Runtime.CallArgument","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents function call argument. Either remote object id objectId, primitive value, unserializable primitive value or neither of (for undefined) them should be specified.","domainHref":"1-2/Runtime/","href":"#type-CallArgument"}]},"runtime.executioncontextid":{"keyword":"Runtime.ExecutionContextId","pageReferences":[{"domain":"Runtime","type":"3","description":"Id of an execution context.","domainHref":"1-2/Runtime/","href":"#type-ExecutionContextId"}]},"runtime.executioncontextdescription":{"keyword":"Runtime.ExecutionContextDescription","pageReferences":[{"domain":"Runtime","type":"3","description":"Description of an isolated world.","domainHref":"1-2/Runtime/","href":"#type-ExecutionContextDescription"}]},"runtime.exceptiondetails":{"keyword":"Runtime.ExceptionDetails","pageReferences":[{"domain":"Runtime","type":"3","description":"Detailed information about exception (or error) that was thrown during script compilation or execution.","domainHref":"1-2/Runtime/","href":"#type-ExceptionDetails"}]},"runtime.timestamp":{"keyword":"Runtime.Timestamp","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds since epoch.","domainHref":"1-2/Runtime/","href":"#type-Timestamp"}]},"runtime.callframe":{"keyword":"Runtime.CallFrame","pageReferences":[{"domain":"Runtime","type":"3","description":"Stack entry for runtime errors and assertions.","domainHref":"1-2/Runtime/","href":"#type-CallFrame"}]},"runtime.stacktrace":{"keyword":"Runtime.StackTrace","pageReferences":[{"domain":"Runtime","type":"3","description":"Call frames for assertions or error messages.","domainHref":"1-2/Runtime/","href":"#type-StackTrace"}]},"debugger":{"keyword":"Debugger","pageReferences":[{"domain":"Debugger","type":"0","description":"Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.","domainHref":"1-2/Debugger/"}]},"debugger.enable":{"keyword":"Debugger.enable","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.","domainHref":"1-2/Debugger/","href":"#method-enable"}]},"debugger.disable":{"keyword":"Debugger.disable","pageReferences":[{"domain":"Debugger","type":"4","description":"Disables debugger for given page.","domainHref":"1-2/Debugger/","href":"#method-disable"}]},"debugger.setbreakpointsactive":{"keyword":"Debugger.setBreakpointsActive","pageReferences":[{"domain":"Debugger","type":"4","description":"Activates / deactivates all breakpoints on the page.","domainHref":"1-2/Debugger/","href":"#method-setBreakpointsActive"}]},"debugger.setskipallpauses":{"keyword":"Debugger.setSkipAllPauses","pageReferences":[{"domain":"Debugger","type":"4","description":"Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).","domainHref":"1-2/Debugger/","href":"#method-setSkipAllPauses"}]},"debugger.setbreakpointbyurl":{"keyword":"Debugger.setBreakpointByUrl","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in locatio...","domainHref":"1-2/Debugger/","href":"#method-setBreakpointByUrl"}]},"debugger.setbreakpoint":{"keyword":"Debugger.setBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at a given location.","domainHref":"1-2/Debugger/","href":"#method-setBreakpoint"}]},"debugger.removebreakpoint":{"keyword":"Debugger.removeBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Removes JavaScript breakpoint.","domainHref":"1-2/Debugger/","href":"#method-removeBreakpoint"}]},"debugger.continuetolocation":{"keyword":"Debugger.continueToLocation","pageReferences":[{"domain":"Debugger","type":"4","description":"Continues execution until specific location is reached.","domainHref":"1-2/Debugger/","href":"#method-continueToLocation"}]},"debugger.stepover":{"keyword":"Debugger.stepOver","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps over the statement.","domainHref":"1-2/Debugger/","href":"#method-stepOver"}]},"debugger.stepinto":{"keyword":"Debugger.stepInto","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps into the function call.","domainHref":"1-2/Debugger/","href":"#method-stepInto"}]},"debugger.stepout":{"keyword":"Debugger.stepOut","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps out of the function call.","domainHref":"1-2/Debugger/","href":"#method-stepOut"}]},"debugger.pause":{"keyword":"Debugger.pause","pageReferences":[{"domain":"Debugger","type":"4","description":"Stops on the next JavaScript statement.","domainHref":"1-2/Debugger/","href":"#method-pause"}]},"debugger.resume":{"keyword":"Debugger.resume","pageReferences":[{"domain":"Debugger","type":"4","description":"Resumes JavaScript execution.","domainHref":"1-2/Debugger/","href":"#method-resume"}]},"debugger.setscriptsource":{"keyword":"Debugger.setScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Edits JavaScript source live.","domainHref":"1-2/Debugger/","href":"#method-setScriptSource"}]},"debugger.restartframe":{"keyword":"Debugger.restartFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Restarts particular call frame from the beginning.","domainHref":"1-2/Debugger/","href":"#method-restartFrame"}]},"debugger.getscriptsource":{"keyword":"Debugger.getScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns source for the script with given id.","domainHref":"1-2/Debugger/","href":"#method-getScriptSource"}]},"debugger.setpauseonexceptions":{"keyword":"Debugger.setPauseOnExceptions","pageReferences":[{"domain":"Debugger","type":"4","description":"Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is none.","domainHref":"1-2/Debugger/","href":"#method-setPauseOnExceptions"}]},"debugger.evaluateoncallframe":{"keyword":"Debugger.evaluateOnCallFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Evaluates expression on a given call frame.","domainHref":"1-2/Debugger/","href":"#method-evaluateOnCallFrame"}]},"debugger.setvariablevalue":{"keyword":"Debugger.setVariableValue","pageReferences":[{"domain":"Debugger","type":"4","description":"Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually.","domainHref":"1-2/Debugger/","href":"#method-setVariableValue"}]},"debugger.setasynccallstackdepth":{"keyword":"Debugger.setAsyncCallStackDepth","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"1-2/Debugger/","href":"#method-setAsyncCallStackDepth"}]},"debugger.scriptparsed":{"keyword":"Debugger.scriptParsed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.","domainHref":"1-2/Debugger/","href":"#event-scriptParsed"}]},"debugger.scriptfailedtoparse":{"keyword":"Debugger.scriptFailedToParse","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine fails to parse the script.","domainHref":"1-2/Debugger/","href":"#event-scriptFailedToParse"}]},"debugger.breakpointresolved":{"keyword":"Debugger.breakpointResolved","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when breakpoint is resolved to an actual script and location.","domainHref":"1-2/Debugger/","href":"#event-breakpointResolved"}]},"debugger.paused":{"keyword":"Debugger.paused","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.","domainHref":"1-2/Debugger/","href":"#event-paused"}]},"debugger.resumed":{"keyword":"Debugger.resumed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine resumed execution.","domainHref":"1-2/Debugger/","href":"#event-resumed"}]},"debugger.breakpointid":{"keyword":"Debugger.BreakpointId","pageReferences":[{"domain":"Debugger","type":"3","description":"Breakpoint identifier.","domainHref":"1-2/Debugger/","href":"#type-BreakpointId"}]},"debugger.callframeid":{"keyword":"Debugger.CallFrameId","pageReferences":[{"domain":"Debugger","type":"3","description":"Call frame identifier.","domainHref":"1-2/Debugger/","href":"#type-CallFrameId"}]},"debugger.location":{"keyword":"Debugger.Location","pageReferences":[{"domain":"Debugger","type":"3","description":"Location in the source code.","domainHref":"1-2/Debugger/","href":"#type-Location"}]},"debugger.callframe":{"keyword":"Debugger.CallFrame","pageReferences":[{"domain":"Debugger","type":"3","description":"JavaScript call frame. Array of call frames form the call stack.","domainHref":"1-2/Debugger/","href":"#type-CallFrame"}]},"debugger.scope":{"keyword":"Debugger.Scope","pageReferences":[{"domain":"Debugger","type":"3","description":"Scope description.","domainHref":"1-2/Debugger/","href":"#type-Scope"}]},"profiler":{"keyword":"Profiler","pageReferences":[{"domain":"Profiler","type":"0","domainHref":"1-2/Profiler/"}]},"profiler.enable":{"keyword":"Profiler.enable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-2/Profiler/","href":"#method-enable"}]},"profiler.disable":{"keyword":"Profiler.disable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-2/Profiler/","href":"#method-disable"}]},"profiler.setsamplinginterval":{"keyword":"Profiler.setSamplingInterval","pageReferences":[{"domain":"Profiler","type":"4","description":"Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.","domainHref":"1-2/Profiler/","href":"#method-setSamplingInterval"}]},"profiler.start":{"keyword":"Profiler.start","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-2/Profiler/","href":"#method-start"}]},"profiler.stop":{"keyword":"Profiler.stop","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-2/Profiler/","href":"#method-stop"}]},"profiler.consoleprofilestarted":{"keyword":"Profiler.consoleProfileStarted","pageReferences":[{"domain":"Profiler","type":"1","description":"Sent when new profile recodring is started using console.profile() call.","domainHref":"1-2/Profiler/","href":"#event-consoleProfileStarted"}]},"profiler.consoleprofilefinished":{"keyword":"Profiler.consoleProfileFinished","pageReferences":[{"domain":"Profiler","type":"1","domainHref":"1-2/Profiler/","href":"#event-consoleProfileFinished"}]},"profiler.profilenode":{"keyword":"Profiler.ProfileNode","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile node. Holds callsite information, execution statistics and child nodes.","domainHref":"1-2/Profiler/","href":"#type-ProfileNode"}]},"profiler.profile":{"keyword":"Profiler.Profile","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile.","domainHref":"1-2/Profiler/","href":"#type-Profile"}]}} \ No newline at end of file diff --git a/search_index/1-3.json b/search_index/1-3.json deleted file mode 100644 index 030b15d4ad..0000000000 --- a/search_index/1-3.json +++ /dev/null @@ -1 +0,0 @@ -{"browser":{"keyword":"Browser","pageReferences":[{"domain":"Browser","type":"0","description":"The Browser domain defines methods and events for browser managing.","domainHref":"1-3/Browser/"}]},"browser.resetpermissions":{"keyword":"Browser.resetPermissions","pageReferences":[{"domain":"Browser","type":"4","description":"Reset all permission management for all origins.","domainHref":"1-3/Browser/","href":"#method-resetPermissions"}]},"browser.close":{"keyword":"Browser.close","pageReferences":[{"domain":"Browser","type":"4","description":"Close browser gracefully.","domainHref":"1-3/Browser/","href":"#method-close"}]},"browser.getversion":{"keyword":"Browser.getVersion","pageReferences":[{"domain":"Browser","type":"4","description":"Returns version information.","domainHref":"1-3/Browser/","href":"#method-getVersion"}]},"browser.addprivacysandboxenrollmentoverride":{"keyword":"Browser.addPrivacySandboxEnrollmentOverride","pageReferences":[{"domain":"Browser","type":"4","description":"Allows a site to use privacy sandbox features that require enrollment\nwithout the site actually being enrolled. Only supported on page targets.","domainHref":"1-3/Browser/","href":"#method-addPrivacySandboxEnrollmentOverride"}]},"browser.addprivacysandboxcoordinatorkeyconfig":{"keyword":"Browser.addPrivacySandboxCoordinatorKeyConfig","pageReferences":[{"domain":"Browser","type":"4","description":"Configures encryption keys used with a given privacy sandbox API to talk\nto a trusted coordinator. Since this is intended for test automation only,\ncoordinatorOrigin must be a .test domain. No existi...","domainHref":"1-3/Browser/","href":"#method-addPrivacySandboxCoordinatorKeyConfig"}]},"dom":{"keyword":"DOM","pageReferences":[{"domain":"DOM","type":"0","description":"This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object\nthat has an `id`. This `id` can be used to get additional information on the Node, resolve it into\nth...","domainHref":"1-3/DOM/"}]},"dom.describenode":{"keyword":"DOM.describeNode","pageReferences":[{"domain":"DOM","type":"4","description":"Describes node given its id, does not require domain to be enabled. Does not start tracking any\nobjects, can be used for automation.","domainHref":"1-3/DOM/","href":"#method-describeNode"}]},"dom.scrollintoviewifneeded":{"keyword":"DOM.scrollIntoViewIfNeeded","pageReferences":[{"domain":"DOM","type":"4","description":"Scrolls the specified rect of the given node into view if not already visible.\nNote: exactly one between nodeId, backendNodeId and objectId should be passed\nto identify the node.","domainHref":"1-3/DOM/","href":"#method-scrollIntoViewIfNeeded"}]},"dom.disable":{"keyword":"DOM.disable","pageReferences":[{"domain":"DOM","type":"4","description":"Disables DOM agent for the given page.","domainHref":"1-3/DOM/","href":"#method-disable"}]},"dom.enable":{"keyword":"DOM.enable","pageReferences":[{"domain":"DOM","type":"4","description":"Enables DOM agent for the given page.","domainHref":"1-3/DOM/","href":"#method-enable"}]},"dom.focus":{"keyword":"DOM.focus","pageReferences":[{"domain":"DOM","type":"4","description":"Focuses the given element.","domainHref":"1-3/DOM/","href":"#method-focus"}]},"dom.getattributes":{"keyword":"DOM.getAttributes","pageReferences":[{"domain":"DOM","type":"4","description":"Returns attributes for the specified node.","domainHref":"1-3/DOM/","href":"#method-getAttributes"}]},"dom.getboxmodel":{"keyword":"DOM.getBoxModel","pageReferences":[{"domain":"DOM","type":"4","description":"Returns boxes for the given node.","domainHref":"1-3/DOM/","href":"#method-getBoxModel"}]},"dom.getdocument":{"keyword":"DOM.getDocument","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the root DOM node (and optionally the subtree) to the caller.\nImplicitly enables the DOM domain events for the current target.","domainHref":"1-3/DOM/","href":"#method-getDocument"}]},"dom.getnodeforlocation":{"keyword":"DOM.getNodeForLocation","pageReferences":[{"domain":"DOM","type":"4","description":"Returns node id at given location. Depending on whether DOM domain is enabled, nodeId is\neither returned or not.","domainHref":"1-3/DOM/","href":"#method-getNodeForLocation"}]},"dom.getouterhtml":{"keyword":"DOM.getOuterHTML","pageReferences":[{"domain":"DOM","type":"4","description":"Returns node's HTML markup.","domainHref":"1-3/DOM/","href":"#method-getOuterHTML"}]},"dom.hidehighlight":{"keyword":"DOM.hideHighlight","pageReferences":[{"domain":"DOM","type":"4","description":"Hides any highlight.","domainHref":"1-3/DOM/","href":"#method-hideHighlight"}]},"dom.highlightnode":{"keyword":"DOM.highlightNode","pageReferences":[{"domain":"DOM","type":"4","description":"Highlights DOM node.","domainHref":"1-3/DOM/","href":"#method-highlightNode"}]},"dom.highlightrect":{"keyword":"DOM.highlightRect","pageReferences":[{"domain":"DOM","type":"4","description":"Highlights given rectangle.","domainHref":"1-3/DOM/","href":"#method-highlightRect"}]},"dom.moveto":{"keyword":"DOM.moveTo","pageReferences":[{"domain":"DOM","type":"4","description":"Moves node into the new container, places it before the given anchor.","domainHref":"1-3/DOM/","href":"#method-moveTo"}]},"dom.queryselector":{"keyword":"DOM.querySelector","pageReferences":[{"domain":"DOM","type":"4","description":"Executes `querySelector` on a given node.","domainHref":"1-3/DOM/","href":"#method-querySelector"}]},"dom.queryselectorall":{"keyword":"DOM.querySelectorAll","pageReferences":[{"domain":"DOM","type":"4","description":"Executes `querySelectorAll` on a given node.","domainHref":"1-3/DOM/","href":"#method-querySelectorAll"}]},"dom.removeattribute":{"keyword":"DOM.removeAttribute","pageReferences":[{"domain":"DOM","type":"4","description":"Removes attribute with given name from an element with given id.","domainHref":"1-3/DOM/","href":"#method-removeAttribute"}]},"dom.removenode":{"keyword":"DOM.removeNode","pageReferences":[{"domain":"DOM","type":"4","description":"Removes node with given id.","domainHref":"1-3/DOM/","href":"#method-removeNode"}]},"dom.requestchildnodes":{"keyword":"DOM.requestChildNodes","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that children of the node with given id are returned to the caller in form of\n`setChildNodes` events where not only immediate children are retrieved, but all children down to\nthe specified de...","domainHref":"1-3/DOM/","href":"#method-requestChildNodes"}]},"dom.requestnode":{"keyword":"DOM.requestNode","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that the node is sent to the caller given the JavaScript node object reference. All\nnodes that form the path from the node to the root are also sent to the client as a series of\n`setChildNode...","domainHref":"1-3/DOM/","href":"#method-requestNode"}]},"dom.resolvenode":{"keyword":"DOM.resolveNode","pageReferences":[{"domain":"DOM","type":"4","description":"Resolves the JavaScript node object for a given NodeId or BackendNodeId.","domainHref":"1-3/DOM/","href":"#method-resolveNode"}]},"dom.setattributevalue":{"keyword":"DOM.setAttributeValue","pageReferences":[{"domain":"DOM","type":"4","description":"Sets attribute for an element with given id.","domainHref":"1-3/DOM/","href":"#method-setAttributeValue"}]},"dom.setattributesastext":{"keyword":"DOM.setAttributesAsText","pageReferences":[{"domain":"DOM","type":"4","description":"Sets attributes on element with given id. This method is useful when user edits some existing\nattribute value and types in several attribute name/value pairs.","domainHref":"1-3/DOM/","href":"#method-setAttributesAsText"}]},"dom.setfileinputfiles":{"keyword":"DOM.setFileInputFiles","pageReferences":[{"domain":"DOM","type":"4","description":"Sets files for the given file input element.","domainHref":"1-3/DOM/","href":"#method-setFileInputFiles"}]},"dom.setnodename":{"keyword":"DOM.setNodeName","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node name for a node with given id.","domainHref":"1-3/DOM/","href":"#method-setNodeName"}]},"dom.setnodevalue":{"keyword":"DOM.setNodeValue","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node value for a node with given id.","domainHref":"1-3/DOM/","href":"#method-setNodeValue"}]},"dom.setouterhtml":{"keyword":"DOM.setOuterHTML","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node HTML markup, returns new node id.","domainHref":"1-3/DOM/","href":"#method-setOuterHTML"}]},"dom.attributemodified":{"keyword":"DOM.attributeModified","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Element`'s attribute is modified.","domainHref":"1-3/DOM/","href":"#event-attributeModified"}]},"dom.attributeremoved":{"keyword":"DOM.attributeRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Element`'s attribute is removed.","domainHref":"1-3/DOM/","href":"#event-attributeRemoved"}]},"dom.characterdatamodified":{"keyword":"DOM.characterDataModified","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors `DOMCharacterDataModified` event.","domainHref":"1-3/DOM/","href":"#event-characterDataModified"}]},"dom.childnodecountupdated":{"keyword":"DOM.childNodeCountUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Container`'s child node count has changed.","domainHref":"1-3/DOM/","href":"#event-childNodeCountUpdated"}]},"dom.childnodeinserted":{"keyword":"DOM.childNodeInserted","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors `DOMNodeInserted` event.","domainHref":"1-3/DOM/","href":"#event-childNodeInserted"}]},"dom.childnoderemoved":{"keyword":"DOM.childNodeRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors `DOMNodeRemoved` event.","domainHref":"1-3/DOM/","href":"#event-childNodeRemoved"}]},"dom.documentupdated":{"keyword":"DOM.documentUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Document` has been totally updated. Node ids are no longer valid.","domainHref":"1-3/DOM/","href":"#event-documentUpdated"}]},"dom.setchildnodes":{"keyword":"DOM.setChildNodes","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when backend wants to provide client with the missing DOM structure. This happens upon\nmost of the calls requesting node ids.","domainHref":"1-3/DOM/","href":"#event-setChildNodes"}]},"dom.nodeid":{"keyword":"DOM.NodeId","pageReferences":[{"domain":"DOM","type":"3","description":"Unique DOM node identifier.","domainHref":"1-3/DOM/","href":"#type-NodeId"}]},"dom.backendnodeid":{"keyword":"DOM.BackendNodeId","pageReferences":[{"domain":"DOM","type":"3","description":"Unique DOM node identifier used to reference a node that may not have been pushed to the\nfront-end.","domainHref":"1-3/DOM/","href":"#type-BackendNodeId"}]},"dom.backendnode":{"keyword":"DOM.BackendNode","pageReferences":[{"domain":"DOM","type":"3","description":"Backend node with a friendly name.","domainHref":"1-3/DOM/","href":"#type-BackendNode"}]},"dom.pseudotype":{"keyword":"DOM.PseudoType","pageReferences":[{"domain":"DOM","type":"3","description":"Pseudo element type.","domainHref":"1-3/DOM/","href":"#type-PseudoType"}]},"dom.shadowroottype":{"keyword":"DOM.ShadowRootType","pageReferences":[{"domain":"DOM","type":"3","description":"Shadow root type.","domainHref":"1-3/DOM/","href":"#type-ShadowRootType"}]},"dom.compatibilitymode":{"keyword":"DOM.CompatibilityMode","pageReferences":[{"domain":"DOM","type":"3","description":"Document compatibility mode.","domainHref":"1-3/DOM/","href":"#type-CompatibilityMode"}]},"dom.physicalaxes":{"keyword":"DOM.PhysicalAxes","pageReferences":[{"domain":"DOM","type":"3","description":"ContainerSelector physical axes","domainHref":"1-3/DOM/","href":"#type-PhysicalAxes"}]},"dom.logicalaxes":{"keyword":"DOM.LogicalAxes","pageReferences":[{"domain":"DOM","type":"3","description":"ContainerSelector logical axes","domainHref":"1-3/DOM/","href":"#type-LogicalAxes"}]},"dom.scrollorientation":{"keyword":"DOM.ScrollOrientation","pageReferences":[{"domain":"DOM","type":"3","description":"Physical scroll orientation","domainHref":"1-3/DOM/","href":"#type-ScrollOrientation"}]},"dom.node":{"keyword":"DOM.Node","pageReferences":[{"domain":"DOM","type":"3","description":"DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes.\nDOMNode is a base node mirror type.","domainHref":"1-3/DOM/","href":"#type-Node"}]},"dom.detachedelementinfo":{"keyword":"DOM.DetachedElementInfo","pageReferences":[{"domain":"DOM","type":"3","description":"A structure to hold the top-level node of a detached tree and an array of its retained descendants.","domainHref":"1-3/DOM/","href":"#type-DetachedElementInfo"}]},"dom.rgba":{"keyword":"DOM.RGBA","pageReferences":[{"domain":"DOM","type":"3","description":"A structure holding an RGBA color.","domainHref":"1-3/DOM/","href":"#type-RGBA"}]},"dom.quad":{"keyword":"DOM.Quad","pageReferences":[{"domain":"DOM","type":"3","description":"An array of quad vertices, x immediately followed by y for each point, points clock-wise.","domainHref":"1-3/DOM/","href":"#type-Quad"}]},"dom.boxmodel":{"keyword":"DOM.BoxModel","pageReferences":[{"domain":"DOM","type":"3","description":"Box model.","domainHref":"1-3/DOM/","href":"#type-BoxModel"}]},"dom.shapeoutsideinfo":{"keyword":"DOM.ShapeOutsideInfo","pageReferences":[{"domain":"DOM","type":"3","description":"CSS Shape Outside details.","domainHref":"1-3/DOM/","href":"#type-ShapeOutsideInfo"}]},"dom.rect":{"keyword":"DOM.Rect","pageReferences":[{"domain":"DOM","type":"3","description":"Rectangle.","domainHref":"1-3/DOM/","href":"#type-Rect"}]},"dom.csscomputedstyleproperty":{"keyword":"DOM.CSSComputedStyleProperty","pageReferences":[{"domain":"DOM","type":"3","domainHref":"1-3/DOM/","href":"#type-CSSComputedStyleProperty"}]},"domdebugger":{"keyword":"DOMDebugger","pageReferences":[{"domain":"DOMDebugger","type":"0","description":"DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript\nexecution will stop on these operations as if there was a regular breakpoint set.","domainHref":"1-3/DOMDebugger/"}]},"domdebugger.geteventlisteners":{"keyword":"DOMDebugger.getEventListeners","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Returns event listeners of the given object.","domainHref":"1-3/DOMDebugger/","href":"#method-getEventListeners"}]},"domdebugger.removedombreakpoint":{"keyword":"DOMDebugger.removeDOMBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes DOM breakpoint that was set using `setDOMBreakpoint`.","domainHref":"1-3/DOMDebugger/","href":"#method-removeDOMBreakpoint"}]},"domdebugger.removeeventlistenerbreakpoint":{"keyword":"DOMDebugger.removeEventListenerBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint on particular DOM event.","domainHref":"1-3/DOMDebugger/","href":"#method-removeEventListenerBreakpoint"}]},"domdebugger.removexhrbreakpoint":{"keyword":"DOMDebugger.removeXHRBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint from XMLHttpRequest.","domainHref":"1-3/DOMDebugger/","href":"#method-removeXHRBreakpoint"}]},"domdebugger.setdombreakpoint":{"keyword":"DOMDebugger.setDOMBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular operation with DOM.","domainHref":"1-3/DOMDebugger/","href":"#method-setDOMBreakpoint"}]},"domdebugger.seteventlistenerbreakpoint":{"keyword":"DOMDebugger.setEventListenerBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular DOM event.","domainHref":"1-3/DOMDebugger/","href":"#method-setEventListenerBreakpoint"}]},"domdebugger.setxhrbreakpoint":{"keyword":"DOMDebugger.setXHRBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on XMLHttpRequest.","domainHref":"1-3/DOMDebugger/","href":"#method-setXHRBreakpoint"}]},"domdebugger.dombreakpointtype":{"keyword":"DOMDebugger.DOMBreakpointType","pageReferences":[{"domain":"DOMDebugger","type":"3","description":"DOM breakpoint type.","domainHref":"1-3/DOMDebugger/","href":"#type-DOMBreakpointType"}]},"domdebugger.eventlistener":{"keyword":"DOMDebugger.EventListener","pageReferences":[{"domain":"DOMDebugger","type":"3","description":"Object event listener.","domainHref":"1-3/DOMDebugger/","href":"#type-EventListener"}]},"emulation":{"keyword":"Emulation","pageReferences":[{"domain":"Emulation","type":"0","description":"This domain emulates different environments for the page.","domainHref":"1-3/Emulation/"}]},"emulation.cleardevicemetricsoverride":{"keyword":"Emulation.clearDeviceMetricsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears the overridden device metrics.","domainHref":"1-3/Emulation/","href":"#method-clearDeviceMetricsOverride"}]},"emulation.cleargeolocationoverride":{"keyword":"Emulation.clearGeolocationOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears the overridden Geolocation Position and Error.","domainHref":"1-3/Emulation/","href":"#method-clearGeolocationOverride"}]},"emulation.setcputhrottlingrate":{"keyword":"Emulation.setCPUThrottlingRate","pageReferences":[{"domain":"Emulation","type":"4","description":"Enables CPU throttling to emulate slow CPUs.","domainHref":"1-3/Emulation/","href":"#method-setCPUThrottlingRate"}]},"emulation.setdefaultbackgroundcoloroverride":{"keyword":"Emulation.setDefaultBackgroundColorOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Sets or clears an override of the default background color of the frame. This override is used\nif the content does not specify one.","domainHref":"1-3/Emulation/","href":"#method-setDefaultBackgroundColorOverride"}]},"emulation.setdevicemetricsoverride":{"keyword":"Emulation.setDeviceMetricsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the values of device screen dimensions (window.screen.width, window.screen.height,\nwindow.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media\nquery results).","domainHref":"1-3/Emulation/","href":"#method-setDeviceMetricsOverride"}]},"emulation.setemulatedmedia":{"keyword":"Emulation.setEmulatedMedia","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given media type or media feature for CSS media queries.","domainHref":"1-3/Emulation/","href":"#method-setEmulatedMedia"}]},"emulation.setemulatedvisiondeficiency":{"keyword":"Emulation.setEmulatedVisionDeficiency","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given vision deficiency.","domainHref":"1-3/Emulation/","href":"#method-setEmulatedVisionDeficiency"}]},"emulation.setemulatedostextscale":{"keyword":"Emulation.setEmulatedOSTextScale","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given OS text scale.","domainHref":"1-3/Emulation/","href":"#method-setEmulatedOSTextScale"}]},"emulation.setgeolocationoverride":{"keyword":"Emulation.setGeolocationOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the Geolocation Position or Error. Omitting latitude, longitude or\naccuracy emulates position unavailable.","domainHref":"1-3/Emulation/","href":"#method-setGeolocationOverride"}]},"emulation.setidleoverride":{"keyword":"Emulation.setIdleOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the Idle state.","domainHref":"1-3/Emulation/","href":"#method-setIdleOverride"}]},"emulation.clearidleoverride":{"keyword":"Emulation.clearIdleOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears Idle state overrides.","domainHref":"1-3/Emulation/","href":"#method-clearIdleOverride"}]},"emulation.setscriptexecutiondisabled":{"keyword":"Emulation.setScriptExecutionDisabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Switches script execution in the page.","domainHref":"1-3/Emulation/","href":"#method-setScriptExecutionDisabled"}]},"emulation.settouchemulationenabled":{"keyword":"Emulation.setTouchEmulationEnabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Enables touch on platforms which do not support them.","domainHref":"1-3/Emulation/","href":"#method-setTouchEmulationEnabled"}]},"emulation.settimezoneoverride":{"keyword":"Emulation.setTimezoneOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides default host system timezone with the specified one.","domainHref":"1-3/Emulation/","href":"#method-setTimezoneOverride"}]},"emulation.setuseragentoverride":{"keyword":"Emulation.setUserAgentOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Allows overriding user agent with the given string.\n`userAgentMetadata` must be set for Client Hint headers to be sent.","domainHref":"1-3/Emulation/","href":"#method-setUserAgentOverride"}]},"emulation.screenorientation":{"keyword":"Emulation.ScreenOrientation","pageReferences":[{"domain":"Emulation","type":"3","description":"Screen orientation.","domainHref":"1-3/Emulation/","href":"#type-ScreenOrientation"}]},"emulation.displayfeature":{"keyword":"Emulation.DisplayFeature","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"1-3/Emulation/","href":"#type-DisplayFeature"}]},"emulation.deviceposture":{"keyword":"Emulation.DevicePosture","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"1-3/Emulation/","href":"#type-DevicePosture"}]},"emulation.mediafeature":{"keyword":"Emulation.MediaFeature","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"1-3/Emulation/","href":"#type-MediaFeature"}]},"io":{"keyword":"IO","pageReferences":[{"domain":"IO","type":"0","description":"Input/Output operations for streams produced by DevTools.","domainHref":"1-3/IO/"}]},"io.close":{"keyword":"IO.close","pageReferences":[{"domain":"IO","type":"4","description":"Close the stream, discard any temporary backing storage.","domainHref":"1-3/IO/","href":"#method-close"}]},"io.read":{"keyword":"IO.read","pageReferences":[{"domain":"IO","type":"4","description":"Read a chunk of the stream","domainHref":"1-3/IO/","href":"#method-read"}]},"io.resolveblob":{"keyword":"IO.resolveBlob","pageReferences":[{"domain":"IO","type":"4","description":"Return UUID of Blob object specified by a remote object id.","domainHref":"1-3/IO/","href":"#method-resolveBlob"}]},"io.streamhandle":{"keyword":"IO.StreamHandle","pageReferences":[{"domain":"IO","type":"3","description":"This is either obtained from another method or specified as `blob:` where\n`` is an UUID of a Blob.","domainHref":"1-3/IO/","href":"#type-StreamHandle"}]},"input":{"keyword":"Input","pageReferences":[{"domain":"Input","type":"0","domainHref":"1-3/Input/"}]},"input.dispatchkeyevent":{"keyword":"Input.dispatchKeyEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a key event to the page.","domainHref":"1-3/Input/","href":"#method-dispatchKeyEvent"}]},"input.dispatchmouseevent":{"keyword":"Input.dispatchMouseEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a mouse event to the page.","domainHref":"1-3/Input/","href":"#method-dispatchMouseEvent"}]},"input.dispatchtouchevent":{"keyword":"Input.dispatchTouchEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a touch event to the page.","domainHref":"1-3/Input/","href":"#method-dispatchTouchEvent"}]},"input.canceldragging":{"keyword":"Input.cancelDragging","pageReferences":[{"domain":"Input","type":"4","description":"Cancels any active dragging in the page.","domainHref":"1-3/Input/","href":"#method-cancelDragging"}]},"input.setignoreinputevents":{"keyword":"Input.setIgnoreInputEvents","pageReferences":[{"domain":"Input","type":"4","description":"Ignores input events (useful while auditing page).","domainHref":"1-3/Input/","href":"#method-setIgnoreInputEvents"}]},"input.touchpoint":{"keyword":"Input.TouchPoint","pageReferences":[{"domain":"Input","type":"3","domainHref":"1-3/Input/","href":"#type-TouchPoint"}]},"input.mousebutton":{"keyword":"Input.MouseButton","pageReferences":[{"domain":"Input","type":"3","domainHref":"1-3/Input/","href":"#type-MouseButton"}]},"input.timesinceepoch":{"keyword":"Input.TimeSinceEpoch","pageReferences":[{"domain":"Input","type":"3","description":"UTC time in seconds, counted from January 1, 1970.","domainHref":"1-3/Input/","href":"#type-TimeSinceEpoch"}]},"log":{"keyword":"Log","pageReferences":[{"domain":"Log","type":"0","description":"Provides access to log entries.","domainHref":"1-3/Log/"}]},"log.clear":{"keyword":"Log.clear","pageReferences":[{"domain":"Log","type":"4","description":"Clears the log.","domainHref":"1-3/Log/","href":"#method-clear"}]},"log.disable":{"keyword":"Log.disable","pageReferences":[{"domain":"Log","type":"4","description":"Disables log domain, prevents further log entries from being reported to the client.","domainHref":"1-3/Log/","href":"#method-disable"}]},"log.enable":{"keyword":"Log.enable","pageReferences":[{"domain":"Log","type":"4","description":"Enables log domain, sends the entries collected so far to the client by means of the\n`entryAdded` notification.","domainHref":"1-3/Log/","href":"#method-enable"}]},"log.startviolationsreport":{"keyword":"Log.startViolationsReport","pageReferences":[{"domain":"Log","type":"4","description":"start violation reporting.","domainHref":"1-3/Log/","href":"#method-startViolationsReport"}]},"log.stopviolationsreport":{"keyword":"Log.stopViolationsReport","pageReferences":[{"domain":"Log","type":"4","description":"Stop violation reporting.","domainHref":"1-3/Log/","href":"#method-stopViolationsReport"}]},"log.entryadded":{"keyword":"Log.entryAdded","pageReferences":[{"domain":"Log","type":"1","description":"Issued when new message was logged.","domainHref":"1-3/Log/","href":"#event-entryAdded"}]},"log.logentry":{"keyword":"Log.LogEntry","pageReferences":[{"domain":"Log","type":"3","description":"Log entry.","domainHref":"1-3/Log/","href":"#type-LogEntry"}]},"log.violationsetting":{"keyword":"Log.ViolationSetting","pageReferences":[{"domain":"Log","type":"3","description":"Violation configuration setting.","domainHref":"1-3/Log/","href":"#type-ViolationSetting"}]},"network":{"keyword":"Network","pageReferences":[{"domain":"Network","type":"0","description":"Network domain allows tracking network activities of the page. It exposes information about http,\nfile, data and other requests and responses, their headers, bodies, timing, etc.","domainHref":"1-3/Network/"}]},"network.clearbrowsercache":{"keyword":"Network.clearBrowserCache","pageReferences":[{"domain":"Network","type":"4","description":"Clears browser cache.","domainHref":"1-3/Network/","href":"#method-clearBrowserCache"}]},"network.clearbrowsercookies":{"keyword":"Network.clearBrowserCookies","pageReferences":[{"domain":"Network","type":"4","description":"Clears browser cookies.","domainHref":"1-3/Network/","href":"#method-clearBrowserCookies"}]},"network.deletecookies":{"keyword":"Network.deleteCookies","pageReferences":[{"domain":"Network","type":"4","description":"Deletes browser cookies with matching name and url or domain/path/partitionKey pair.","domainHref":"1-3/Network/","href":"#method-deleteCookies"}]},"network.disable":{"keyword":"Network.disable","pageReferences":[{"domain":"Network","type":"4","description":"Disables network tracking, prevents network events from being sent to the client.","domainHref":"1-3/Network/","href":"#method-disable"}]},"network.emulatenetworkconditions":{"keyword":"Network.emulateNetworkConditions","pageReferences":[{"domain":"Network","type":"4","description":"Activates emulation of network conditions.","domainHref":"1-3/Network/","href":"#method-emulateNetworkConditions"}]},"network.enable":{"keyword":"Network.enable","pageReferences":[{"domain":"Network","type":"4","description":"Enables network tracking, network events will now be delivered to the client.","domainHref":"1-3/Network/","href":"#method-enable"}]},"network.getcookies":{"keyword":"Network.getCookies","pageReferences":[{"domain":"Network","type":"4","description":"Returns all browser cookies for the current URL. Depending on the backend support, will return\ndetailed cookie information in the `cookies` field.","domainHref":"1-3/Network/","href":"#method-getCookies"}]},"network.getresponsebody":{"keyword":"Network.getResponseBody","pageReferences":[{"domain":"Network","type":"4","description":"Returns content served for the given request.","domainHref":"1-3/Network/","href":"#method-getResponseBody"}]},"network.getrequestpostdata":{"keyword":"Network.getRequestPostData","pageReferences":[{"domain":"Network","type":"4","description":"Returns post data sent with the request. Returns an error when no data was sent with the request.","domainHref":"1-3/Network/","href":"#method-getRequestPostData"}]},"network.setbypassserviceworker":{"keyword":"Network.setBypassServiceWorker","pageReferences":[{"domain":"Network","type":"4","description":"Toggles ignoring of service worker for each request.","domainHref":"1-3/Network/","href":"#method-setBypassServiceWorker"}]},"network.setcachedisabled":{"keyword":"Network.setCacheDisabled","pageReferences":[{"domain":"Network","type":"4","description":"Toggles ignoring cache for each request. If `true`, cache will not be used.","domainHref":"1-3/Network/","href":"#method-setCacheDisabled"}]},"network.setcookie":{"keyword":"Network.setCookie","pageReferences":[{"domain":"Network","type":"4","description":"Sets a cookie with the given cookie data; may overwrite equivalent cookies if they exist.","domainHref":"1-3/Network/","href":"#method-setCookie"}]},"network.setcookies":{"keyword":"Network.setCookies","pageReferences":[{"domain":"Network","type":"4","description":"Sets given cookies.","domainHref":"1-3/Network/","href":"#method-setCookies"}]},"network.setextrahttpheaders":{"keyword":"Network.setExtraHTTPHeaders","pageReferences":[{"domain":"Network","type":"4","description":"Specifies whether to always send extra HTTP headers with the requests from this page.","domainHref":"1-3/Network/","href":"#method-setExtraHTTPHeaders"}]},"network.setuseragentoverride":{"keyword":"Network.setUserAgentOverride","pageReferences":[{"domain":"Network","type":"4","description":"Allows overriding user agent with the given string.","domainHref":"1-3/Network/","href":"#method-setUserAgentOverride"}]},"network.datareceived":{"keyword":"Network.dataReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when data chunk was received over the network.","domainHref":"1-3/Network/","href":"#event-dataReceived"}]},"network.eventsourcemessagereceived":{"keyword":"Network.eventSourceMessageReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when EventSource message is received.","domainHref":"1-3/Network/","href":"#event-eventSourceMessageReceived"}]},"network.loadingfailed":{"keyword":"Network.loadingFailed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP request has failed to load.","domainHref":"1-3/Network/","href":"#event-loadingFailed"}]},"network.loadingfinished":{"keyword":"Network.loadingFinished","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP request has finished loading.","domainHref":"1-3/Network/","href":"#event-loadingFinished"}]},"network.requestservedfromcache":{"keyword":"Network.requestServedFromCache","pageReferences":[{"domain":"Network","type":"1","description":"Fired if request ended up loading from cache.","domainHref":"1-3/Network/","href":"#event-requestServedFromCache"}]},"network.requestwillbesent":{"keyword":"Network.requestWillBeSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when page is about to send HTTP request.","domainHref":"1-3/Network/","href":"#event-requestWillBeSent"}]},"network.responsereceived":{"keyword":"Network.responseReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP response is available.","domainHref":"1-3/Network/","href":"#event-responseReceived"}]},"network.websocketclosed":{"keyword":"Network.webSocketClosed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket is closed.","domainHref":"1-3/Network/","href":"#event-webSocketClosed"}]},"network.websocketcreated":{"keyword":"Network.webSocketCreated","pageReferences":[{"domain":"Network","type":"1","description":"Fired upon WebSocket creation.","domainHref":"1-3/Network/","href":"#event-webSocketCreated"}]},"network.websocketframeerror":{"keyword":"Network.webSocketFrameError","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket message error occurs.","domainHref":"1-3/Network/","href":"#event-webSocketFrameError"}]},"network.websocketframereceived":{"keyword":"Network.webSocketFrameReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket message is received.","domainHref":"1-3/Network/","href":"#event-webSocketFrameReceived"}]},"network.websocketframesent":{"keyword":"Network.webSocketFrameSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket message is sent.","domainHref":"1-3/Network/","href":"#event-webSocketFrameSent"}]},"network.websockethandshakeresponsereceived":{"keyword":"Network.webSocketHandshakeResponseReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket handshake response becomes available.","domainHref":"1-3/Network/","href":"#event-webSocketHandshakeResponseReceived"}]},"network.websocketwillsendhandshakerequest":{"keyword":"Network.webSocketWillSendHandshakeRequest","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket is about to initiate handshake.","domainHref":"1-3/Network/","href":"#event-webSocketWillSendHandshakeRequest"}]},"network.webtransportcreated":{"keyword":"Network.webTransportCreated","pageReferences":[{"domain":"Network","type":"1","description":"Fired upon WebTransport creation.","domainHref":"1-3/Network/","href":"#event-webTransportCreated"}]},"network.webtransportconnectionestablished":{"keyword":"Network.webTransportConnectionEstablished","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebTransport handshake is finished.","domainHref":"1-3/Network/","href":"#event-webTransportConnectionEstablished"}]},"network.webtransportclosed":{"keyword":"Network.webTransportClosed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebTransport is disposed.","domainHref":"1-3/Network/","href":"#event-webTransportClosed"}]},"network.resourcetype":{"keyword":"Network.ResourceType","pageReferences":[{"domain":"Network","type":"3","description":"Resource type as it was perceived by the rendering engine.","domainHref":"1-3/Network/","href":"#type-ResourceType"}]},"network.loaderid":{"keyword":"Network.LoaderId","pageReferences":[{"domain":"Network","type":"3","description":"Unique loader identifier.","domainHref":"1-3/Network/","href":"#type-LoaderId"}]},"network.requestid":{"keyword":"Network.RequestId","pageReferences":[{"domain":"Network","type":"3","description":"Unique network request identifier.\nNote that this does not identify individual HTTP requests that are part of\na network request.","domainHref":"1-3/Network/","href":"#type-RequestId"}]},"network.interceptionid":{"keyword":"Network.InterceptionId","pageReferences":[{"domain":"Network","type":"3","description":"Unique intercepted request identifier.","domainHref":"1-3/Network/","href":"#type-InterceptionId"}]},"network.errorreason":{"keyword":"Network.ErrorReason","pageReferences":[{"domain":"Network","type":"3","description":"Network level fetch failure reason.","domainHref":"1-3/Network/","href":"#type-ErrorReason"}]},"network.timesinceepoch":{"keyword":"Network.TimeSinceEpoch","pageReferences":[{"domain":"Network","type":"3","description":"UTC time in seconds, counted from January 1, 1970.","domainHref":"1-3/Network/","href":"#type-TimeSinceEpoch"}]},"network.monotonictime":{"keyword":"Network.MonotonicTime","pageReferences":[{"domain":"Network","type":"3","description":"Monotonically increasing time in seconds since an arbitrary point in the past.","domainHref":"1-3/Network/","href":"#type-MonotonicTime"}]},"network.headers":{"keyword":"Network.Headers","pageReferences":[{"domain":"Network","type":"3","description":"Request / response headers as keys / values of JSON object.","domainHref":"1-3/Network/","href":"#type-Headers"}]},"network.connectiontype":{"keyword":"Network.ConnectionType","pageReferences":[{"domain":"Network","type":"3","description":"The underlying connection technology that the browser is supposedly using.","domainHref":"1-3/Network/","href":"#type-ConnectionType"}]},"network.cookiesamesite":{"keyword":"Network.CookieSameSite","pageReferences":[{"domain":"Network","type":"3","description":"Represents the cookie's 'SameSite' status:\nhttps://tools.ietf.org/html/draft-west-first-party-cookies","domainHref":"1-3/Network/","href":"#type-CookieSameSite"}]},"network.resourcetiming":{"keyword":"Network.ResourceTiming","pageReferences":[{"domain":"Network","type":"3","description":"Timing information for the request.","domainHref":"1-3/Network/","href":"#type-ResourceTiming"}]},"network.resourcepriority":{"keyword":"Network.ResourcePriority","pageReferences":[{"domain":"Network","type":"3","description":"Loading priority of a resource request.","domainHref":"1-3/Network/","href":"#type-ResourcePriority"}]},"network.postdataentry":{"keyword":"Network.PostDataEntry","pageReferences":[{"domain":"Network","type":"3","description":"Post data entry for HTTP request","domainHref":"1-3/Network/","href":"#type-PostDataEntry"}]},"network.request":{"keyword":"Network.Request","pageReferences":[{"domain":"Network","type":"3","description":"HTTP request data.","domainHref":"1-3/Network/","href":"#type-Request"}]},"network.signedcertificatetimestamp":{"keyword":"Network.SignedCertificateTimestamp","pageReferences":[{"domain":"Network","type":"3","description":"Details of a signed certificate timestamp (SCT).","domainHref":"1-3/Network/","href":"#type-SignedCertificateTimestamp"}]},"network.securitydetails":{"keyword":"Network.SecurityDetails","pageReferences":[{"domain":"Network","type":"3","description":"Security details about a request.","domainHref":"1-3/Network/","href":"#type-SecurityDetails"}]},"network.certificatetransparencycompliance":{"keyword":"Network.CertificateTransparencyCompliance","pageReferences":[{"domain":"Network","type":"3","description":"Whether the request complied with Certificate Transparency policy.","domainHref":"1-3/Network/","href":"#type-CertificateTransparencyCompliance"}]},"network.blockedreason":{"keyword":"Network.BlockedReason","pageReferences":[{"domain":"Network","type":"3","description":"The reason why request was blocked.","domainHref":"1-3/Network/","href":"#type-BlockedReason"}]},"network.corserror":{"keyword":"Network.CorsError","pageReferences":[{"domain":"Network","type":"3","description":"The reason why request was blocked.","domainHref":"1-3/Network/","href":"#type-CorsError"}]},"network.corserrorstatus":{"keyword":"Network.CorsErrorStatus","pageReferences":[{"domain":"Network","type":"3","domainHref":"1-3/Network/","href":"#type-CorsErrorStatus"}]},"network.serviceworkerresponsesource":{"keyword":"Network.ServiceWorkerResponseSource","pageReferences":[{"domain":"Network","type":"3","description":"Source of serviceworker response.","domainHref":"1-3/Network/","href":"#type-ServiceWorkerResponseSource"}]},"network.serviceworkerroutersource":{"keyword":"Network.ServiceWorkerRouterSource","pageReferences":[{"domain":"Network","type":"3","description":"Source of service worker router.","domainHref":"1-3/Network/","href":"#type-ServiceWorkerRouterSource"}]},"network.response":{"keyword":"Network.Response","pageReferences":[{"domain":"Network","type":"3","description":"HTTP response data.","domainHref":"1-3/Network/","href":"#type-Response"}]},"network.websocketrequest":{"keyword":"Network.WebSocketRequest","pageReferences":[{"domain":"Network","type":"3","description":"WebSocket request data.","domainHref":"1-3/Network/","href":"#type-WebSocketRequest"}]},"network.websocketresponse":{"keyword":"Network.WebSocketResponse","pageReferences":[{"domain":"Network","type":"3","description":"WebSocket response data.","domainHref":"1-3/Network/","href":"#type-WebSocketResponse"}]},"network.websocketframe":{"keyword":"Network.WebSocketFrame","pageReferences":[{"domain":"Network","type":"3","description":"WebSocket message data. This represents an entire WebSocket message, not just a fragmented frame as the name suggests.","domainHref":"1-3/Network/","href":"#type-WebSocketFrame"}]},"network.cachedresource":{"keyword":"Network.CachedResource","pageReferences":[{"domain":"Network","type":"3","description":"Information about the cached resource.","domainHref":"1-3/Network/","href":"#type-CachedResource"}]},"network.initiator":{"keyword":"Network.Initiator","pageReferences":[{"domain":"Network","type":"3","description":"Information about the request initiator.","domainHref":"1-3/Network/","href":"#type-Initiator"}]},"network.cookie":{"keyword":"Network.Cookie","pageReferences":[{"domain":"Network","type":"3","description":"Cookie object","domainHref":"1-3/Network/","href":"#type-Cookie"}]},"network.cookieparam":{"keyword":"Network.CookieParam","pageReferences":[{"domain":"Network","type":"3","description":"Cookie parameter object","domainHref":"1-3/Network/","href":"#type-CookieParam"}]},"page":{"keyword":"Page","pageReferences":[{"domain":"Page","type":"0","description":"Actions and events related to the inspected page belong to the page domain.","domainHref":"1-3/Page/"}]},"page.addscripttoevaluateonnewdocument":{"keyword":"Page.addScriptToEvaluateOnNewDocument","pageReferences":[{"domain":"Page","type":"4","description":"Evaluates given script in every frame upon creation (before loading frame's scripts).","domainHref":"1-3/Page/","href":"#method-addScriptToEvaluateOnNewDocument"}]},"page.bringtofront":{"keyword":"Page.bringToFront","pageReferences":[{"domain":"Page","type":"4","description":"Brings page to front (activates tab).","domainHref":"1-3/Page/","href":"#method-bringToFront"}]},"page.capturescreenshot":{"keyword":"Page.captureScreenshot","pageReferences":[{"domain":"Page","type":"4","description":"Capture page screenshot.","domainHref":"1-3/Page/","href":"#method-captureScreenshot"}]},"page.createisolatedworld":{"keyword":"Page.createIsolatedWorld","pageReferences":[{"domain":"Page","type":"4","description":"Creates an isolated world for the given frame.","domainHref":"1-3/Page/","href":"#method-createIsolatedWorld"}]},"page.disable":{"keyword":"Page.disable","pageReferences":[{"domain":"Page","type":"4","description":"Disables page domain notifications.","domainHref":"1-3/Page/","href":"#method-disable"}]},"page.enable":{"keyword":"Page.enable","pageReferences":[{"domain":"Page","type":"4","description":"Enables page domain notifications.","domainHref":"1-3/Page/","href":"#method-enable"}]},"page.getappmanifest":{"keyword":"Page.getAppManifest","pageReferences":[{"domain":"Page","type":"4","description":"Gets the processed manifest for this current document.\n This API always waits for the manifest to be loaded.\n If manifestId is provided, and it does not match the manifest of the\n current documen...","domainHref":"1-3/Page/","href":"#method-getAppManifest"}]},"page.getframetree":{"keyword":"Page.getFrameTree","pageReferences":[{"domain":"Page","type":"4","description":"Returns present frame tree structure.","domainHref":"1-3/Page/","href":"#method-getFrameTree"}]},"page.getlayoutmetrics":{"keyword":"Page.getLayoutMetrics","pageReferences":[{"domain":"Page","type":"4","description":"Returns metrics relating to the layouting of the page, such as viewport bounds/scale.","domainHref":"1-3/Page/","href":"#method-getLayoutMetrics"}]},"page.getnavigationhistory":{"keyword":"Page.getNavigationHistory","pageReferences":[{"domain":"Page","type":"4","description":"Returns navigation history for the current page.","domainHref":"1-3/Page/","href":"#method-getNavigationHistory"}]},"page.resetnavigationhistory":{"keyword":"Page.resetNavigationHistory","pageReferences":[{"domain":"Page","type":"4","description":"Resets navigation history for the current page.","domainHref":"1-3/Page/","href":"#method-resetNavigationHistory"}]},"page.handlejavascriptdialog":{"keyword":"Page.handleJavaScriptDialog","pageReferences":[{"domain":"Page","type":"4","description":"Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).","domainHref":"1-3/Page/","href":"#method-handleJavaScriptDialog"}]},"page.navigate":{"keyword":"Page.navigate","pageReferences":[{"domain":"Page","type":"4","description":"Navigates current page to the given URL.","domainHref":"1-3/Page/","href":"#method-navigate"}]},"page.navigatetohistoryentry":{"keyword":"Page.navigateToHistoryEntry","pageReferences":[{"domain":"Page","type":"4","description":"Navigates current page to the given history entry.","domainHref":"1-3/Page/","href":"#method-navigateToHistoryEntry"}]},"page.printtopdf":{"keyword":"Page.printToPDF","pageReferences":[{"domain":"Page","type":"4","description":"Print page as PDF.","domainHref":"1-3/Page/","href":"#method-printToPDF"}]},"page.reload":{"keyword":"Page.reload","pageReferences":[{"domain":"Page","type":"4","description":"Reloads given page optionally ignoring the cache.","domainHref":"1-3/Page/","href":"#method-reload"}]},"page.removescripttoevaluateonnewdocument":{"keyword":"Page.removeScriptToEvaluateOnNewDocument","pageReferences":[{"domain":"Page","type":"4","description":"Removes given script from the list.","domainHref":"1-3/Page/","href":"#method-removeScriptToEvaluateOnNewDocument"}]},"page.setbypasscsp":{"keyword":"Page.setBypassCSP","pageReferences":[{"domain":"Page","type":"4","description":"Enable page Content Security Policy by-passing.","domainHref":"1-3/Page/","href":"#method-setBypassCSP"}]},"page.setdocumentcontent":{"keyword":"Page.setDocumentContent","pageReferences":[{"domain":"Page","type":"4","description":"Sets given markup as the document's HTML.","domainHref":"1-3/Page/","href":"#method-setDocumentContent"}]},"page.setlifecycleeventsenabled":{"keyword":"Page.setLifecycleEventsEnabled","pageReferences":[{"domain":"Page","type":"4","description":"Controls whether page will emit lifecycle events.","domainHref":"1-3/Page/","href":"#method-setLifecycleEventsEnabled"}]},"page.stoploading":{"keyword":"Page.stopLoading","pageReferences":[{"domain":"Page","type":"4","description":"Force the page stop all navigations and pending resource fetches.","domainHref":"1-3/Page/","href":"#method-stopLoading"}]},"page.close":{"keyword":"Page.close","pageReferences":[{"domain":"Page","type":"4","description":"Tries to close page, running its beforeunload hooks, if any.","domainHref":"1-3/Page/","href":"#method-close"}]},"page.setinterceptfilechooserdialog":{"keyword":"Page.setInterceptFileChooserDialog","pageReferences":[{"domain":"Page","type":"4","description":"Intercept file chooser requests and transfer control to protocol clients.\nWhen file chooser interception is enabled, native file chooser dialog is not shown.\nInstead, a protocol event `Page.fileChoose...","domainHref":"1-3/Page/","href":"#method-setInterceptFileChooserDialog"}]},"page.domcontenteventfired":{"keyword":"Page.domContentEventFired","pageReferences":[{"domain":"Page","type":"1","domainHref":"1-3/Page/","href":"#event-domContentEventFired"}]},"page.filechooseropened":{"keyword":"Page.fileChooserOpened","pageReferences":[{"domain":"Page","type":"1","description":"Emitted only when `page.interceptFileChooser` is enabled.","domainHref":"1-3/Page/","href":"#event-fileChooserOpened"}]},"page.frameattached":{"keyword":"Page.frameAttached","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has been attached to its parent.","domainHref":"1-3/Page/","href":"#event-frameAttached"}]},"page.framedetached":{"keyword":"Page.frameDetached","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has been detached from its parent.","domainHref":"1-3/Page/","href":"#event-frameDetached"}]},"page.framenavigated":{"keyword":"Page.frameNavigated","pageReferences":[{"domain":"Page","type":"1","description":"Fired once navigation of the frame has completed. Frame is now associated with the new loader.","domainHref":"1-3/Page/","href":"#event-frameNavigated"}]},"page.interstitialhidden":{"keyword":"Page.interstitialHidden","pageReferences":[{"domain":"Page","type":"1","description":"Fired when interstitial page was hidden","domainHref":"1-3/Page/","href":"#event-interstitialHidden"}]},"page.interstitialshown":{"keyword":"Page.interstitialShown","pageReferences":[{"domain":"Page","type":"1","description":"Fired when interstitial page was shown","domainHref":"1-3/Page/","href":"#event-interstitialShown"}]},"page.javascriptdialogclosed":{"keyword":"Page.javascriptDialogClosed","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been\nclosed.","domainHref":"1-3/Page/","href":"#event-javascriptDialogClosed"}]},"page.javascriptdialogopening":{"keyword":"Page.javascriptDialogOpening","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to\nopen.","domainHref":"1-3/Page/","href":"#event-javascriptDialogOpening"}]},"page.lifecycleevent":{"keyword":"Page.lifecycleEvent","pageReferences":[{"domain":"Page","type":"1","description":"Fired for lifecycle events (navigation, load, paint, etc) in the current\ntarget (including local frames).","domainHref":"1-3/Page/","href":"#event-lifecycleEvent"}]},"page.loadeventfired":{"keyword":"Page.loadEventFired","pageReferences":[{"domain":"Page","type":"1","domainHref":"1-3/Page/","href":"#event-loadEventFired"}]},"page.windowopen":{"keyword":"Page.windowOpen","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a new window is going to be opened, via window.open(), link click, form submission,\netc.","domainHref":"1-3/Page/","href":"#event-windowOpen"}]},"page.frameid":{"keyword":"Page.FrameId","pageReferences":[{"domain":"Page","type":"3","description":"Unique frame identifier.","domainHref":"1-3/Page/","href":"#type-FrameId"}]},"page.frame":{"keyword":"Page.Frame","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Frame on the page.","domainHref":"1-3/Page/","href":"#type-Frame"}]},"page.frametree":{"keyword":"Page.FrameTree","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Frame hierarchy.","domainHref":"1-3/Page/","href":"#type-FrameTree"}]},"page.scriptidentifier":{"keyword":"Page.ScriptIdentifier","pageReferences":[{"domain":"Page","type":"3","description":"Unique script identifier.","domainHref":"1-3/Page/","href":"#type-ScriptIdentifier"}]},"page.transitiontype":{"keyword":"Page.TransitionType","pageReferences":[{"domain":"Page","type":"3","description":"Transition type.","domainHref":"1-3/Page/","href":"#type-TransitionType"}]},"page.navigationentry":{"keyword":"Page.NavigationEntry","pageReferences":[{"domain":"Page","type":"3","description":"Navigation history entry.","domainHref":"1-3/Page/","href":"#type-NavigationEntry"}]},"page.dialogtype":{"keyword":"Page.DialogType","pageReferences":[{"domain":"Page","type":"3","description":"Javascript dialog type.","domainHref":"1-3/Page/","href":"#type-DialogType"}]},"page.appmanifesterror":{"keyword":"Page.AppManifestError","pageReferences":[{"domain":"Page","type":"3","description":"Error while paring app manifest.","domainHref":"1-3/Page/","href":"#type-AppManifestError"}]},"page.layoutviewport":{"keyword":"Page.LayoutViewport","pageReferences":[{"domain":"Page","type":"3","description":"Layout viewport position and dimensions.","domainHref":"1-3/Page/","href":"#type-LayoutViewport"}]},"page.visualviewport":{"keyword":"Page.VisualViewport","pageReferences":[{"domain":"Page","type":"3","description":"Visual viewport position, dimensions, and scale.","domainHref":"1-3/Page/","href":"#type-VisualViewport"}]},"page.viewport":{"keyword":"Page.Viewport","pageReferences":[{"domain":"Page","type":"3","description":"Viewport for capturing screenshot.","domainHref":"1-3/Page/","href":"#type-Viewport"}]},"performance":{"keyword":"Performance","pageReferences":[{"domain":"Performance","type":"0","domainHref":"1-3/Performance/"}]},"performance.disable":{"keyword":"Performance.disable","pageReferences":[{"domain":"Performance","type":"4","description":"Disable collecting and reporting metrics.","domainHref":"1-3/Performance/","href":"#method-disable"}]},"performance.enable":{"keyword":"Performance.enable","pageReferences":[{"domain":"Performance","type":"4","description":"Enable collecting and reporting metrics.","domainHref":"1-3/Performance/","href":"#method-enable"}]},"performance.getmetrics":{"keyword":"Performance.getMetrics","pageReferences":[{"domain":"Performance","type":"4","description":"Retrieve current values of run-time metrics.","domainHref":"1-3/Performance/","href":"#method-getMetrics"}]},"performance.metrics":{"keyword":"Performance.metrics","pageReferences":[{"domain":"Performance","type":"1","description":"Current values of the metrics.","domainHref":"1-3/Performance/","href":"#event-metrics"}]},"performance.metric":{"keyword":"Performance.Metric","pageReferences":[{"domain":"Performance","type":"3","description":"Run-time execution metric.","domainHref":"1-3/Performance/","href":"#type-Metric"}]},"security":{"keyword":"Security","pageReferences":[{"domain":"Security","type":"0","description":"Security","domainHref":"1-3/Security/"}]},"security.disable":{"keyword":"Security.disable","pageReferences":[{"domain":"Security","type":"4","description":"Disables tracking security state changes.","domainHref":"1-3/Security/","href":"#method-disable"}]},"security.enable":{"keyword":"Security.enable","pageReferences":[{"domain":"Security","type":"4","description":"Enables tracking security state changes.","domainHref":"1-3/Security/","href":"#method-enable"}]},"security.setignorecertificateerrors":{"keyword":"Security.setIgnoreCertificateErrors","pageReferences":[{"domain":"Security","type":"4","description":"Enable/disable whether all certificate errors should be ignored.","domainHref":"1-3/Security/","href":"#method-setIgnoreCertificateErrors"}]},"security.certificateid":{"keyword":"Security.CertificateId","pageReferences":[{"domain":"Security","type":"3","description":"An internal certificate ID value.","domainHref":"1-3/Security/","href":"#type-CertificateId"}]},"security.mixedcontenttype":{"keyword":"Security.MixedContentType","pageReferences":[{"domain":"Security","type":"3","description":"A description of mixed content (HTTP resources on HTTPS pages), as defined by\nhttps://www.w3.org/TR/mixed-content/#categories","domainHref":"1-3/Security/","href":"#type-MixedContentType"}]},"security.securitystate":{"keyword":"Security.SecurityState","pageReferences":[{"domain":"Security","type":"3","description":"The security level of a page or resource.","domainHref":"1-3/Security/","href":"#type-SecurityState"}]},"security.securitystateexplanation":{"keyword":"Security.SecurityStateExplanation","pageReferences":[{"domain":"Security","type":"3","description":"An explanation of an factor contributing to the security state.","domainHref":"1-3/Security/","href":"#type-SecurityStateExplanation"}]},"security.certificateerroraction":{"keyword":"Security.CertificateErrorAction","pageReferences":[{"domain":"Security","type":"3","description":"The action to take when a certificate error occurs. continue will continue processing the\nrequest and cancel will cancel the request.","domainHref":"1-3/Security/","href":"#type-CertificateErrorAction"}]},"target":{"keyword":"Target","pageReferences":[{"domain":"Target","type":"0","description":"Supports additional targets discovery and allows to attach to them.","domainHref":"1-3/Target/"}]},"target.activatetarget":{"keyword":"Target.activateTarget","pageReferences":[{"domain":"Target","type":"4","description":"Activates (focuses) the target.","domainHref":"1-3/Target/","href":"#method-activateTarget"}]},"target.attachtotarget":{"keyword":"Target.attachToTarget","pageReferences":[{"domain":"Target","type":"4","description":"Attaches to the target with given id.","domainHref":"1-3/Target/","href":"#method-attachToTarget"}]},"target.closetarget":{"keyword":"Target.closeTarget","pageReferences":[{"domain":"Target","type":"4","description":"Closes the target. If the target is a page that gets closed too.","domainHref":"1-3/Target/","href":"#method-closeTarget"}]},"target.createbrowsercontext":{"keyword":"Target.createBrowserContext","pageReferences":[{"domain":"Target","type":"4","description":"Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than\none.","domainHref":"1-3/Target/","href":"#method-createBrowserContext"}]},"target.getbrowsercontexts":{"keyword":"Target.getBrowserContexts","pageReferences":[{"domain":"Target","type":"4","description":"Returns all browser contexts created with `Target.createBrowserContext` method.","domainHref":"1-3/Target/","href":"#method-getBrowserContexts"}]},"target.createtarget":{"keyword":"Target.createTarget","pageReferences":[{"domain":"Target","type":"4","description":"Creates a new page.","domainHref":"1-3/Target/","href":"#method-createTarget"}]},"target.detachfromtarget":{"keyword":"Target.detachFromTarget","pageReferences":[{"domain":"Target","type":"4","description":"Detaches session with given id.","domainHref":"1-3/Target/","href":"#method-detachFromTarget"}]},"target.disposebrowsercontext":{"keyword":"Target.disposeBrowserContext","pageReferences":[{"domain":"Target","type":"4","description":"Deletes a BrowserContext. All the belonging pages will be closed without calling their\nbeforeunload hooks.","domainHref":"1-3/Target/","href":"#method-disposeBrowserContext"}]},"target.gettargets":{"keyword":"Target.getTargets","pageReferences":[{"domain":"Target","type":"4","description":"Retrieves a list of available targets.","domainHref":"1-3/Target/","href":"#method-getTargets"}]},"target.setautoattach":{"keyword":"Target.setAutoAttach","pageReferences":[{"domain":"Target","type":"4","description":"Controls whether to automatically attach to new targets which are considered\nto be directly related to this one (for example, iframes or workers).\nWhen turned on, attaches to all existing related targ...","domainHref":"1-3/Target/","href":"#method-setAutoAttach"}]},"target.setdiscovertargets":{"keyword":"Target.setDiscoverTargets","pageReferences":[{"domain":"Target","type":"4","description":"Controls whether to discover available targets and notify via\n`targetCreated/targetInfoChanged/targetDestroyed` events.","domainHref":"1-3/Target/","href":"#method-setDiscoverTargets"}]},"target.receivedmessagefromtarget":{"keyword":"Target.receivedMessageFromTarget","pageReferences":[{"domain":"Target","type":"1","description":"Notifies about a new protocol message received from the session (as reported in\n`attachedToTarget` event).","domainHref":"1-3/Target/","href":"#event-receivedMessageFromTarget"}]},"target.targetcreated":{"keyword":"Target.targetCreated","pageReferences":[{"domain":"Target","type":"1","description":"Issued when a possible inspection target is created.","domainHref":"1-3/Target/","href":"#event-targetCreated"}]},"target.targetdestroyed":{"keyword":"Target.targetDestroyed","pageReferences":[{"domain":"Target","type":"1","description":"Issued when a target is destroyed.","domainHref":"1-3/Target/","href":"#event-targetDestroyed"}]},"target.targetcrashed":{"keyword":"Target.targetCrashed","pageReferences":[{"domain":"Target","type":"1","description":"Issued when a target has crashed.","domainHref":"1-3/Target/","href":"#event-targetCrashed"}]},"target.targetinfochanged":{"keyword":"Target.targetInfoChanged","pageReferences":[{"domain":"Target","type":"1","description":"Issued when some information about a target has changed. This only happens between\n`targetCreated` and `targetDestroyed`.","domainHref":"1-3/Target/","href":"#event-targetInfoChanged"}]},"target.targetid":{"keyword":"Target.TargetID","pageReferences":[{"domain":"Target","type":"3","domainHref":"1-3/Target/","href":"#type-TargetID"}]},"target.sessionid":{"keyword":"Target.SessionID","pageReferences":[{"domain":"Target","type":"3","description":"Unique identifier of attached debugging session.","domainHref":"1-3/Target/","href":"#type-SessionID"}]},"target.targetinfo":{"keyword":"Target.TargetInfo","pageReferences":[{"domain":"Target","type":"3","domainHref":"1-3/Target/","href":"#type-TargetInfo"}]},"tracing":{"keyword":"Tracing","pageReferences":[{"domain":"Tracing","type":"0","domainHref":"1-3/Tracing/"}]},"tracing.end":{"keyword":"Tracing.end","pageReferences":[{"domain":"Tracing","type":"4","description":"Stop trace events collection.","domainHref":"1-3/Tracing/","href":"#method-end"}]},"tracing.start":{"keyword":"Tracing.start","pageReferences":[{"domain":"Tracing","type":"4","description":"Start trace events collection.","domainHref":"1-3/Tracing/","href":"#method-start"}]},"tracing.tracingcomplete":{"keyword":"Tracing.tracingComplete","pageReferences":[{"domain":"Tracing","type":"1","description":"Signals that tracing is stopped and there is no trace buffers pending flush, all data were\ndelivered via dataCollected events.","domainHref":"1-3/Tracing/","href":"#event-tracingComplete"}]},"tracing.traceconfig":{"keyword":"Tracing.TraceConfig","pageReferences":[{"domain":"Tracing","type":"3","domainHref":"1-3/Tracing/","href":"#type-TraceConfig"}]},"fetch":{"keyword":"Fetch","pageReferences":[{"domain":"Fetch","type":"0","description":"A domain for letting clients substitute browser's network layer with client code.","domainHref":"1-3/Fetch/"}]},"fetch.disable":{"keyword":"Fetch.disable","pageReferences":[{"domain":"Fetch","type":"4","description":"Disables the fetch domain.","domainHref":"1-3/Fetch/","href":"#method-disable"}]},"fetch.enable":{"keyword":"Fetch.enable","pageReferences":[{"domain":"Fetch","type":"4","description":"Enables issuing of requestPaused events. A request will be paused until client\ncalls one of failRequest, fulfillRequest or continueRequest/continueWithAuth.","domainHref":"1-3/Fetch/","href":"#method-enable"}]},"fetch.failrequest":{"keyword":"Fetch.failRequest","pageReferences":[{"domain":"Fetch","type":"4","description":"Causes the request to fail with specified reason.","domainHref":"1-3/Fetch/","href":"#method-failRequest"}]},"fetch.fulfillrequest":{"keyword":"Fetch.fulfillRequest","pageReferences":[{"domain":"Fetch","type":"4","description":"Provides response to the request.","domainHref":"1-3/Fetch/","href":"#method-fulfillRequest"}]},"fetch.continuerequest":{"keyword":"Fetch.continueRequest","pageReferences":[{"domain":"Fetch","type":"4","description":"Continues the request, optionally modifying some of its parameters.","domainHref":"1-3/Fetch/","href":"#method-continueRequest"}]},"fetch.continuewithauth":{"keyword":"Fetch.continueWithAuth","pageReferences":[{"domain":"Fetch","type":"4","description":"Continues a request supplying authChallengeResponse following authRequired event.","domainHref":"1-3/Fetch/","href":"#method-continueWithAuth"}]},"fetch.getresponsebody":{"keyword":"Fetch.getResponseBody","pageReferences":[{"domain":"Fetch","type":"4","description":"Causes the body of the response to be received from the server and\nreturned as a single string. May only be issued for a request that\nis paused in the Response stage and is mutually exclusive with\ntak...","domainHref":"1-3/Fetch/","href":"#method-getResponseBody"}]},"fetch.takeresponsebodyasstream":{"keyword":"Fetch.takeResponseBodyAsStream","pageReferences":[{"domain":"Fetch","type":"4","description":"Returns a handle to the stream representing the response body.\nThe request must be paused in the HeadersReceived stage.\nNote that after this command the request can't be continued\nas is -- client eith...","domainHref":"1-3/Fetch/","href":"#method-takeResponseBodyAsStream"}]},"fetch.requestpaused":{"keyword":"Fetch.requestPaused","pageReferences":[{"domain":"Fetch","type":"1","description":"Issued when the domain is enabled and the request URL matches the\nspecified filter. The request is paused until the client responds\nwith one of continueRequest, failRequest or fulfillRequest.\nThe stag...","domainHref":"1-3/Fetch/","href":"#event-requestPaused"}]},"fetch.authrequired":{"keyword":"Fetch.authRequired","pageReferences":[{"domain":"Fetch","type":"1","description":"Issued when the domain is enabled with handleAuthRequests set to true.\nThe request is paused until client responds with continueWithAuth.","domainHref":"1-3/Fetch/","href":"#event-authRequired"}]},"fetch.requestid":{"keyword":"Fetch.RequestId","pageReferences":[{"domain":"Fetch","type":"3","description":"Unique request identifier.\nNote that this does not identify individual HTTP requests that are part of\na network request.","domainHref":"1-3/Fetch/","href":"#type-RequestId"}]},"fetch.requeststage":{"keyword":"Fetch.RequestStage","pageReferences":[{"domain":"Fetch","type":"3","description":"Stages of the request to handle. Request will intercept before the request is\nsent. Response will intercept after the response is received (but before response\nbody is received).","domainHref":"1-3/Fetch/","href":"#type-RequestStage"}]},"fetch.requestpattern":{"keyword":"Fetch.RequestPattern","pageReferences":[{"domain":"Fetch","type":"3","domainHref":"1-3/Fetch/","href":"#type-RequestPattern"}]},"fetch.headerentry":{"keyword":"Fetch.HeaderEntry","pageReferences":[{"domain":"Fetch","type":"3","description":"Response HTTP header entry","domainHref":"1-3/Fetch/","href":"#type-HeaderEntry"}]},"fetch.authchallenge":{"keyword":"Fetch.AuthChallenge","pageReferences":[{"domain":"Fetch","type":"3","description":"Authorization challenge for HTTP status code 401 or 407.","domainHref":"1-3/Fetch/","href":"#type-AuthChallenge"}]},"fetch.authchallengeresponse":{"keyword":"Fetch.AuthChallengeResponse","pageReferences":[{"domain":"Fetch","type":"3","description":"Response to an AuthChallenge.","domainHref":"1-3/Fetch/","href":"#type-AuthChallengeResponse"}]},"debugger":{"keyword":"Debugger","pageReferences":[{"domain":"Debugger","type":"0","description":"Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing\nbreakpoints, stepping through execution, exploring stack traces, etc.","domainHref":"1-3/Debugger/"}]},"debugger.continuetolocation":{"keyword":"Debugger.continueToLocation","pageReferences":[{"domain":"Debugger","type":"4","description":"Continues execution until specific location is reached.","domainHref":"1-3/Debugger/","href":"#method-continueToLocation"}]},"debugger.disable":{"keyword":"Debugger.disable","pageReferences":[{"domain":"Debugger","type":"4","description":"Disables debugger for given page.","domainHref":"1-3/Debugger/","href":"#method-disable"}]},"debugger.enable":{"keyword":"Debugger.enable","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables debugger for the given page. Clients should not assume that the debugging has been\nenabled until the result for this command is received.","domainHref":"1-3/Debugger/","href":"#method-enable"}]},"debugger.evaluateoncallframe":{"keyword":"Debugger.evaluateOnCallFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Evaluates expression on a given call frame.","domainHref":"1-3/Debugger/","href":"#method-evaluateOnCallFrame"}]},"debugger.getpossiblebreakpoints":{"keyword":"Debugger.getPossibleBreakpoints","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns possible locations for breakpoint. scriptId in start and end range locations should be\nthe same.","domainHref":"1-3/Debugger/","href":"#method-getPossibleBreakpoints"}]},"debugger.getscriptsource":{"keyword":"Debugger.getScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns source for the script with given id.","domainHref":"1-3/Debugger/","href":"#method-getScriptSource"}]},"debugger.pause":{"keyword":"Debugger.pause","pageReferences":[{"domain":"Debugger","type":"4","description":"Stops on the next JavaScript statement.","domainHref":"1-3/Debugger/","href":"#method-pause"}]},"debugger.removebreakpoint":{"keyword":"Debugger.removeBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Removes JavaScript breakpoint.","domainHref":"1-3/Debugger/","href":"#method-removeBreakpoint"}]},"debugger.restartframe":{"keyword":"Debugger.restartFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Restarts particular call frame from the beginning. The old, deprecated\nbehavior of `restartFrame` is to stay paused and allow further CDP commands\nafter a restart was scheduled. This can cause problem...","domainHref":"1-3/Debugger/","href":"#method-restartFrame"}]},"debugger.resume":{"keyword":"Debugger.resume","pageReferences":[{"domain":"Debugger","type":"4","description":"Resumes JavaScript execution.","domainHref":"1-3/Debugger/","href":"#method-resume"}]},"debugger.searchincontent":{"keyword":"Debugger.searchInContent","pageReferences":[{"domain":"Debugger","type":"4","description":"Searches for given string in script content.","domainHref":"1-3/Debugger/","href":"#method-searchInContent"}]},"debugger.setasynccallstackdepth":{"keyword":"Debugger.setAsyncCallStackDepth","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"1-3/Debugger/","href":"#method-setAsyncCallStackDepth"}]},"debugger.setbreakpoint":{"keyword":"Debugger.setBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at a given location.","domainHref":"1-3/Debugger/","href":"#method-setBreakpoint"}]},"debugger.setinstrumentationbreakpoint":{"keyword":"Debugger.setInstrumentationBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets instrumentation breakpoint.","domainHref":"1-3/Debugger/","href":"#method-setInstrumentationBreakpoint"}]},"debugger.setbreakpointbyurl":{"keyword":"Debugger.setBreakpointByUrl","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this\ncommand is issued, all existing parsed scripts will have breakpoints resolved and returned in\n`locations` p...","domainHref":"1-3/Debugger/","href":"#method-setBreakpointByUrl"}]},"debugger.setbreakpointsactive":{"keyword":"Debugger.setBreakpointsActive","pageReferences":[{"domain":"Debugger","type":"4","description":"Activates / deactivates all breakpoints on the page.","domainHref":"1-3/Debugger/","href":"#method-setBreakpointsActive"}]},"debugger.setpauseonexceptions":{"keyword":"Debugger.setPauseOnExceptions","pageReferences":[{"domain":"Debugger","type":"4","description":"Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions,\nor caught exceptions, no exceptions. Initial pause on exceptions state is `none`.","domainHref":"1-3/Debugger/","href":"#method-setPauseOnExceptions"}]},"debugger.setscriptsource":{"keyword":"Debugger.setScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Edits JavaScript source live.\n\nIn general, functions that are currently on the stack can not be edited with\na single exception: If the edited function is the top-most stack frame and\nthat is the only ...","domainHref":"1-3/Debugger/","href":"#method-setScriptSource"}]},"debugger.setskipallpauses":{"keyword":"Debugger.setSkipAllPauses","pageReferences":[{"domain":"Debugger","type":"4","description":"Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).","domainHref":"1-3/Debugger/","href":"#method-setSkipAllPauses"}]},"debugger.setvariablevalue":{"keyword":"Debugger.setVariableValue","pageReferences":[{"domain":"Debugger","type":"4","description":"Changes value of variable in a callframe. Object-based scopes are not supported and must be\nmutated manually.","domainHref":"1-3/Debugger/","href":"#method-setVariableValue"}]},"debugger.stepinto":{"keyword":"Debugger.stepInto","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps into the function call.","domainHref":"1-3/Debugger/","href":"#method-stepInto"}]},"debugger.stepout":{"keyword":"Debugger.stepOut","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps out of the function call.","domainHref":"1-3/Debugger/","href":"#method-stepOut"}]},"debugger.stepover":{"keyword":"Debugger.stepOver","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps over the statement.","domainHref":"1-3/Debugger/","href":"#method-stepOver"}]},"debugger.paused":{"keyword":"Debugger.paused","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.","domainHref":"1-3/Debugger/","href":"#event-paused"}]},"debugger.resumed":{"keyword":"Debugger.resumed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine resumed execution.","domainHref":"1-3/Debugger/","href":"#event-resumed"}]},"debugger.scriptfailedtoparse":{"keyword":"Debugger.scriptFailedToParse","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine fails to parse the script.","domainHref":"1-3/Debugger/","href":"#event-scriptFailedToParse"}]},"debugger.scriptparsed":{"keyword":"Debugger.scriptParsed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine parses script. This event is also fired for all known and uncollected\nscripts upon enabling debugger.","domainHref":"1-3/Debugger/","href":"#event-scriptParsed"}]},"debugger.breakpointid":{"keyword":"Debugger.BreakpointId","pageReferences":[{"domain":"Debugger","type":"3","description":"Breakpoint identifier.","domainHref":"1-3/Debugger/","href":"#type-BreakpointId"}]},"debugger.callframeid":{"keyword":"Debugger.CallFrameId","pageReferences":[{"domain":"Debugger","type":"3","description":"Call frame identifier.","domainHref":"1-3/Debugger/","href":"#type-CallFrameId"}]},"debugger.location":{"keyword":"Debugger.Location","pageReferences":[{"domain":"Debugger","type":"3","description":"Location in the source code.","domainHref":"1-3/Debugger/","href":"#type-Location"}]},"debugger.callframe":{"keyword":"Debugger.CallFrame","pageReferences":[{"domain":"Debugger","type":"3","description":"JavaScript call frame. Array of call frames form the call stack.","domainHref":"1-3/Debugger/","href":"#type-CallFrame"}]},"debugger.scope":{"keyword":"Debugger.Scope","pageReferences":[{"domain":"Debugger","type":"3","description":"Scope description.","domainHref":"1-3/Debugger/","href":"#type-Scope"}]},"debugger.searchmatch":{"keyword":"Debugger.SearchMatch","pageReferences":[{"domain":"Debugger","type":"3","description":"Search match for resource.","domainHref":"1-3/Debugger/","href":"#type-SearchMatch"}]},"debugger.breaklocation":{"keyword":"Debugger.BreakLocation","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"1-3/Debugger/","href":"#type-BreakLocation"}]},"debugger.scriptlanguage":{"keyword":"Debugger.ScriptLanguage","pageReferences":[{"domain":"Debugger","type":"3","description":"Enum of possible script languages.","domainHref":"1-3/Debugger/","href":"#type-ScriptLanguage"}]},"debugger.debugsymbols":{"keyword":"Debugger.DebugSymbols","pageReferences":[{"domain":"Debugger","type":"3","description":"Debug symbols available for a wasm script.","domainHref":"1-3/Debugger/","href":"#type-DebugSymbols"}]},"debugger.resolvedbreakpoint":{"keyword":"Debugger.ResolvedBreakpoint","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"1-3/Debugger/","href":"#type-ResolvedBreakpoint"}]},"profiler":{"keyword":"Profiler","pageReferences":[{"domain":"Profiler","type":"0","domainHref":"1-3/Profiler/"}]},"profiler.disable":{"keyword":"Profiler.disable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-3/Profiler/","href":"#method-disable"}]},"profiler.enable":{"keyword":"Profiler.enable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-3/Profiler/","href":"#method-enable"}]},"profiler.getbesteffortcoverage":{"keyword":"Profiler.getBestEffortCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Collect coverage data for the current isolate. The coverage data may be incomplete due to\ngarbage collection.","domainHref":"1-3/Profiler/","href":"#method-getBestEffortCoverage"}]},"profiler.setsamplinginterval":{"keyword":"Profiler.setSamplingInterval","pageReferences":[{"domain":"Profiler","type":"4","description":"Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.","domainHref":"1-3/Profiler/","href":"#method-setSamplingInterval"}]},"profiler.start":{"keyword":"Profiler.start","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-3/Profiler/","href":"#method-start"}]},"profiler.startprecisecoverage":{"keyword":"Profiler.startPreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code\ncoverage may be incomplete. Enabling prevents running optimized code and resets execution\ncounters.","domainHref":"1-3/Profiler/","href":"#method-startPreciseCoverage"}]},"profiler.stop":{"keyword":"Profiler.stop","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"1-3/Profiler/","href":"#method-stop"}]},"profiler.stopprecisecoverage":{"keyword":"Profiler.stopPreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Disable precise code coverage. Disabling releases unnecessary execution count records and allows\nexecuting optimized code.","domainHref":"1-3/Profiler/","href":"#method-stopPreciseCoverage"}]},"profiler.takeprecisecoverage":{"keyword":"Profiler.takePreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Collect coverage data for the current isolate, and resets execution counters. Precise code\ncoverage needs to have started.","domainHref":"1-3/Profiler/","href":"#method-takePreciseCoverage"}]},"profiler.consoleprofilefinished":{"keyword":"Profiler.consoleProfileFinished","pageReferences":[{"domain":"Profiler","type":"1","domainHref":"1-3/Profiler/","href":"#event-consoleProfileFinished"}]},"profiler.consoleprofilestarted":{"keyword":"Profiler.consoleProfileStarted","pageReferences":[{"domain":"Profiler","type":"1","description":"Sent when new profile recording is started using console.profile() call.","domainHref":"1-3/Profiler/","href":"#event-consoleProfileStarted"}]},"profiler.profilenode":{"keyword":"Profiler.ProfileNode","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile node. Holds callsite information, execution statistics and child nodes.","domainHref":"1-3/Profiler/","href":"#type-ProfileNode"}]},"profiler.profile":{"keyword":"Profiler.Profile","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile.","domainHref":"1-3/Profiler/","href":"#type-Profile"}]},"profiler.positiontickinfo":{"keyword":"Profiler.PositionTickInfo","pageReferences":[{"domain":"Profiler","type":"3","description":"Specifies a number of samples attributed to a certain source position.","domainHref":"1-3/Profiler/","href":"#type-PositionTickInfo"}]},"profiler.coveragerange":{"keyword":"Profiler.CoverageRange","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a source range.","domainHref":"1-3/Profiler/","href":"#type-CoverageRange"}]},"profiler.functioncoverage":{"keyword":"Profiler.FunctionCoverage","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a JavaScript function.","domainHref":"1-3/Profiler/","href":"#type-FunctionCoverage"}]},"profiler.scriptcoverage":{"keyword":"Profiler.ScriptCoverage","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a JavaScript script.","domainHref":"1-3/Profiler/","href":"#type-ScriptCoverage"}]},"runtime":{"keyword":"Runtime","pageReferences":[{"domain":"Runtime","type":"0","description":"Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects.\nEvaluation results are returned as mirror object that expose object type, string representation\nand unique i...","domainHref":"1-3/Runtime/"}]},"runtime.awaitpromise":{"keyword":"Runtime.awaitPromise","pageReferences":[{"domain":"Runtime","type":"4","description":"Add handler to promise with given promise object id.","domainHref":"1-3/Runtime/","href":"#method-awaitPromise"}]},"runtime.callfunctionon":{"keyword":"Runtime.callFunctionOn","pageReferences":[{"domain":"Runtime","type":"4","description":"Calls function with given declaration on the given object. Object group of the result is\ninherited from the target object.","domainHref":"1-3/Runtime/","href":"#method-callFunctionOn"}]},"runtime.compilescript":{"keyword":"Runtime.compileScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Compiles expression.","domainHref":"1-3/Runtime/","href":"#method-compileScript"}]},"runtime.disable":{"keyword":"Runtime.disable","pageReferences":[{"domain":"Runtime","type":"4","description":"Disables reporting of execution contexts creation.","domainHref":"1-3/Runtime/","href":"#method-disable"}]},"runtime.discardconsoleentries":{"keyword":"Runtime.discardConsoleEntries","pageReferences":[{"domain":"Runtime","type":"4","description":"Discards collected exceptions and console API calls.","domainHref":"1-3/Runtime/","href":"#method-discardConsoleEntries"}]},"runtime.enable":{"keyword":"Runtime.enable","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables reporting of execution contexts creation by means of `executionContextCreated` event.\nWhen the reporting gets enabled the event will be sent immediately for each existing execution\ncontext.","domainHref":"1-3/Runtime/","href":"#method-enable"}]},"runtime.evaluate":{"keyword":"Runtime.evaluate","pageReferences":[{"domain":"Runtime","type":"4","description":"Evaluates expression on global object.","domainHref":"1-3/Runtime/","href":"#method-evaluate"}]},"runtime.getproperties":{"keyword":"Runtime.getProperties","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns properties of a given object. Object group of the result is inherited from the target\nobject.","domainHref":"1-3/Runtime/","href":"#method-getProperties"}]},"runtime.globallexicalscopenames":{"keyword":"Runtime.globalLexicalScopeNames","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns all let, const and class variables from global scope.","domainHref":"1-3/Runtime/","href":"#method-globalLexicalScopeNames"}]},"runtime.queryobjects":{"keyword":"Runtime.queryObjects","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"1-3/Runtime/","href":"#method-queryObjects"}]},"runtime.releaseobject":{"keyword":"Runtime.releaseObject","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases remote object with given id.","domainHref":"1-3/Runtime/","href":"#method-releaseObject"}]},"runtime.releaseobjectgroup":{"keyword":"Runtime.releaseObjectGroup","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases all remote objects that belong to a given group.","domainHref":"1-3/Runtime/","href":"#method-releaseObjectGroup"}]},"runtime.runifwaitingfordebugger":{"keyword":"Runtime.runIfWaitingForDebugger","pageReferences":[{"domain":"Runtime","type":"4","description":"Tells inspected instance to run if it was waiting for debugger to attach.","domainHref":"1-3/Runtime/","href":"#method-runIfWaitingForDebugger"}]},"runtime.runscript":{"keyword":"Runtime.runScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Runs script with given id in a given context.","domainHref":"1-3/Runtime/","href":"#method-runScript"}]},"runtime.setasynccallstackdepth":{"keyword":"Runtime.setAsyncCallStackDepth","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"1-3/Runtime/","href":"#method-setAsyncCallStackDepth"}]},"runtime.addbinding":{"keyword":"Runtime.addBinding","pageReferences":[{"domain":"Runtime","type":"4","description":"If executionContextId is empty, adds binding with the given name on the\nglobal objects of all inspected contexts, including those created later,\nbindings survive reloads.\nBinding function takes exactl...","domainHref":"1-3/Runtime/","href":"#method-addBinding"}]},"runtime.removebinding":{"keyword":"Runtime.removeBinding","pageReferences":[{"domain":"Runtime","type":"4","description":"This method does not remove binding function from global object but\nunsubscribes current runtime agent from Runtime.bindingCalled notifications.","domainHref":"1-3/Runtime/","href":"#method-removeBinding"}]},"runtime.consoleapicalled":{"keyword":"Runtime.consoleAPICalled","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when console API was called.","domainHref":"1-3/Runtime/","href":"#event-consoleAPICalled"}]},"runtime.exceptionrevoked":{"keyword":"Runtime.exceptionRevoked","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when unhandled exception was revoked.","domainHref":"1-3/Runtime/","href":"#event-exceptionRevoked"}]},"runtime.exceptionthrown":{"keyword":"Runtime.exceptionThrown","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when exception was thrown and unhandled.","domainHref":"1-3/Runtime/","href":"#event-exceptionThrown"}]},"runtime.executioncontextcreated":{"keyword":"Runtime.executionContextCreated","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when new execution context is created.","domainHref":"1-3/Runtime/","href":"#event-executionContextCreated"}]},"runtime.executioncontextdestroyed":{"keyword":"Runtime.executionContextDestroyed","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when execution context is destroyed.","domainHref":"1-3/Runtime/","href":"#event-executionContextDestroyed"}]},"runtime.executioncontextscleared":{"keyword":"Runtime.executionContextsCleared","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when all executionContexts were cleared in browser","domainHref":"1-3/Runtime/","href":"#event-executionContextsCleared"}]},"runtime.inspectrequested":{"keyword":"Runtime.inspectRequested","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when object should be inspected (for example, as a result of inspect() command line API\ncall).","domainHref":"1-3/Runtime/","href":"#event-inspectRequested"}]},"runtime.scriptid":{"keyword":"Runtime.ScriptId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique script identifier.","domainHref":"1-3/Runtime/","href":"#type-ScriptId"}]},"runtime.serializationoptions":{"keyword":"Runtime.SerializationOptions","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents options for serialization. Overrides `generatePreview` and `returnByValue`.","domainHref":"1-3/Runtime/","href":"#type-SerializationOptions"}]},"runtime.deepserializedvalue":{"keyword":"Runtime.DeepSerializedValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents deep serialized value.","domainHref":"1-3/Runtime/","href":"#type-DeepSerializedValue"}]},"runtime.remoteobjectid":{"keyword":"Runtime.RemoteObjectId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique object identifier.","domainHref":"1-3/Runtime/","href":"#type-RemoteObjectId"}]},"runtime.unserializablevalue":{"keyword":"Runtime.UnserializableValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,\n`-Infinity`, and bigint literals.","domainHref":"1-3/Runtime/","href":"#type-UnserializableValue"}]},"runtime.remoteobject":{"keyword":"Runtime.RemoteObject","pageReferences":[{"domain":"Runtime","type":"3","description":"Mirror object referencing original JavaScript object.","domainHref":"1-3/Runtime/","href":"#type-RemoteObject"}]},"runtime.propertydescriptor":{"keyword":"Runtime.PropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object property descriptor.","domainHref":"1-3/Runtime/","href":"#type-PropertyDescriptor"}]},"runtime.internalpropertydescriptor":{"keyword":"Runtime.InternalPropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object internal property descriptor. This property isn't normally visible in JavaScript code.","domainHref":"1-3/Runtime/","href":"#type-InternalPropertyDescriptor"}]},"runtime.callargument":{"keyword":"Runtime.CallArgument","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents function call argument. Either remote object id `objectId`, primitive `value`,\nunserializable primitive value or neither of (for undefined) them should be specified.","domainHref":"1-3/Runtime/","href":"#type-CallArgument"}]},"runtime.executioncontextid":{"keyword":"Runtime.ExecutionContextId","pageReferences":[{"domain":"Runtime","type":"3","description":"Id of an execution context.","domainHref":"1-3/Runtime/","href":"#type-ExecutionContextId"}]},"runtime.executioncontextdescription":{"keyword":"Runtime.ExecutionContextDescription","pageReferences":[{"domain":"Runtime","type":"3","description":"Description of an isolated world.","domainHref":"1-3/Runtime/","href":"#type-ExecutionContextDescription"}]},"runtime.exceptiondetails":{"keyword":"Runtime.ExceptionDetails","pageReferences":[{"domain":"Runtime","type":"3","description":"Detailed information about exception (or error) that was thrown during script compilation or\nexecution.","domainHref":"1-3/Runtime/","href":"#type-ExceptionDetails"}]},"runtime.timestamp":{"keyword":"Runtime.Timestamp","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds since epoch.","domainHref":"1-3/Runtime/","href":"#type-Timestamp"}]},"runtime.timedelta":{"keyword":"Runtime.TimeDelta","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds.","domainHref":"1-3/Runtime/","href":"#type-TimeDelta"}]},"runtime.callframe":{"keyword":"Runtime.CallFrame","pageReferences":[{"domain":"Runtime","type":"3","description":"Stack entry for runtime errors and assertions.","domainHref":"1-3/Runtime/","href":"#type-CallFrame"}]},"runtime.stacktrace":{"keyword":"Runtime.StackTrace","pageReferences":[{"domain":"Runtime","type":"3","description":"Call frames for assertions or error messages.","domainHref":"1-3/Runtime/","href":"#type-StackTrace"}]}} \ No newline at end of file diff --git a/search_index/tot.json b/search_index/tot.json deleted file mode 100644 index 977f006e01..0000000000 --- a/search_index/tot.json +++ /dev/null @@ -1 +0,0 @@ -{"accessibility":{"keyword":"Accessibility","pageReferences":[{"domain":"Accessibility","type":"0","domainHref":"tot/Accessibility/"}]},"accessibility.disable":{"keyword":"Accessibility.disable","pageReferences":[{"domain":"Accessibility","type":"4","description":"Disables the accessibility domain.","domainHref":"tot/Accessibility/","href":"#method-disable"}]},"accessibility.enable":{"keyword":"Accessibility.enable","pageReferences":[{"domain":"Accessibility","type":"4","description":"Enables the accessibility domain which causes `AXNodeId`s to remain consistent between method calls.\nThis turns on accessibility for the page, which can impact performance until accessibility is disab...","domainHref":"tot/Accessibility/","href":"#method-enable"}]},"accessibility.getpartialaxtree":{"keyword":"Accessibility.getPartialAXTree","pageReferences":[{"domain":"Accessibility","type":"4","description":"Fetches the accessibility node and partial accessibility tree for this DOM node, if it exists.","domainHref":"tot/Accessibility/","href":"#method-getPartialAXTree"}]},"accessibility.getfullaxtree":{"keyword":"Accessibility.getFullAXTree","pageReferences":[{"domain":"Accessibility","type":"4","description":"Fetches the entire accessibility tree for the root Document","domainHref":"tot/Accessibility/","href":"#method-getFullAXTree"}]},"accessibility.getrootaxnode":{"keyword":"Accessibility.getRootAXNode","pageReferences":[{"domain":"Accessibility","type":"4","description":"Fetches the root node.\nRequires `enable()` to have been called previously.","domainHref":"tot/Accessibility/","href":"#method-getRootAXNode"}]},"accessibility.getaxnodeandancestors":{"keyword":"Accessibility.getAXNodeAndAncestors","pageReferences":[{"domain":"Accessibility","type":"4","description":"Fetches a node and all ancestors up to and including the root.\nRequires `enable()` to have been called previously.","domainHref":"tot/Accessibility/","href":"#method-getAXNodeAndAncestors"}]},"accessibility.getchildaxnodes":{"keyword":"Accessibility.getChildAXNodes","pageReferences":[{"domain":"Accessibility","type":"4","description":"Fetches a particular accessibility node by AXNodeId.\nRequires `enable()` to have been called previously.","domainHref":"tot/Accessibility/","href":"#method-getChildAXNodes"}]},"accessibility.queryaxtree":{"keyword":"Accessibility.queryAXTree","pageReferences":[{"domain":"Accessibility","type":"4","description":"Query a DOM node's accessibility subtree for accessible name and role.\nThis command computes the name and role for all nodes in the subtree, including those that are\nignored for accessibility, and ret...","domainHref":"tot/Accessibility/","href":"#method-queryAXTree"}]},"accessibility.loadcomplete":{"keyword":"Accessibility.loadComplete","pageReferences":[{"domain":"Accessibility","type":"1","description":"The loadComplete event mirrors the load complete event sent by the browser to assistive\ntechnology when the web page has finished loading.","domainHref":"tot/Accessibility/","href":"#event-loadComplete"}]},"accessibility.nodesupdated":{"keyword":"Accessibility.nodesUpdated","pageReferences":[{"domain":"Accessibility","type":"1","description":"The nodesUpdated event is sent every time a previously requested node has changed the in tree.","domainHref":"tot/Accessibility/","href":"#event-nodesUpdated"}]},"accessibility.axnodeid":{"keyword":"Accessibility.AXNodeId","pageReferences":[{"domain":"Accessibility","type":"3","description":"Unique accessibility node identifier.","domainHref":"tot/Accessibility/","href":"#type-AXNodeId"}]},"accessibility.axvaluetype":{"keyword":"Accessibility.AXValueType","pageReferences":[{"domain":"Accessibility","type":"3","description":"Enum of possible property types.","domainHref":"tot/Accessibility/","href":"#type-AXValueType"}]},"accessibility.axvaluesourcetype":{"keyword":"Accessibility.AXValueSourceType","pageReferences":[{"domain":"Accessibility","type":"3","description":"Enum of possible property sources.","domainHref":"tot/Accessibility/","href":"#type-AXValueSourceType"}]},"accessibility.axvaluenativesourcetype":{"keyword":"Accessibility.AXValueNativeSourceType","pageReferences":[{"domain":"Accessibility","type":"3","description":"Enum of possible native property sources (as a subtype of a particular AXValueSourceType).","domainHref":"tot/Accessibility/","href":"#type-AXValueNativeSourceType"}]},"accessibility.axvaluesource":{"keyword":"Accessibility.AXValueSource","pageReferences":[{"domain":"Accessibility","type":"3","description":"A single source for a computed AX property.","domainHref":"tot/Accessibility/","href":"#type-AXValueSource"}]},"accessibility.axrelatednode":{"keyword":"Accessibility.AXRelatedNode","pageReferences":[{"domain":"Accessibility","type":"3","domainHref":"tot/Accessibility/","href":"#type-AXRelatedNode"}]},"accessibility.axproperty":{"keyword":"Accessibility.AXProperty","pageReferences":[{"domain":"Accessibility","type":"3","domainHref":"tot/Accessibility/","href":"#type-AXProperty"}]},"accessibility.axvalue":{"keyword":"Accessibility.AXValue","pageReferences":[{"domain":"Accessibility","type":"3","description":"A single computed AX property.","domainHref":"tot/Accessibility/","href":"#type-AXValue"}]},"accessibility.axpropertyname":{"keyword":"Accessibility.AXPropertyName","pageReferences":[{"domain":"Accessibility","type":"3","description":"Values of AXProperty name:\n- from 'busy' to 'roledescription': states which apply to every AX node\n- from 'live' to 'root': attributes which apply to nodes in live regions\n- from 'autocomplete' to 'va...","domainHref":"tot/Accessibility/","href":"#type-AXPropertyName"}]},"accessibility.axnode":{"keyword":"Accessibility.AXNode","pageReferences":[{"domain":"Accessibility","type":"3","description":"A node in the accessibility tree.","domainHref":"tot/Accessibility/","href":"#type-AXNode"}]},"animation":{"keyword":"Animation","pageReferences":[{"domain":"Animation","type":"0","domainHref":"tot/Animation/"}]},"animation.disable":{"keyword":"Animation.disable","pageReferences":[{"domain":"Animation","type":"4","description":"Disables animation domain notifications.","domainHref":"tot/Animation/","href":"#method-disable"}]},"animation.enable":{"keyword":"Animation.enable","pageReferences":[{"domain":"Animation","type":"4","description":"Enables animation domain notifications.","domainHref":"tot/Animation/","href":"#method-enable"}]},"animation.getcurrenttime":{"keyword":"Animation.getCurrentTime","pageReferences":[{"domain":"Animation","type":"4","description":"Returns the current time of the an animation.","domainHref":"tot/Animation/","href":"#method-getCurrentTime"}]},"animation.getplaybackrate":{"keyword":"Animation.getPlaybackRate","pageReferences":[{"domain":"Animation","type":"4","description":"Gets the playback rate of the document timeline.","domainHref":"tot/Animation/","href":"#method-getPlaybackRate"}]},"animation.releaseanimations":{"keyword":"Animation.releaseAnimations","pageReferences":[{"domain":"Animation","type":"4","description":"Releases a set of animations to no longer be manipulated.","domainHref":"tot/Animation/","href":"#method-releaseAnimations"}]},"animation.resolveanimation":{"keyword":"Animation.resolveAnimation","pageReferences":[{"domain":"Animation","type":"4","description":"Gets the remote object of the Animation.","domainHref":"tot/Animation/","href":"#method-resolveAnimation"}]},"animation.seekanimations":{"keyword":"Animation.seekAnimations","pageReferences":[{"domain":"Animation","type":"4","description":"Seek a set of animations to a particular time within each animation.","domainHref":"tot/Animation/","href":"#method-seekAnimations"}]},"animation.setpaused":{"keyword":"Animation.setPaused","pageReferences":[{"domain":"Animation","type":"4","description":"Sets the paused state of a set of animations.","domainHref":"tot/Animation/","href":"#method-setPaused"}]},"animation.setplaybackrate":{"keyword":"Animation.setPlaybackRate","pageReferences":[{"domain":"Animation","type":"4","description":"Sets the playback rate of the document timeline.","domainHref":"tot/Animation/","href":"#method-setPlaybackRate"}]},"animation.settiming":{"keyword":"Animation.setTiming","pageReferences":[{"domain":"Animation","type":"4","description":"Sets the timing of an animation node.","domainHref":"tot/Animation/","href":"#method-setTiming"}]},"animation.animationcanceled":{"keyword":"Animation.animationCanceled","pageReferences":[{"domain":"Animation","type":"1","description":"Event for when an animation has been cancelled.","domainHref":"tot/Animation/","href":"#event-animationCanceled"}]},"animation.animationcreated":{"keyword":"Animation.animationCreated","pageReferences":[{"domain":"Animation","type":"1","description":"Event for each animation that has been created.","domainHref":"tot/Animation/","href":"#event-animationCreated"}]},"animation.animationstarted":{"keyword":"Animation.animationStarted","pageReferences":[{"domain":"Animation","type":"1","description":"Event for animation that has been started.","domainHref":"tot/Animation/","href":"#event-animationStarted"}]},"animation.animationupdated":{"keyword":"Animation.animationUpdated","pageReferences":[{"domain":"Animation","type":"1","description":"Event for animation that has been updated.","domainHref":"tot/Animation/","href":"#event-animationUpdated"}]},"animation.animation":{"keyword":"Animation.Animation","pageReferences":[{"domain":"Animation","type":"3","description":"Animation instance.","domainHref":"tot/Animation/","href":"#type-Animation"}]},"animation.vieworscrolltimeline":{"keyword":"Animation.ViewOrScrollTimeline","pageReferences":[{"domain":"Animation","type":"3","description":"Timeline instance","domainHref":"tot/Animation/","href":"#type-ViewOrScrollTimeline"}]},"animation.animationeffect":{"keyword":"Animation.AnimationEffect","pageReferences":[{"domain":"Animation","type":"3","description":"AnimationEffect instance","domainHref":"tot/Animation/","href":"#type-AnimationEffect"}]},"animation.keyframesrule":{"keyword":"Animation.KeyframesRule","pageReferences":[{"domain":"Animation","type":"3","description":"Keyframes Rule","domainHref":"tot/Animation/","href":"#type-KeyframesRule"}]},"animation.keyframestyle":{"keyword":"Animation.KeyframeStyle","pageReferences":[{"domain":"Animation","type":"3","description":"Keyframe Style","domainHref":"tot/Animation/","href":"#type-KeyframeStyle"}]},"audits":{"keyword":"Audits","pageReferences":[{"domain":"Audits","type":"0","description":"Audits domain allows investigation of page violations and possible improvements.","domainHref":"tot/Audits/"}]},"audits.getencodedresponse":{"keyword":"Audits.getEncodedResponse","pageReferences":[{"domain":"Audits","type":"4","description":"Returns the response body and size if it were re-encoded with the specified settings. Only\napplies to images.","domainHref":"tot/Audits/","href":"#method-getEncodedResponse"}]},"audits.disable":{"keyword":"Audits.disable","pageReferences":[{"domain":"Audits","type":"4","description":"Disables issues domain, prevents further issues from being reported to the client.","domainHref":"tot/Audits/","href":"#method-disable"}]},"audits.enable":{"keyword":"Audits.enable","pageReferences":[{"domain":"Audits","type":"4","description":"Enables issues domain, sends the issues collected so far to the client by means of the\n`issueAdded` event.","domainHref":"tot/Audits/","href":"#method-enable"}]},"audits.checkcontrast":{"keyword":"Audits.checkContrast","pageReferences":[{"domain":"Audits","type":"4","description":"Runs the contrast check for the target page. Found issues are reported\nusing Audits.issueAdded event.","domainHref":"tot/Audits/","href":"#method-checkContrast"}]},"audits.checkformsissues":{"keyword":"Audits.checkFormsIssues","pageReferences":[{"domain":"Audits","type":"4","description":"Runs the form issues check for the target page. Found issues are reported\nusing Audits.issueAdded event.","domainHref":"tot/Audits/","href":"#method-checkFormsIssues"}]},"audits.issueadded":{"keyword":"Audits.issueAdded","pageReferences":[{"domain":"Audits","type":"1","domainHref":"tot/Audits/","href":"#event-issueAdded"}]},"audits.affectedcookie":{"keyword":"Audits.AffectedCookie","pageReferences":[{"domain":"Audits","type":"3","description":"Information about a cookie that is affected by an inspector issue.","domainHref":"tot/Audits/","href":"#type-AffectedCookie"}]},"audits.affectedrequest":{"keyword":"Audits.AffectedRequest","pageReferences":[{"domain":"Audits","type":"3","description":"Information about a request that is affected by an inspector issue.","domainHref":"tot/Audits/","href":"#type-AffectedRequest"}]},"audits.affectedframe":{"keyword":"Audits.AffectedFrame","pageReferences":[{"domain":"Audits","type":"3","description":"Information about the frame affected by an inspector issue.","domainHref":"tot/Audits/","href":"#type-AffectedFrame"}]},"audits.cookieexclusionreason":{"keyword":"Audits.CookieExclusionReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-CookieExclusionReason"}]},"audits.cookiewarningreason":{"keyword":"Audits.CookieWarningReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-CookieWarningReason"}]},"audits.cookieoperation":{"keyword":"Audits.CookieOperation","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-CookieOperation"}]},"audits.insighttype":{"keyword":"Audits.InsightType","pageReferences":[{"domain":"Audits","type":"3","description":"Represents the category of insight that a cookie issue falls under.","domainHref":"tot/Audits/","href":"#type-InsightType"}]},"audits.cookieissueinsight":{"keyword":"Audits.CookieIssueInsight","pageReferences":[{"domain":"Audits","type":"3","description":"Information about the suggested solution to a cookie issue.","domainHref":"tot/Audits/","href":"#type-CookieIssueInsight"}]},"audits.cookieissuedetails":{"keyword":"Audits.CookieIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This information is currently necessary, as the front-end has a difficult\ntime finding a specific cookie. With this, we can convey specific error\ninformation without the cookie.","domainHref":"tot/Audits/","href":"#type-CookieIssueDetails"}]},"audits.mixedcontentresolutionstatus":{"keyword":"Audits.MixedContentResolutionStatus","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-MixedContentResolutionStatus"}]},"audits.mixedcontentresourcetype":{"keyword":"Audits.MixedContentResourceType","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-MixedContentResourceType"}]},"audits.mixedcontentissuedetails":{"keyword":"Audits.MixedContentIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-MixedContentIssueDetails"}]},"audits.blockedbyresponsereason":{"keyword":"Audits.BlockedByResponseReason","pageReferences":[{"domain":"Audits","type":"3","description":"Enum indicating the reason a response has been blocked. These reasons are\nrefinements of the net error BLOCKED_BY_RESPONSE.","domainHref":"tot/Audits/","href":"#type-BlockedByResponseReason"}]},"audits.blockedbyresponseissuedetails":{"keyword":"Audits.BlockedByResponseIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"Details for a request that has been blocked with the BLOCKED_BY_RESPONSE\ncode. Currently only used for COEP/COOP, but may be extended to include\nsome CSP errors in the future.","domainHref":"tot/Audits/","href":"#type-BlockedByResponseIssueDetails"}]},"audits.heavyadresolutionstatus":{"keyword":"Audits.HeavyAdResolutionStatus","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-HeavyAdResolutionStatus"}]},"audits.heavyadreason":{"keyword":"Audits.HeavyAdReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-HeavyAdReason"}]},"audits.heavyadissuedetails":{"keyword":"Audits.HeavyAdIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-HeavyAdIssueDetails"}]},"audits.contentsecuritypolicyviolationtype":{"keyword":"Audits.ContentSecurityPolicyViolationType","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-ContentSecurityPolicyViolationType"}]},"audits.sourcecodelocation":{"keyword":"Audits.SourceCodeLocation","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-SourceCodeLocation"}]},"audits.contentsecuritypolicyissuedetails":{"keyword":"Audits.ContentSecurityPolicyIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-ContentSecurityPolicyIssueDetails"}]},"audits.sharedarraybufferissuetype":{"keyword":"Audits.SharedArrayBufferIssueType","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-SharedArrayBufferIssueType"}]},"audits.sharedarraybufferissuedetails":{"keyword":"Audits.SharedArrayBufferIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"Details for a issue arising from an SAB being instantiated in, or\ntransferred to a context that is not cross-origin isolated.","domainHref":"tot/Audits/","href":"#type-SharedArrayBufferIssueDetails"}]},"audits.lowtextcontrastissuedetails":{"keyword":"Audits.LowTextContrastIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-LowTextContrastIssueDetails"}]},"audits.corsissuedetails":{"keyword":"Audits.CorsIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"Details for a CORS related issue, e.g. a warning or error related to\nCORS RFC1918 enforcement.","domainHref":"tot/Audits/","href":"#type-CorsIssueDetails"}]},"audits.attributionreportingissuetype":{"keyword":"Audits.AttributionReportingIssueType","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-AttributionReportingIssueType"}]},"audits.shareddictionaryerror":{"keyword":"Audits.SharedDictionaryError","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-SharedDictionaryError"}]},"audits.srimessagesignatureerror":{"keyword":"Audits.SRIMessageSignatureError","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-SRIMessageSignatureError"}]},"audits.attributionreportingissuedetails":{"keyword":"Audits.AttributionReportingIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"Details for issues around \"Attribution Reporting API\" usage.\nExplainer: https://github.com/WICG/attribution-reporting-api","domainHref":"tot/Audits/","href":"#type-AttributionReportingIssueDetails"}]},"audits.quirksmodeissuedetails":{"keyword":"Audits.QuirksModeIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"Details for issues about documents in Quirks Mode\nor Limited Quirks Mode that affects page layouting.","domainHref":"tot/Audits/","href":"#type-QuirksModeIssueDetails"}]},"audits.navigatoruseragentissuedetails":{"keyword":"Audits.NavigatorUserAgentIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-NavigatorUserAgentIssueDetails"}]},"audits.shareddictionaryissuedetails":{"keyword":"Audits.SharedDictionaryIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-SharedDictionaryIssueDetails"}]},"audits.srimessagesignatureissuedetails":{"keyword":"Audits.SRIMessageSignatureIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-SRIMessageSignatureIssueDetails"}]},"audits.genericissueerrortype":{"keyword":"Audits.GenericIssueErrorType","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-GenericIssueErrorType"}]},"audits.genericissuedetails":{"keyword":"Audits.GenericIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"Depending on the concrete errorType, different properties are set.","domainHref":"tot/Audits/","href":"#type-GenericIssueDetails"}]},"audits.deprecationissuedetails":{"keyword":"Audits.DeprecationIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue tracks information needed to print a deprecation message.\nhttps://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/third_party/blink/renderer/core/fram...","domainHref":"tot/Audits/","href":"#type-DeprecationIssueDetails"}]},"audits.bouncetrackingissuedetails":{"keyword":"Audits.BounceTrackingIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue warns about sites in the redirect chain of a finished navigation\nthat may be flagged as trackers and have their state cleared if they don't\nreceive a user interaction. Note that in this con...","domainHref":"tot/Audits/","href":"#type-BounceTrackingIssueDetails"}]},"audits.cookiedeprecationmetadataissuedetails":{"keyword":"Audits.CookieDeprecationMetadataIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue warns about third-party sites that are accessing cookies on the\ncurrent page, and have been permitted due to having a global metadata grant.\nNote that in this context 'site' means eTLD+1. F...","domainHref":"tot/Audits/","href":"#type-CookieDeprecationMetadataIssueDetails"}]},"audits.clienthintissuereason":{"keyword":"Audits.ClientHintIssueReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-ClientHintIssueReason"}]},"audits.federatedauthrequestissuedetails":{"keyword":"Audits.FederatedAuthRequestIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-FederatedAuthRequestIssueDetails"}]},"audits.federatedauthrequestissuereason":{"keyword":"Audits.FederatedAuthRequestIssueReason","pageReferences":[{"domain":"Audits","type":"3","description":"Represents the failure reason when a federated authentication reason fails.\nShould be updated alongside RequestIdTokenStatus in\nthird_party/blink/public/mojom/devtools/inspector_issue.mojom to include...","domainHref":"tot/Audits/","href":"#type-FederatedAuthRequestIssueReason"}]},"audits.federatedauthuserinforequestissuedetails":{"keyword":"Audits.FederatedAuthUserInfoRequestIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-FederatedAuthUserInfoRequestIssueDetails"}]},"audits.federatedauthuserinforequestissuereason":{"keyword":"Audits.FederatedAuthUserInfoRequestIssueReason","pageReferences":[{"domain":"Audits","type":"3","description":"Represents the failure reason when a getUserInfo() call fails.\nShould be updated alongside FederatedAuthUserInfoRequestResult in\nthird_party/blink/public/mojom/devtools/inspector_issue.mojom.","domainHref":"tot/Audits/","href":"#type-FederatedAuthUserInfoRequestIssueReason"}]},"audits.clienthintissuedetails":{"keyword":"Audits.ClientHintIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue tracks client hints related issues. It's used to deprecate old\nfeatures, encourage the use of new ones, and provide general guidance.","domainHref":"tot/Audits/","href":"#type-ClientHintIssueDetails"}]},"audits.failedrequestinfo":{"keyword":"Audits.FailedRequestInfo","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-FailedRequestInfo"}]},"audits.partitioningbloburlinfo":{"keyword":"Audits.PartitioningBlobURLInfo","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-PartitioningBlobURLInfo"}]},"audits.partitioningbloburlissuedetails":{"keyword":"Audits.PartitioningBlobURLIssueDetails","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-PartitioningBlobURLIssueDetails"}]},"audits.elementaccessibilityissuereason":{"keyword":"Audits.ElementAccessibilityIssueReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-ElementAccessibilityIssueReason"}]},"audits.elementaccessibilityissuedetails":{"keyword":"Audits.ElementAccessibilityIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue warns about errors in the select or summary element content model.","domainHref":"tot/Audits/","href":"#type-ElementAccessibilityIssueDetails"}]},"audits.stylesheetloadingissuereason":{"keyword":"Audits.StyleSheetLoadingIssueReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-StyleSheetLoadingIssueReason"}]},"audits.stylesheetloadingissuedetails":{"keyword":"Audits.StylesheetLoadingIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue warns when a referenced stylesheet couldn't be loaded.","domainHref":"tot/Audits/","href":"#type-StylesheetLoadingIssueDetails"}]},"audits.propertyruleissuereason":{"keyword":"Audits.PropertyRuleIssueReason","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-PropertyRuleIssueReason"}]},"audits.propertyruleissuedetails":{"keyword":"Audits.PropertyRuleIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue warns about errors in property rules that lead to property\nregistrations being ignored.","domainHref":"tot/Audits/","href":"#type-PropertyRuleIssueDetails"}]},"audits.userreidentificationissuetype":{"keyword":"Audits.UserReidentificationIssueType","pageReferences":[{"domain":"Audits","type":"3","domainHref":"tot/Audits/","href":"#type-UserReidentificationIssueType"}]},"audits.userreidentificationissuedetails":{"keyword":"Audits.UserReidentificationIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This issue warns about uses of APIs that may be considered misuse to\nre-identify users.","domainHref":"tot/Audits/","href":"#type-UserReidentificationIssueDetails"}]},"audits.inspectorissuecode":{"keyword":"Audits.InspectorIssueCode","pageReferences":[{"domain":"Audits","type":"3","description":"A unique identifier for the type of issue. Each type may use one of the\noptional fields in InspectorIssueDetails to convey more specific\ninformation about the kind of issue.","domainHref":"tot/Audits/","href":"#type-InspectorIssueCode"}]},"audits.inspectorissuedetails":{"keyword":"Audits.InspectorIssueDetails","pageReferences":[{"domain":"Audits","type":"3","description":"This struct holds a list of optional fields with additional information\nspecific to the kind of issue. When adding a new issue code, please also\nadd a new optional field to this type.","domainHref":"tot/Audits/","href":"#type-InspectorIssueDetails"}]},"audits.issueid":{"keyword":"Audits.IssueId","pageReferences":[{"domain":"Audits","type":"3","description":"A unique id for a DevTools inspector issue. Allows other entities (e.g.\nexceptions, CDP message, console messages, etc.) to reference an issue.","domainHref":"tot/Audits/","href":"#type-IssueId"}]},"audits.inspectorissue":{"keyword":"Audits.InspectorIssue","pageReferences":[{"domain":"Audits","type":"3","description":"An inspector issue reported from the back-end.","domainHref":"tot/Audits/","href":"#type-InspectorIssue"}]},"extensions":{"keyword":"Extensions","pageReferences":[{"domain":"Extensions","type":"0","description":"Defines commands and events for browser extensions.","domainHref":"tot/Extensions/"}]},"extensions.loadunpacked":{"keyword":"Extensions.loadUnpacked","pageReferences":[{"domain":"Extensions","type":"4","description":"Installs an unpacked extension from the filesystem similar to\n--load-extension CLI flags. Returns extension ID once the extension\nhas been installed. Available if the client is connected using the\n--r...","domainHref":"tot/Extensions/","href":"#method-loadUnpacked"}]},"extensions.uninstall":{"keyword":"Extensions.uninstall","pageReferences":[{"domain":"Extensions","type":"4","description":"Uninstalls an unpacked extension (others not supported) from the profile.\nAvailable if the client is connected using the --remote-debugging-pipe flag\nand the --enable-unsafe-extension-debugging.","domainHref":"tot/Extensions/","href":"#method-uninstall"}]},"extensions.getstorageitems":{"keyword":"Extensions.getStorageItems","pageReferences":[{"domain":"Extensions","type":"4","description":"Gets data from extension storage in the given `storageArea`. If `keys` is\nspecified, these are used to filter the result.","domainHref":"tot/Extensions/","href":"#method-getStorageItems"}]},"extensions.removestorageitems":{"keyword":"Extensions.removeStorageItems","pageReferences":[{"domain":"Extensions","type":"4","description":"Removes `keys` from extension storage in the given `storageArea`.","domainHref":"tot/Extensions/","href":"#method-removeStorageItems"}]},"extensions.clearstorageitems":{"keyword":"Extensions.clearStorageItems","pageReferences":[{"domain":"Extensions","type":"4","description":"Clears extension storage in the given `storageArea`.","domainHref":"tot/Extensions/","href":"#method-clearStorageItems"}]},"extensions.setstorageitems":{"keyword":"Extensions.setStorageItems","pageReferences":[{"domain":"Extensions","type":"4","description":"Sets `values` in extension storage in the given `storageArea`. The provided `values`\nwill be merged with existing values in the storage area.","domainHref":"tot/Extensions/","href":"#method-setStorageItems"}]},"extensions.storagearea":{"keyword":"Extensions.StorageArea","pageReferences":[{"domain":"Extensions","type":"3","description":"Storage areas.","domainHref":"tot/Extensions/","href":"#type-StorageArea"}]},"autofill":{"keyword":"Autofill","pageReferences":[{"domain":"Autofill","type":"0","description":"Defines commands and events for Autofill.","domainHref":"tot/Autofill/"}]},"autofill.trigger":{"keyword":"Autofill.trigger","pageReferences":[{"domain":"Autofill","type":"4","description":"Trigger autofill on a form identified by the fieldId.\nIf the field and related form cannot be autofilled, returns an error.","domainHref":"tot/Autofill/","href":"#method-trigger"}]},"autofill.setaddresses":{"keyword":"Autofill.setAddresses","pageReferences":[{"domain":"Autofill","type":"4","description":"Set addresses so that developers can verify their forms implementation.","domainHref":"tot/Autofill/","href":"#method-setAddresses"}]},"autofill.disable":{"keyword":"Autofill.disable","pageReferences":[{"domain":"Autofill","type":"4","description":"Disables autofill domain notifications.","domainHref":"tot/Autofill/","href":"#method-disable"}]},"autofill.enable":{"keyword":"Autofill.enable","pageReferences":[{"domain":"Autofill","type":"4","description":"Enables autofill domain notifications.","domainHref":"tot/Autofill/","href":"#method-enable"}]},"autofill.addressformfilled":{"keyword":"Autofill.addressFormFilled","pageReferences":[{"domain":"Autofill","type":"1","description":"Emitted when an address form is filled.","domainHref":"tot/Autofill/","href":"#event-addressFormFilled"}]},"autofill.creditcard":{"keyword":"Autofill.CreditCard","pageReferences":[{"domain":"Autofill","type":"3","domainHref":"tot/Autofill/","href":"#type-CreditCard"}]},"autofill.addressfield":{"keyword":"Autofill.AddressField","pageReferences":[{"domain":"Autofill","type":"3","domainHref":"tot/Autofill/","href":"#type-AddressField"}]},"autofill.addressfields":{"keyword":"Autofill.AddressFields","pageReferences":[{"domain":"Autofill","type":"3","description":"A list of address fields.","domainHref":"tot/Autofill/","href":"#type-AddressFields"}]},"autofill.address":{"keyword":"Autofill.Address","pageReferences":[{"domain":"Autofill","type":"3","domainHref":"tot/Autofill/","href":"#type-Address"}]},"autofill.addressui":{"keyword":"Autofill.AddressUI","pageReferences":[{"domain":"Autofill","type":"3","description":"Defines how an address can be displayed like in chrome://settings/addresses.\nAddress UI is a two dimensional array, each inner array is an \"address information line\", and when rendered in a UI surface...","domainHref":"tot/Autofill/","href":"#type-AddressUI"}]},"autofill.fillingstrategy":{"keyword":"Autofill.FillingStrategy","pageReferences":[{"domain":"Autofill","type":"3","description":"Specified whether a filled field was done so by using the html autocomplete attribute or autofill heuristics.","domainHref":"tot/Autofill/","href":"#type-FillingStrategy"}]},"autofill.filledfield":{"keyword":"Autofill.FilledField","pageReferences":[{"domain":"Autofill","type":"3","domainHref":"tot/Autofill/","href":"#type-FilledField"}]},"backgroundservice":{"keyword":"BackgroundService","pageReferences":[{"domain":"BackgroundService","type":"0","description":"Defines events for background web platform features.","domainHref":"tot/BackgroundService/"}]},"backgroundservice.startobserving":{"keyword":"BackgroundService.startObserving","pageReferences":[{"domain":"BackgroundService","type":"4","description":"Enables event updates for the service.","domainHref":"tot/BackgroundService/","href":"#method-startObserving"}]},"backgroundservice.stopobserving":{"keyword":"BackgroundService.stopObserving","pageReferences":[{"domain":"BackgroundService","type":"4","description":"Disables event updates for the service.","domainHref":"tot/BackgroundService/","href":"#method-stopObserving"}]},"backgroundservice.setrecording":{"keyword":"BackgroundService.setRecording","pageReferences":[{"domain":"BackgroundService","type":"4","description":"Set the recording state for the service.","domainHref":"tot/BackgroundService/","href":"#method-setRecording"}]},"backgroundservice.clearevents":{"keyword":"BackgroundService.clearEvents","pageReferences":[{"domain":"BackgroundService","type":"4","description":"Clears all stored data for the service.","domainHref":"tot/BackgroundService/","href":"#method-clearEvents"}]},"backgroundservice.recordingstatechanged":{"keyword":"BackgroundService.recordingStateChanged","pageReferences":[{"domain":"BackgroundService","type":"1","description":"Called when the recording state for the service has been updated.","domainHref":"tot/BackgroundService/","href":"#event-recordingStateChanged"}]},"backgroundservice.backgroundserviceeventreceived":{"keyword":"BackgroundService.backgroundServiceEventReceived","pageReferences":[{"domain":"BackgroundService","type":"1","description":"Called with all existing backgroundServiceEvents when enabled, and all new\nevents afterwards if enabled and recording.","domainHref":"tot/BackgroundService/","href":"#event-backgroundServiceEventReceived"}]},"backgroundservice.servicename":{"keyword":"BackgroundService.ServiceName","pageReferences":[{"domain":"BackgroundService","type":"3","description":"The Background Service that will be associated with the commands/events.\nEvery Background Service operates independently, but they share the same\nAPI.","domainHref":"tot/BackgroundService/","href":"#type-ServiceName"}]},"backgroundservice.eventmetadata":{"keyword":"BackgroundService.EventMetadata","pageReferences":[{"domain":"BackgroundService","type":"3","description":"A key-value pair for additional event information to pass along.","domainHref":"tot/BackgroundService/","href":"#type-EventMetadata"}]},"backgroundservice.backgroundserviceevent":{"keyword":"BackgroundService.BackgroundServiceEvent","pageReferences":[{"domain":"BackgroundService","type":"3","domainHref":"tot/BackgroundService/","href":"#type-BackgroundServiceEvent"}]},"browser":{"keyword":"Browser","pageReferences":[{"domain":"Browser","type":"0","description":"The Browser domain defines methods and events for browser managing.","domainHref":"tot/Browser/"}]},"browser.setpermission":{"keyword":"Browser.setPermission","pageReferences":[{"domain":"Browser","type":"4","description":"Set permission settings for given origin.","domainHref":"tot/Browser/","href":"#method-setPermission"}]},"browser.grantpermissions":{"keyword":"Browser.grantPermissions","pageReferences":[{"domain":"Browser","type":"4","description":"Grant specific permissions to the given origin and reject all others.","domainHref":"tot/Browser/","href":"#method-grantPermissions"}]},"browser.resetpermissions":{"keyword":"Browser.resetPermissions","pageReferences":[{"domain":"Browser","type":"4","description":"Reset all permission management for all origins.","domainHref":"tot/Browser/","href":"#method-resetPermissions"}]},"browser.setdownloadbehavior":{"keyword":"Browser.setDownloadBehavior","pageReferences":[{"domain":"Browser","type":"4","description":"Set the behavior when downloading a file.","domainHref":"tot/Browser/","href":"#method-setDownloadBehavior"}]},"browser.canceldownload":{"keyword":"Browser.cancelDownload","pageReferences":[{"domain":"Browser","type":"4","description":"Cancel a download if in progress","domainHref":"tot/Browser/","href":"#method-cancelDownload"}]},"browser.close":{"keyword":"Browser.close","pageReferences":[{"domain":"Browser","type":"4","description":"Close browser gracefully.","domainHref":"tot/Browser/","href":"#method-close"}]},"browser.crash":{"keyword":"Browser.crash","pageReferences":[{"domain":"Browser","type":"4","description":"Crashes browser on the main thread.","domainHref":"tot/Browser/","href":"#method-crash"}]},"browser.crashgpuprocess":{"keyword":"Browser.crashGpuProcess","pageReferences":[{"domain":"Browser","type":"4","description":"Crashes GPU process.","domainHref":"tot/Browser/","href":"#method-crashGpuProcess"}]},"browser.getversion":{"keyword":"Browser.getVersion","pageReferences":[{"domain":"Browser","type":"4","description":"Returns version information.","domainHref":"tot/Browser/","href":"#method-getVersion"}]},"browser.getbrowsercommandline":{"keyword":"Browser.getBrowserCommandLine","pageReferences":[{"domain":"Browser","type":"4","description":"Returns the command line switches for the browser process if, and only if\n--enable-automation is on the commandline.","domainHref":"tot/Browser/","href":"#method-getBrowserCommandLine"}]},"browser.gethistograms":{"keyword":"Browser.getHistograms","pageReferences":[{"domain":"Browser","type":"4","description":"Get Chrome histograms.","domainHref":"tot/Browser/","href":"#method-getHistograms"}]},"browser.gethistogram":{"keyword":"Browser.getHistogram","pageReferences":[{"domain":"Browser","type":"4","description":"Get a Chrome histogram by name.","domainHref":"tot/Browser/","href":"#method-getHistogram"}]},"browser.getwindowbounds":{"keyword":"Browser.getWindowBounds","pageReferences":[{"domain":"Browser","type":"4","description":"Get position and size of the browser window.","domainHref":"tot/Browser/","href":"#method-getWindowBounds"}]},"browser.getwindowfortarget":{"keyword":"Browser.getWindowForTarget","pageReferences":[{"domain":"Browser","type":"4","description":"Get the browser window that contains the devtools target.","domainHref":"tot/Browser/","href":"#method-getWindowForTarget"}]},"browser.setwindowbounds":{"keyword":"Browser.setWindowBounds","pageReferences":[{"domain":"Browser","type":"4","description":"Set position and/or size of the browser window.","domainHref":"tot/Browser/","href":"#method-setWindowBounds"}]},"browser.setdocktile":{"keyword":"Browser.setDockTile","pageReferences":[{"domain":"Browser","type":"4","description":"Set dock tile details, platform-specific.","domainHref":"tot/Browser/","href":"#method-setDockTile"}]},"browser.executebrowsercommand":{"keyword":"Browser.executeBrowserCommand","pageReferences":[{"domain":"Browser","type":"4","description":"Invoke custom browser commands used by telemetry.","domainHref":"tot/Browser/","href":"#method-executeBrowserCommand"}]},"browser.addprivacysandboxenrollmentoverride":{"keyword":"Browser.addPrivacySandboxEnrollmentOverride","pageReferences":[{"domain":"Browser","type":"4","description":"Allows a site to use privacy sandbox features that require enrollment\nwithout the site actually being enrolled. Only supported on page targets.","domainHref":"tot/Browser/","href":"#method-addPrivacySandboxEnrollmentOverride"}]},"browser.addprivacysandboxcoordinatorkeyconfig":{"keyword":"Browser.addPrivacySandboxCoordinatorKeyConfig","pageReferences":[{"domain":"Browser","type":"4","description":"Configures encryption keys used with a given privacy sandbox API to talk\nto a trusted coordinator. Since this is intended for test automation only,\ncoordinatorOrigin must be a .test domain. No existi...","domainHref":"tot/Browser/","href":"#method-addPrivacySandboxCoordinatorKeyConfig"}]},"browser.downloadwillbegin":{"keyword":"Browser.downloadWillBegin","pageReferences":[{"domain":"Browser","type":"1","description":"Fired when page is about to start a download.","domainHref":"tot/Browser/","href":"#event-downloadWillBegin"}]},"browser.downloadprogress":{"keyword":"Browser.downloadProgress","pageReferences":[{"domain":"Browser","type":"1","description":"Fired when download makes progress. Last call has |done| == true.","domainHref":"tot/Browser/","href":"#event-downloadProgress"}]},"browser.browsercontextid":{"keyword":"Browser.BrowserContextID","pageReferences":[{"domain":"Browser","type":"3","domainHref":"tot/Browser/","href":"#type-BrowserContextID"}]},"browser.windowid":{"keyword":"Browser.WindowID","pageReferences":[{"domain":"Browser","type":"3","domainHref":"tot/Browser/","href":"#type-WindowID"}]},"browser.windowstate":{"keyword":"Browser.WindowState","pageReferences":[{"domain":"Browser","type":"3","description":"The state of the browser window.","domainHref":"tot/Browser/","href":"#type-WindowState"}]},"browser.bounds":{"keyword":"Browser.Bounds","pageReferences":[{"domain":"Browser","type":"3","description":"Browser window bounds information","domainHref":"tot/Browser/","href":"#type-Bounds"}]},"browser.permissiontype":{"keyword":"Browser.PermissionType","pageReferences":[{"domain":"Browser","type":"3","domainHref":"tot/Browser/","href":"#type-PermissionType"}]},"browser.permissionsetting":{"keyword":"Browser.PermissionSetting","pageReferences":[{"domain":"Browser","type":"3","domainHref":"tot/Browser/","href":"#type-PermissionSetting"}]},"browser.permissiondescriptor":{"keyword":"Browser.PermissionDescriptor","pageReferences":[{"domain":"Browser","type":"3","description":"Definition of PermissionDescriptor defined in the Permissions API:\nhttps://w3c.github.io/permissions/#dom-permissiondescriptor.","domainHref":"tot/Browser/","href":"#type-PermissionDescriptor"}]},"browser.browsercommandid":{"keyword":"Browser.BrowserCommandId","pageReferences":[{"domain":"Browser","type":"3","description":"Browser command ids used by executeBrowserCommand.","domainHref":"tot/Browser/","href":"#type-BrowserCommandId"}]},"browser.bucket":{"keyword":"Browser.Bucket","pageReferences":[{"domain":"Browser","type":"3","description":"Chrome histogram bucket.","domainHref":"tot/Browser/","href":"#type-Bucket"}]},"browser.histogram":{"keyword":"Browser.Histogram","pageReferences":[{"domain":"Browser","type":"3","description":"Chrome histogram.","domainHref":"tot/Browser/","href":"#type-Histogram"}]},"browser.privacysandboxapi":{"keyword":"Browser.PrivacySandboxAPI","pageReferences":[{"domain":"Browser","type":"3","domainHref":"tot/Browser/","href":"#type-PrivacySandboxAPI"}]},"css":{"keyword":"CSS","pageReferences":[{"domain":"CSS","type":"0","description":"This domain exposes CSS read/write operations. All CSS objects (stylesheets, rules, and styles)\nhave an associated `id` used in subsequent operations on the related object. Each object type has\na spec...","domainHref":"tot/CSS/"}]},"css.addrule":{"keyword":"CSS.addRule","pageReferences":[{"domain":"CSS","type":"4","description":"Inserts a new rule with the given `ruleText` in a stylesheet with given `styleSheetId`, at the\nposition specified by `location`.","domainHref":"tot/CSS/","href":"#method-addRule"}]},"css.collectclassnames":{"keyword":"CSS.collectClassNames","pageReferences":[{"domain":"CSS","type":"4","description":"Returns all class names from specified stylesheet.","domainHref":"tot/CSS/","href":"#method-collectClassNames"}]},"css.createstylesheet":{"keyword":"CSS.createStyleSheet","pageReferences":[{"domain":"CSS","type":"4","description":"Creates a new special \"via-inspector\" stylesheet in the frame with given `frameId`.","domainHref":"tot/CSS/","href":"#method-createStyleSheet"}]},"css.disable":{"keyword":"CSS.disable","pageReferences":[{"domain":"CSS","type":"4","description":"Disables the CSS agent for the given page.","domainHref":"tot/CSS/","href":"#method-disable"}]},"css.enable":{"keyword":"CSS.enable","pageReferences":[{"domain":"CSS","type":"4","description":"Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been\nenabled until the result of this command is received.","domainHref":"tot/CSS/","href":"#method-enable"}]},"css.forcepseudostate":{"keyword":"CSS.forcePseudoState","pageReferences":[{"domain":"CSS","type":"4","description":"Ensures that the given node will have specified pseudo-classes whenever its style is computed by\nthe browser.","domainHref":"tot/CSS/","href":"#method-forcePseudoState"}]},"css.forcestartingstyle":{"keyword":"CSS.forceStartingStyle","pageReferences":[{"domain":"CSS","type":"4","description":"Ensures that the given node is in its starting-style state.","domainHref":"tot/CSS/","href":"#method-forceStartingStyle"}]},"css.getbackgroundcolors":{"keyword":"CSS.getBackgroundColors","pageReferences":[{"domain":"CSS","type":"4","domainHref":"tot/CSS/","href":"#method-getBackgroundColors"}]},"css.getcomputedstylefornode":{"keyword":"CSS.getComputedStyleForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Returns the computed style for a DOM node identified by `nodeId`.","domainHref":"tot/CSS/","href":"#method-getComputedStyleForNode"}]},"css.resolvevalues":{"keyword":"CSS.resolveValues","pageReferences":[{"domain":"CSS","type":"4","description":"Resolve the specified values in the context of the provided element.\nFor example, a value of '1em' is evaluated according to the computed\n'font-size' of the element and a value 'calc(1px + 2px)' will ...","domainHref":"tot/CSS/","href":"#method-resolveValues"}]},"css.getlonghandproperties":{"keyword":"CSS.getLonghandProperties","pageReferences":[{"domain":"CSS","type":"4","domainHref":"tot/CSS/","href":"#method-getLonghandProperties"}]},"css.getinlinestylesfornode":{"keyword":"CSS.getInlineStylesForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Returns the styles defined inline (explicitly in the \"style\" attribute and implicitly, using DOM\nattributes) for a DOM node identified by `nodeId`.","domainHref":"tot/CSS/","href":"#method-getInlineStylesForNode"}]},"css.getanimatedstylesfornode":{"keyword":"CSS.getAnimatedStylesForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Returns the styles coming from animations & transitions\nincluding the animation & transition styles coming from inheritance chain.","domainHref":"tot/CSS/","href":"#method-getAnimatedStylesForNode"}]},"css.getmatchedstylesfornode":{"keyword":"CSS.getMatchedStylesForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Returns requested styles for a DOM node identified by `nodeId`.","domainHref":"tot/CSS/","href":"#method-getMatchedStylesForNode"}]},"css.getmediaqueries":{"keyword":"CSS.getMediaQueries","pageReferences":[{"domain":"CSS","type":"4","description":"Returns all media queries parsed by the rendering engine.","domainHref":"tot/CSS/","href":"#method-getMediaQueries"}]},"css.getplatformfontsfornode":{"keyword":"CSS.getPlatformFontsForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Requests information about platform fonts which we used to render child TextNodes in the given\nnode.","domainHref":"tot/CSS/","href":"#method-getPlatformFontsForNode"}]},"css.getstylesheettext":{"keyword":"CSS.getStyleSheetText","pageReferences":[{"domain":"CSS","type":"4","description":"Returns the current textual content for a stylesheet.","domainHref":"tot/CSS/","href":"#method-getStyleSheetText"}]},"css.getlayersfornode":{"keyword":"CSS.getLayersForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Returns all layers parsed by the rendering engine for the tree scope of a node.\nGiven a DOM element identified by nodeId, getLayersForNode returns the root\nlayer for the nearest ancestor document or s...","domainHref":"tot/CSS/","href":"#method-getLayersForNode"}]},"css.getlocationforselector":{"keyword":"CSS.getLocationForSelector","pageReferences":[{"domain":"CSS","type":"4","description":"Given a CSS selector text and a style sheet ID, getLocationForSelector\nreturns an array of locations of the CSS selector in the style sheet.","domainHref":"tot/CSS/","href":"#method-getLocationForSelector"}]},"css.trackcomputedstyleupdatesfornode":{"keyword":"CSS.trackComputedStyleUpdatesForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Starts tracking the given node for the computed style updates\nand whenever the computed style is updated for node, it queues\na `computedStyleUpdated` event with throttling.\nThere can only be 1 node tr...","domainHref":"tot/CSS/","href":"#method-trackComputedStyleUpdatesForNode"}]},"css.trackcomputedstyleupdates":{"keyword":"CSS.trackComputedStyleUpdates","pageReferences":[{"domain":"CSS","type":"4","description":"Starts tracking the given computed styles for updates. The specified array of properties\nreplaces the one previously specified. Pass empty array to disable tracking.\nUse takeComputedStyleUpdates to re...","domainHref":"tot/CSS/","href":"#method-trackComputedStyleUpdates"}]},"css.takecomputedstyleupdates":{"keyword":"CSS.takeComputedStyleUpdates","pageReferences":[{"domain":"CSS","type":"4","description":"Polls the next batch of computed style updates.","domainHref":"tot/CSS/","href":"#method-takeComputedStyleUpdates"}]},"css.seteffectivepropertyvaluefornode":{"keyword":"CSS.setEffectivePropertyValueForNode","pageReferences":[{"domain":"CSS","type":"4","description":"Find a rule with the given active property for the given node and set the new value for this\nproperty","domainHref":"tot/CSS/","href":"#method-setEffectivePropertyValueForNode"}]},"css.setpropertyrulepropertyname":{"keyword":"CSS.setPropertyRulePropertyName","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the property rule property name.","domainHref":"tot/CSS/","href":"#method-setPropertyRulePropertyName"}]},"css.setkeyframekey":{"keyword":"CSS.setKeyframeKey","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the keyframe rule key text.","domainHref":"tot/CSS/","href":"#method-setKeyframeKey"}]},"css.setmediatext":{"keyword":"CSS.setMediaText","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the rule selector.","domainHref":"tot/CSS/","href":"#method-setMediaText"}]},"css.setcontainerquerytext":{"keyword":"CSS.setContainerQueryText","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the expression of a container query.","domainHref":"tot/CSS/","href":"#method-setContainerQueryText"}]},"css.setsupportstext":{"keyword":"CSS.setSupportsText","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the expression of a supports at-rule.","domainHref":"tot/CSS/","href":"#method-setSupportsText"}]},"css.setscopetext":{"keyword":"CSS.setScopeText","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the expression of a scope at-rule.","domainHref":"tot/CSS/","href":"#method-setScopeText"}]},"css.setruleselector":{"keyword":"CSS.setRuleSelector","pageReferences":[{"domain":"CSS","type":"4","description":"Modifies the rule selector.","domainHref":"tot/CSS/","href":"#method-setRuleSelector"}]},"css.setstylesheettext":{"keyword":"CSS.setStyleSheetText","pageReferences":[{"domain":"CSS","type":"4","description":"Sets the new stylesheet text.","domainHref":"tot/CSS/","href":"#method-setStyleSheetText"}]},"css.setstyletexts":{"keyword":"CSS.setStyleTexts","pageReferences":[{"domain":"CSS","type":"4","description":"Applies specified style edits one after another in the given order.","domainHref":"tot/CSS/","href":"#method-setStyleTexts"}]},"css.startruleusagetracking":{"keyword":"CSS.startRuleUsageTracking","pageReferences":[{"domain":"CSS","type":"4","description":"Enables the selector recording.","domainHref":"tot/CSS/","href":"#method-startRuleUsageTracking"}]},"css.stopruleusagetracking":{"keyword":"CSS.stopRuleUsageTracking","pageReferences":[{"domain":"CSS","type":"4","description":"Stop tracking rule usage and return the list of rules that were used since last call to\n`takeCoverageDelta` (or since start of coverage instrumentation).","domainHref":"tot/CSS/","href":"#method-stopRuleUsageTracking"}]},"css.takecoveragedelta":{"keyword":"CSS.takeCoverageDelta","pageReferences":[{"domain":"CSS","type":"4","description":"Obtain list of rules that became used since last call to this method (or since start of coverage\ninstrumentation).","domainHref":"tot/CSS/","href":"#method-takeCoverageDelta"}]},"css.setlocalfontsenabled":{"keyword":"CSS.setLocalFontsEnabled","pageReferences":[{"domain":"CSS","type":"4","description":"Enables/disables rendering of local CSS fonts (enabled by default).","domainHref":"tot/CSS/","href":"#method-setLocalFontsEnabled"}]},"css.fontsupdated":{"keyword":"CSS.fontsUpdated","pageReferences":[{"domain":"CSS","type":"1","description":"Fires whenever a web font is updated. A non-empty font parameter indicates a successfully loaded\nweb font.","domainHref":"tot/CSS/","href":"#event-fontsUpdated"}]},"css.mediaqueryresultchanged":{"keyword":"CSS.mediaQueryResultChanged","pageReferences":[{"domain":"CSS","type":"1","description":"Fires whenever a MediaQuery result changes (for example, after a browser window has been\nresized.) The current implementation considers only viewport-dependent media features.","domainHref":"tot/CSS/","href":"#event-mediaQueryResultChanged"}]},"css.stylesheetadded":{"keyword":"CSS.styleSheetAdded","pageReferences":[{"domain":"CSS","type":"1","description":"Fired whenever an active document stylesheet is added.","domainHref":"tot/CSS/","href":"#event-styleSheetAdded"}]},"css.stylesheetchanged":{"keyword":"CSS.styleSheetChanged","pageReferences":[{"domain":"CSS","type":"1","description":"Fired whenever a stylesheet is changed as a result of the client operation.","domainHref":"tot/CSS/","href":"#event-styleSheetChanged"}]},"css.stylesheetremoved":{"keyword":"CSS.styleSheetRemoved","pageReferences":[{"domain":"CSS","type":"1","description":"Fired whenever an active document stylesheet is removed.","domainHref":"tot/CSS/","href":"#event-styleSheetRemoved"}]},"css.computedstyleupdated":{"keyword":"CSS.computedStyleUpdated","pageReferences":[{"domain":"CSS","type":"1","domainHref":"tot/CSS/","href":"#event-computedStyleUpdated"}]},"css.stylesheetid":{"keyword":"CSS.StyleSheetId","pageReferences":[{"domain":"CSS","type":"3","domainHref":"tot/CSS/","href":"#type-StyleSheetId"}]},"css.stylesheetorigin":{"keyword":"CSS.StyleSheetOrigin","pageReferences":[{"domain":"CSS","type":"3","description":"Stylesheet type: \"injected\" for stylesheets injected via extension, \"user-agent\" for user-agent\nstylesheets, \"inspector\" for stylesheets created by the inspector (i.e. those holding the \"via\ninspector...","domainHref":"tot/CSS/","href":"#type-StyleSheetOrigin"}]},"css.pseudoelementmatches":{"keyword":"CSS.PseudoElementMatches","pageReferences":[{"domain":"CSS","type":"3","description":"CSS rule collection for a single pseudo style.","domainHref":"tot/CSS/","href":"#type-PseudoElementMatches"}]},"css.cssanimationstyle":{"keyword":"CSS.CSSAnimationStyle","pageReferences":[{"domain":"CSS","type":"3","description":"CSS style coming from animations with the name of the animation.","domainHref":"tot/CSS/","href":"#type-CSSAnimationStyle"}]},"css.inheritedstyleentry":{"keyword":"CSS.InheritedStyleEntry","pageReferences":[{"domain":"CSS","type":"3","description":"Inherited CSS rule collection from ancestor node.","domainHref":"tot/CSS/","href":"#type-InheritedStyleEntry"}]},"css.inheritedanimatedstyleentry":{"keyword":"CSS.InheritedAnimatedStyleEntry","pageReferences":[{"domain":"CSS","type":"3","description":"Inherited CSS style collection for animated styles from ancestor node.","domainHref":"tot/CSS/","href":"#type-InheritedAnimatedStyleEntry"}]},"css.inheritedpseudoelementmatches":{"keyword":"CSS.InheritedPseudoElementMatches","pageReferences":[{"domain":"CSS","type":"3","description":"Inherited pseudo element matches from pseudos of an ancestor node.","domainHref":"tot/CSS/","href":"#type-InheritedPseudoElementMatches"}]},"css.rulematch":{"keyword":"CSS.RuleMatch","pageReferences":[{"domain":"CSS","type":"3","description":"Match data for a CSS rule.","domainHref":"tot/CSS/","href":"#type-RuleMatch"}]},"css.value":{"keyword":"CSS.Value","pageReferences":[{"domain":"CSS","type":"3","description":"Data for a simple selector (these are delimited by commas in a selector list).","domainHref":"tot/CSS/","href":"#type-Value"}]},"css.specificity":{"keyword":"CSS.Specificity","pageReferences":[{"domain":"CSS","type":"3","description":"Specificity:\nhttps://drafts.csswg.org/selectors/#specificity-rules","domainHref":"tot/CSS/","href":"#type-Specificity"}]},"css.selectorlist":{"keyword":"CSS.SelectorList","pageReferences":[{"domain":"CSS","type":"3","description":"Selector list data.","domainHref":"tot/CSS/","href":"#type-SelectorList"}]},"css.cssstylesheetheader":{"keyword":"CSS.CSSStyleSheetHeader","pageReferences":[{"domain":"CSS","type":"3","description":"CSS stylesheet metainformation.","domainHref":"tot/CSS/","href":"#type-CSSStyleSheetHeader"}]},"css.cssrule":{"keyword":"CSS.CSSRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS rule representation.","domainHref":"tot/CSS/","href":"#type-CSSRule"}]},"css.cssruletype":{"keyword":"CSS.CSSRuleType","pageReferences":[{"domain":"CSS","type":"3","description":"Enum indicating the type of a CSS rule, used to represent the order of a style rule's ancestors.\nThis list only contains rule types that are collected during the ancestor rule collection.","domainHref":"tot/CSS/","href":"#type-CSSRuleType"}]},"css.ruleusage":{"keyword":"CSS.RuleUsage","pageReferences":[{"domain":"CSS","type":"3","description":"CSS coverage information.","domainHref":"tot/CSS/","href":"#type-RuleUsage"}]},"css.sourcerange":{"keyword":"CSS.SourceRange","pageReferences":[{"domain":"CSS","type":"3","description":"Text range within a resource. All numbers are zero-based.","domainHref":"tot/CSS/","href":"#type-SourceRange"}]},"css.shorthandentry":{"keyword":"CSS.ShorthandEntry","pageReferences":[{"domain":"CSS","type":"3","domainHref":"tot/CSS/","href":"#type-ShorthandEntry"}]},"css.csscomputedstyleproperty":{"keyword":"CSS.CSSComputedStyleProperty","pageReferences":[{"domain":"CSS","type":"3","domainHref":"tot/CSS/","href":"#type-CSSComputedStyleProperty"}]},"css.cssstyle":{"keyword":"CSS.CSSStyle","pageReferences":[{"domain":"CSS","type":"3","description":"CSS style representation.","domainHref":"tot/CSS/","href":"#type-CSSStyle"}]},"css.cssproperty":{"keyword":"CSS.CSSProperty","pageReferences":[{"domain":"CSS","type":"3","description":"CSS property declaration data.","domainHref":"tot/CSS/","href":"#type-CSSProperty"}]},"css.cssmedia":{"keyword":"CSS.CSSMedia","pageReferences":[{"domain":"CSS","type":"3","description":"CSS media rule descriptor.","domainHref":"tot/CSS/","href":"#type-CSSMedia"}]},"css.mediaquery":{"keyword":"CSS.MediaQuery","pageReferences":[{"domain":"CSS","type":"3","description":"Media query descriptor.","domainHref":"tot/CSS/","href":"#type-MediaQuery"}]},"css.mediaqueryexpression":{"keyword":"CSS.MediaQueryExpression","pageReferences":[{"domain":"CSS","type":"3","description":"Media query expression descriptor.","domainHref":"tot/CSS/","href":"#type-MediaQueryExpression"}]},"css.csscontainerquery":{"keyword":"CSS.CSSContainerQuery","pageReferences":[{"domain":"CSS","type":"3","description":"CSS container query rule descriptor.","domainHref":"tot/CSS/","href":"#type-CSSContainerQuery"}]},"css.csssupports":{"keyword":"CSS.CSSSupports","pageReferences":[{"domain":"CSS","type":"3","description":"CSS Supports at-rule descriptor.","domainHref":"tot/CSS/","href":"#type-CSSSupports"}]},"css.cssscope":{"keyword":"CSS.CSSScope","pageReferences":[{"domain":"CSS","type":"3","description":"CSS Scope at-rule descriptor.","domainHref":"tot/CSS/","href":"#type-CSSScope"}]},"css.csslayer":{"keyword":"CSS.CSSLayer","pageReferences":[{"domain":"CSS","type":"3","description":"CSS Layer at-rule descriptor.","domainHref":"tot/CSS/","href":"#type-CSSLayer"}]},"css.cssstartingstyle":{"keyword":"CSS.CSSStartingStyle","pageReferences":[{"domain":"CSS","type":"3","description":"CSS Starting Style at-rule descriptor.","domainHref":"tot/CSS/","href":"#type-CSSStartingStyle"}]},"css.csslayerdata":{"keyword":"CSS.CSSLayerData","pageReferences":[{"domain":"CSS","type":"3","description":"CSS Layer data.","domainHref":"tot/CSS/","href":"#type-CSSLayerData"}]},"css.platformfontusage":{"keyword":"CSS.PlatformFontUsage","pageReferences":[{"domain":"CSS","type":"3","description":"Information about amount of glyphs that were rendered with given font.","domainHref":"tot/CSS/","href":"#type-PlatformFontUsage"}]},"css.fontvariationaxis":{"keyword":"CSS.FontVariationAxis","pageReferences":[{"domain":"CSS","type":"3","description":"Information about font variation axes for variable fonts","domainHref":"tot/CSS/","href":"#type-FontVariationAxis"}]},"css.fontface":{"keyword":"CSS.FontFace","pageReferences":[{"domain":"CSS","type":"3","description":"Properties of a web font: https://www.w3.org/TR/2008/REC-CSS2-20080411/fonts.html#font-descriptions\nand additional information such as platformFontFamily and fontVariationAxes.","domainHref":"tot/CSS/","href":"#type-FontFace"}]},"css.csstryrule":{"keyword":"CSS.CSSTryRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS try rule representation.","domainHref":"tot/CSS/","href":"#type-CSSTryRule"}]},"css.csspositiontryrule":{"keyword":"CSS.CSSPositionTryRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS @position-try rule representation.","domainHref":"tot/CSS/","href":"#type-CSSPositionTryRule"}]},"css.csskeyframesrule":{"keyword":"CSS.CSSKeyframesRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS keyframes rule representation.","domainHref":"tot/CSS/","href":"#type-CSSKeyframesRule"}]},"css.csspropertyregistration":{"keyword":"CSS.CSSPropertyRegistration","pageReferences":[{"domain":"CSS","type":"3","description":"Representation of a custom property registration through CSS.registerProperty","domainHref":"tot/CSS/","href":"#type-CSSPropertyRegistration"}]},"css.cssfontpalettevaluesrule":{"keyword":"CSS.CSSFontPaletteValuesRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS font-palette-values rule representation.","domainHref":"tot/CSS/","href":"#type-CSSFontPaletteValuesRule"}]},"css.csspropertyrule":{"keyword":"CSS.CSSPropertyRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS property at-rule representation.","domainHref":"tot/CSS/","href":"#type-CSSPropertyRule"}]},"css.cssfunctionparameter":{"keyword":"CSS.CSSFunctionParameter","pageReferences":[{"domain":"CSS","type":"3","description":"CSS function argument representation.","domainHref":"tot/CSS/","href":"#type-CSSFunctionParameter"}]},"css.cssfunctionconditionnode":{"keyword":"CSS.CSSFunctionConditionNode","pageReferences":[{"domain":"CSS","type":"3","description":"CSS function conditional block representation.","domainHref":"tot/CSS/","href":"#type-CSSFunctionConditionNode"}]},"css.cssfunctionnode":{"keyword":"CSS.CSSFunctionNode","pageReferences":[{"domain":"CSS","type":"3","description":"Section of the body of a CSS function rule.","domainHref":"tot/CSS/","href":"#type-CSSFunctionNode"}]},"css.cssfunctionrule":{"keyword":"CSS.CSSFunctionRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS function at-rule representation.","domainHref":"tot/CSS/","href":"#type-CSSFunctionRule"}]},"css.csskeyframerule":{"keyword":"CSS.CSSKeyframeRule","pageReferences":[{"domain":"CSS","type":"3","description":"CSS keyframe rule representation.","domainHref":"tot/CSS/","href":"#type-CSSKeyframeRule"}]},"css.styledeclarationedit":{"keyword":"CSS.StyleDeclarationEdit","pageReferences":[{"domain":"CSS","type":"3","description":"A descriptor of operation to mutate style declaration text.","domainHref":"tot/CSS/","href":"#type-StyleDeclarationEdit"}]},"cachestorage":{"keyword":"CacheStorage","pageReferences":[{"domain":"CacheStorage","type":"0","domainHref":"tot/CacheStorage/"}]},"cachestorage.deletecache":{"keyword":"CacheStorage.deleteCache","pageReferences":[{"domain":"CacheStorage","type":"4","description":"Deletes a cache.","domainHref":"tot/CacheStorage/","href":"#method-deleteCache"}]},"cachestorage.deleteentry":{"keyword":"CacheStorage.deleteEntry","pageReferences":[{"domain":"CacheStorage","type":"4","description":"Deletes a cache entry.","domainHref":"tot/CacheStorage/","href":"#method-deleteEntry"}]},"cachestorage.requestcachenames":{"keyword":"CacheStorage.requestCacheNames","pageReferences":[{"domain":"CacheStorage","type":"4","description":"Requests cache names.","domainHref":"tot/CacheStorage/","href":"#method-requestCacheNames"}]},"cachestorage.requestcachedresponse":{"keyword":"CacheStorage.requestCachedResponse","pageReferences":[{"domain":"CacheStorage","type":"4","description":"Fetches cache entry.","domainHref":"tot/CacheStorage/","href":"#method-requestCachedResponse"}]},"cachestorage.requestentries":{"keyword":"CacheStorage.requestEntries","pageReferences":[{"domain":"CacheStorage","type":"4","description":"Requests data from cache.","domainHref":"tot/CacheStorage/","href":"#method-requestEntries"}]},"cachestorage.cacheid":{"keyword":"CacheStorage.CacheId","pageReferences":[{"domain":"CacheStorage","type":"3","description":"Unique identifier of the Cache object.","domainHref":"tot/CacheStorage/","href":"#type-CacheId"}]},"cachestorage.cachedresponsetype":{"keyword":"CacheStorage.CachedResponseType","pageReferences":[{"domain":"CacheStorage","type":"3","description":"type of HTTP response cached","domainHref":"tot/CacheStorage/","href":"#type-CachedResponseType"}]},"cachestorage.dataentry":{"keyword":"CacheStorage.DataEntry","pageReferences":[{"domain":"CacheStorage","type":"3","description":"Data entry.","domainHref":"tot/CacheStorage/","href":"#type-DataEntry"}]},"cachestorage.cache":{"keyword":"CacheStorage.Cache","pageReferences":[{"domain":"CacheStorage","type":"3","description":"Cache identifier.","domainHref":"tot/CacheStorage/","href":"#type-Cache"}]},"cachestorage.header":{"keyword":"CacheStorage.Header","pageReferences":[{"domain":"CacheStorage","type":"3","domainHref":"tot/CacheStorage/","href":"#type-Header"}]},"cachestorage.cachedresponse":{"keyword":"CacheStorage.CachedResponse","pageReferences":[{"domain":"CacheStorage","type":"3","description":"Cached response","domainHref":"tot/CacheStorage/","href":"#type-CachedResponse"}]},"cast":{"keyword":"Cast","pageReferences":[{"domain":"Cast","type":"0","description":"A domain for interacting with Cast, Presentation API, and Remote Playback API\nfunctionalities.","domainHref":"tot/Cast/"}]},"cast.enable":{"keyword":"Cast.enable","pageReferences":[{"domain":"Cast","type":"4","description":"Starts observing for sinks that can be used for tab mirroring, and if set,\nsinks compatible with |presentationUrl| as well. When sinks are found, a\n|sinksUpdated| event is fired.\nAlso starts observing...","domainHref":"tot/Cast/","href":"#method-enable"}]},"cast.disable":{"keyword":"Cast.disable","pageReferences":[{"domain":"Cast","type":"4","description":"Stops observing for sinks and issues.","domainHref":"tot/Cast/","href":"#method-disable"}]},"cast.setsinktouse":{"keyword":"Cast.setSinkToUse","pageReferences":[{"domain":"Cast","type":"4","description":"Sets a sink to be used when the web page requests the browser to choose a\nsink via Presentation API, Remote Playback API, or Cast SDK.","domainHref":"tot/Cast/","href":"#method-setSinkToUse"}]},"cast.startdesktopmirroring":{"keyword":"Cast.startDesktopMirroring","pageReferences":[{"domain":"Cast","type":"4","description":"Starts mirroring the desktop to the sink.","domainHref":"tot/Cast/","href":"#method-startDesktopMirroring"}]},"cast.starttabmirroring":{"keyword":"Cast.startTabMirroring","pageReferences":[{"domain":"Cast","type":"4","description":"Starts mirroring the tab to the sink.","domainHref":"tot/Cast/","href":"#method-startTabMirroring"}]},"cast.stopcasting":{"keyword":"Cast.stopCasting","pageReferences":[{"domain":"Cast","type":"4","description":"Stops the active Cast session on the sink.","domainHref":"tot/Cast/","href":"#method-stopCasting"}]},"cast.sinksupdated":{"keyword":"Cast.sinksUpdated","pageReferences":[{"domain":"Cast","type":"1","description":"This is fired whenever the list of available sinks changes. A sink is a\ndevice or a software surface that you can cast to.","domainHref":"tot/Cast/","href":"#event-sinksUpdated"}]},"cast.issueupdated":{"keyword":"Cast.issueUpdated","pageReferences":[{"domain":"Cast","type":"1","description":"This is fired whenever the outstanding issue/error message changes.\n|issueMessage| is empty if there is no issue.","domainHref":"tot/Cast/","href":"#event-issueUpdated"}]},"cast.sink":{"keyword":"Cast.Sink","pageReferences":[{"domain":"Cast","type":"3","domainHref":"tot/Cast/","href":"#type-Sink"}]},"dom":{"keyword":"DOM","pageReferences":[{"domain":"DOM","type":"0","description":"This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object\nthat has an `id`. This `id` can be used to get additional information on the Node, resolve it into\nth...","domainHref":"tot/DOM/"}]},"dom.collectclassnamesfromsubtree":{"keyword":"DOM.collectClassNamesFromSubtree","pageReferences":[{"domain":"DOM","type":"4","description":"Collects class names for the node with given id and all of it's child nodes.","domainHref":"tot/DOM/","href":"#method-collectClassNamesFromSubtree"}]},"dom.copyto":{"keyword":"DOM.copyTo","pageReferences":[{"domain":"DOM","type":"4","description":"Creates a deep copy of the specified node and places it into the target container before the\ngiven anchor.","domainHref":"tot/DOM/","href":"#method-copyTo"}]},"dom.describenode":{"keyword":"DOM.describeNode","pageReferences":[{"domain":"DOM","type":"4","description":"Describes node given its id, does not require domain to be enabled. Does not start tracking any\nobjects, can be used for automation.","domainHref":"tot/DOM/","href":"#method-describeNode"}]},"dom.scrollintoviewifneeded":{"keyword":"DOM.scrollIntoViewIfNeeded","pageReferences":[{"domain":"DOM","type":"4","description":"Scrolls the specified rect of the given node into view if not already visible.\nNote: exactly one between nodeId, backendNodeId and objectId should be passed\nto identify the node.","domainHref":"tot/DOM/","href":"#method-scrollIntoViewIfNeeded"}]},"dom.disable":{"keyword":"DOM.disable","pageReferences":[{"domain":"DOM","type":"4","description":"Disables DOM agent for the given page.","domainHref":"tot/DOM/","href":"#method-disable"}]},"dom.discardsearchresults":{"keyword":"DOM.discardSearchResults","pageReferences":[{"domain":"DOM","type":"4","description":"Discards search results from the session with the given id. `getSearchResults` should no longer\nbe called for that search.","domainHref":"tot/DOM/","href":"#method-discardSearchResults"}]},"dom.enable":{"keyword":"DOM.enable","pageReferences":[{"domain":"DOM","type":"4","description":"Enables DOM agent for the given page.","domainHref":"tot/DOM/","href":"#method-enable"}]},"dom.focus":{"keyword":"DOM.focus","pageReferences":[{"domain":"DOM","type":"4","description":"Focuses the given element.","domainHref":"tot/DOM/","href":"#method-focus"}]},"dom.getattributes":{"keyword":"DOM.getAttributes","pageReferences":[{"domain":"DOM","type":"4","description":"Returns attributes for the specified node.","domainHref":"tot/DOM/","href":"#method-getAttributes"}]},"dom.getboxmodel":{"keyword":"DOM.getBoxModel","pageReferences":[{"domain":"DOM","type":"4","description":"Returns boxes for the given node.","domainHref":"tot/DOM/","href":"#method-getBoxModel"}]},"dom.getcontentquads":{"keyword":"DOM.getContentQuads","pageReferences":[{"domain":"DOM","type":"4","description":"Returns quads that describe node position on the page. This method\nmight return multiple quads for inline nodes.","domainHref":"tot/DOM/","href":"#method-getContentQuads"}]},"dom.getdocument":{"keyword":"DOM.getDocument","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the root DOM node (and optionally the subtree) to the caller.\nImplicitly enables the DOM domain events for the current target.","domainHref":"tot/DOM/","href":"#method-getDocument"}]},"dom.getflatteneddocument":{"keyword":"DOM.getFlattenedDocument","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the root DOM node (and optionally the subtree) to the caller.\nDeprecated, as it is not designed to work well with the rest of the DOM agent.\nUse DOMSnapshot.captureSnapshot instead.","domainHref":"tot/DOM/","href":"#method-getFlattenedDocument"}]},"dom.getnodesforsubtreebystyle":{"keyword":"DOM.getNodesForSubtreeByStyle","pageReferences":[{"domain":"DOM","type":"4","description":"Finds nodes with a given computed style in a subtree.","domainHref":"tot/DOM/","href":"#method-getNodesForSubtreeByStyle"}]},"dom.getnodeforlocation":{"keyword":"DOM.getNodeForLocation","pageReferences":[{"domain":"DOM","type":"4","description":"Returns node id at given location. Depending on whether DOM domain is enabled, nodeId is\neither returned or not.","domainHref":"tot/DOM/","href":"#method-getNodeForLocation"}]},"dom.getouterhtml":{"keyword":"DOM.getOuterHTML","pageReferences":[{"domain":"DOM","type":"4","description":"Returns node's HTML markup.","domainHref":"tot/DOM/","href":"#method-getOuterHTML"}]},"dom.getrelayoutboundary":{"keyword":"DOM.getRelayoutBoundary","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the id of the nearest ancestor that is a relayout boundary.","domainHref":"tot/DOM/","href":"#method-getRelayoutBoundary"}]},"dom.getsearchresults":{"keyword":"DOM.getSearchResults","pageReferences":[{"domain":"DOM","type":"4","description":"Returns search results from given `fromIndex` to given `toIndex` from the search with the given\nidentifier.","domainHref":"tot/DOM/","href":"#method-getSearchResults"}]},"dom.hidehighlight":{"keyword":"DOM.hideHighlight","pageReferences":[{"domain":"DOM","type":"4","description":"Hides any highlight.","domainHref":"tot/DOM/","href":"#method-hideHighlight"}]},"dom.highlightnode":{"keyword":"DOM.highlightNode","pageReferences":[{"domain":"DOM","type":"4","description":"Highlights DOM node.","domainHref":"tot/DOM/","href":"#method-highlightNode"}]},"dom.highlightrect":{"keyword":"DOM.highlightRect","pageReferences":[{"domain":"DOM","type":"4","description":"Highlights given rectangle.","domainHref":"tot/DOM/","href":"#method-highlightRect"}]},"dom.markundoablestate":{"keyword":"DOM.markUndoableState","pageReferences":[{"domain":"DOM","type":"4","description":"Marks last undoable state.","domainHref":"tot/DOM/","href":"#method-markUndoableState"}]},"dom.moveto":{"keyword":"DOM.moveTo","pageReferences":[{"domain":"DOM","type":"4","description":"Moves node into the new container, places it before the given anchor.","domainHref":"tot/DOM/","href":"#method-moveTo"}]},"dom.performsearch":{"keyword":"DOM.performSearch","pageReferences":[{"domain":"DOM","type":"4","description":"Searches for a given string in the DOM tree. Use `getSearchResults` to access search results or\n`cancelSearch` to end this search session.","domainHref":"tot/DOM/","href":"#method-performSearch"}]},"dom.pushnodebypathtofrontend":{"keyword":"DOM.pushNodeByPathToFrontend","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that the node is sent to the caller given its path. // FIXME, use XPath","domainHref":"tot/DOM/","href":"#method-pushNodeByPathToFrontend"}]},"dom.pushnodesbybackendidstofrontend":{"keyword":"DOM.pushNodesByBackendIdsToFrontend","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that a batch of nodes is sent to the caller given their backend node ids.","domainHref":"tot/DOM/","href":"#method-pushNodesByBackendIdsToFrontend"}]},"dom.queryselector":{"keyword":"DOM.querySelector","pageReferences":[{"domain":"DOM","type":"4","description":"Executes `querySelector` on a given node.","domainHref":"tot/DOM/","href":"#method-querySelector"}]},"dom.queryselectorall":{"keyword":"DOM.querySelectorAll","pageReferences":[{"domain":"DOM","type":"4","description":"Executes `querySelectorAll` on a given node.","domainHref":"tot/DOM/","href":"#method-querySelectorAll"}]},"dom.gettoplayerelements":{"keyword":"DOM.getTopLayerElements","pageReferences":[{"domain":"DOM","type":"4","description":"Returns NodeIds of current top layer elements.\nTop layer is rendered closest to the user within a viewport, therefore its elements always\nappear on top of all other content.","domainHref":"tot/DOM/","href":"#method-getTopLayerElements"}]},"dom.getelementbyrelation":{"keyword":"DOM.getElementByRelation","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the NodeId of the matched element according to certain relations.","domainHref":"tot/DOM/","href":"#method-getElementByRelation"}]},"dom.redo":{"keyword":"DOM.redo","pageReferences":[{"domain":"DOM","type":"4","description":"Re-does the last undone action.","domainHref":"tot/DOM/","href":"#method-redo"}]},"dom.removeattribute":{"keyword":"DOM.removeAttribute","pageReferences":[{"domain":"DOM","type":"4","description":"Removes attribute with given name from an element with given id.","domainHref":"tot/DOM/","href":"#method-removeAttribute"}]},"dom.removenode":{"keyword":"DOM.removeNode","pageReferences":[{"domain":"DOM","type":"4","description":"Removes node with given id.","domainHref":"tot/DOM/","href":"#method-removeNode"}]},"dom.requestchildnodes":{"keyword":"DOM.requestChildNodes","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that children of the node with given id are returned to the caller in form of\n`setChildNodes` events where not only immediate children are retrieved, but all children down to\nthe specified de...","domainHref":"tot/DOM/","href":"#method-requestChildNodes"}]},"dom.requestnode":{"keyword":"DOM.requestNode","pageReferences":[{"domain":"DOM","type":"4","description":"Requests that the node is sent to the caller given the JavaScript node object reference. All\nnodes that form the path from the node to the root are also sent to the client as a series of\n`setChildNode...","domainHref":"tot/DOM/","href":"#method-requestNode"}]},"dom.resolvenode":{"keyword":"DOM.resolveNode","pageReferences":[{"domain":"DOM","type":"4","description":"Resolves the JavaScript node object for a given NodeId or BackendNodeId.","domainHref":"tot/DOM/","href":"#method-resolveNode"}]},"dom.setattributevalue":{"keyword":"DOM.setAttributeValue","pageReferences":[{"domain":"DOM","type":"4","description":"Sets attribute for an element with given id.","domainHref":"tot/DOM/","href":"#method-setAttributeValue"}]},"dom.setattributesastext":{"keyword":"DOM.setAttributesAsText","pageReferences":[{"domain":"DOM","type":"4","description":"Sets attributes on element with given id. This method is useful when user edits some existing\nattribute value and types in several attribute name/value pairs.","domainHref":"tot/DOM/","href":"#method-setAttributesAsText"}]},"dom.setfileinputfiles":{"keyword":"DOM.setFileInputFiles","pageReferences":[{"domain":"DOM","type":"4","description":"Sets files for the given file input element.","domainHref":"tot/DOM/","href":"#method-setFileInputFiles"}]},"dom.setnodestacktracesenabled":{"keyword":"DOM.setNodeStackTracesEnabled","pageReferences":[{"domain":"DOM","type":"4","description":"Sets if stack traces should be captured for Nodes. See `Node.getNodeStackTraces`. Default is disabled.","domainHref":"tot/DOM/","href":"#method-setNodeStackTracesEnabled"}]},"dom.getnodestacktraces":{"keyword":"DOM.getNodeStackTraces","pageReferences":[{"domain":"DOM","type":"4","description":"Gets stack traces associated with a Node. As of now, only provides stack trace for Node creation.","domainHref":"tot/DOM/","href":"#method-getNodeStackTraces"}]},"dom.getfileinfo":{"keyword":"DOM.getFileInfo","pageReferences":[{"domain":"DOM","type":"4","description":"Returns file information for the given\nFile wrapper.","domainHref":"tot/DOM/","href":"#method-getFileInfo"}]},"dom.getdetacheddomnodes":{"keyword":"DOM.getDetachedDomNodes","pageReferences":[{"domain":"DOM","type":"4","description":"Returns list of detached nodes","domainHref":"tot/DOM/","href":"#method-getDetachedDomNodes"}]},"dom.setinspectednode":{"keyword":"DOM.setInspectedNode","pageReferences":[{"domain":"DOM","type":"4","description":"Enables console to refer to the node with given id via $x (see Command Line API for more details\n$x functions).","domainHref":"tot/DOM/","href":"#method-setInspectedNode"}]},"dom.setnodename":{"keyword":"DOM.setNodeName","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node name for a node with given id.","domainHref":"tot/DOM/","href":"#method-setNodeName"}]},"dom.setnodevalue":{"keyword":"DOM.setNodeValue","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node value for a node with given id.","domainHref":"tot/DOM/","href":"#method-setNodeValue"}]},"dom.setouterhtml":{"keyword":"DOM.setOuterHTML","pageReferences":[{"domain":"DOM","type":"4","description":"Sets node HTML markup, returns new node id.","domainHref":"tot/DOM/","href":"#method-setOuterHTML"}]},"dom.undo":{"keyword":"DOM.undo","pageReferences":[{"domain":"DOM","type":"4","description":"Undoes the last performed action.","domainHref":"tot/DOM/","href":"#method-undo"}]},"dom.getframeowner":{"keyword":"DOM.getFrameOwner","pageReferences":[{"domain":"DOM","type":"4","description":"Returns iframe node that owns iframe with the given domain.","domainHref":"tot/DOM/","href":"#method-getFrameOwner"}]},"dom.getcontainerfornode":{"keyword":"DOM.getContainerForNode","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the query container of the given node based on container query\nconditions: containerName, physical and logical axes, and whether it queries\nscroll-state. If no axes are provided and queriesScr...","domainHref":"tot/DOM/","href":"#method-getContainerForNode"}]},"dom.getqueryingdescendantsforcontainer":{"keyword":"DOM.getQueryingDescendantsForContainer","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the descendants of a container query container that have\ncontainer queries against this container.","domainHref":"tot/DOM/","href":"#method-getQueryingDescendantsForContainer"}]},"dom.getanchorelement":{"keyword":"DOM.getAnchorElement","pageReferences":[{"domain":"DOM","type":"4","description":"Returns the target anchor element of the given anchor query according to\nhttps://www.w3.org/TR/css-anchor-position-1/#target.","domainHref":"tot/DOM/","href":"#method-getAnchorElement"}]},"dom.attributemodified":{"keyword":"DOM.attributeModified","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Element`'s attribute is modified.","domainHref":"tot/DOM/","href":"#event-attributeModified"}]},"dom.attributeremoved":{"keyword":"DOM.attributeRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Element`'s attribute is removed.","domainHref":"tot/DOM/","href":"#event-attributeRemoved"}]},"dom.characterdatamodified":{"keyword":"DOM.characterDataModified","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors `DOMCharacterDataModified` event.","domainHref":"tot/DOM/","href":"#event-characterDataModified"}]},"dom.childnodecountupdated":{"keyword":"DOM.childNodeCountUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Container`'s child node count has changed.","domainHref":"tot/DOM/","href":"#event-childNodeCountUpdated"}]},"dom.childnodeinserted":{"keyword":"DOM.childNodeInserted","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors `DOMNodeInserted` event.","domainHref":"tot/DOM/","href":"#event-childNodeInserted"}]},"dom.childnoderemoved":{"keyword":"DOM.childNodeRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Mirrors `DOMNodeRemoved` event.","domainHref":"tot/DOM/","href":"#event-childNodeRemoved"}]},"dom.distributednodesupdated":{"keyword":"DOM.distributedNodesUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Called when distribution is changed.","domainHref":"tot/DOM/","href":"#event-distributedNodesUpdated"}]},"dom.documentupdated":{"keyword":"DOM.documentUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Document` has been totally updated. Node ids are no longer valid.","domainHref":"tot/DOM/","href":"#event-documentUpdated"}]},"dom.inlinestyleinvalidated":{"keyword":"DOM.inlineStyleInvalidated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when `Element`'s inline style is modified via a CSS property modification.","domainHref":"tot/DOM/","href":"#event-inlineStyleInvalidated"}]},"dom.pseudoelementadded":{"keyword":"DOM.pseudoElementAdded","pageReferences":[{"domain":"DOM","type":"1","description":"Called when a pseudo element is added to an element.","domainHref":"tot/DOM/","href":"#event-pseudoElementAdded"}]},"dom.toplayerelementsupdated":{"keyword":"DOM.topLayerElementsUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Called when top layer elements are changed.","domainHref":"tot/DOM/","href":"#event-topLayerElementsUpdated"}]},"dom.scrollableflagupdated":{"keyword":"DOM.scrollableFlagUpdated","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when a node's scrollability state changes.","domainHref":"tot/DOM/","href":"#event-scrollableFlagUpdated"}]},"dom.pseudoelementremoved":{"keyword":"DOM.pseudoElementRemoved","pageReferences":[{"domain":"DOM","type":"1","description":"Called when a pseudo element is removed from an element.","domainHref":"tot/DOM/","href":"#event-pseudoElementRemoved"}]},"dom.setchildnodes":{"keyword":"DOM.setChildNodes","pageReferences":[{"domain":"DOM","type":"1","description":"Fired when backend wants to provide client with the missing DOM structure. This happens upon\nmost of the calls requesting node ids.","domainHref":"tot/DOM/","href":"#event-setChildNodes"}]},"dom.shadowrootpopped":{"keyword":"DOM.shadowRootPopped","pageReferences":[{"domain":"DOM","type":"1","description":"Called when shadow root is popped from the element.","domainHref":"tot/DOM/","href":"#event-shadowRootPopped"}]},"dom.shadowrootpushed":{"keyword":"DOM.shadowRootPushed","pageReferences":[{"domain":"DOM","type":"1","description":"Called when shadow root is pushed into the element.","domainHref":"tot/DOM/","href":"#event-shadowRootPushed"}]},"dom.nodeid":{"keyword":"DOM.NodeId","pageReferences":[{"domain":"DOM","type":"3","description":"Unique DOM node identifier.","domainHref":"tot/DOM/","href":"#type-NodeId"}]},"dom.backendnodeid":{"keyword":"DOM.BackendNodeId","pageReferences":[{"domain":"DOM","type":"3","description":"Unique DOM node identifier used to reference a node that may not have been pushed to the\nfront-end.","domainHref":"tot/DOM/","href":"#type-BackendNodeId"}]},"dom.backendnode":{"keyword":"DOM.BackendNode","pageReferences":[{"domain":"DOM","type":"3","description":"Backend node with a friendly name.","domainHref":"tot/DOM/","href":"#type-BackendNode"}]},"dom.pseudotype":{"keyword":"DOM.PseudoType","pageReferences":[{"domain":"DOM","type":"3","description":"Pseudo element type.","domainHref":"tot/DOM/","href":"#type-PseudoType"}]},"dom.shadowroottype":{"keyword":"DOM.ShadowRootType","pageReferences":[{"domain":"DOM","type":"3","description":"Shadow root type.","domainHref":"tot/DOM/","href":"#type-ShadowRootType"}]},"dom.compatibilitymode":{"keyword":"DOM.CompatibilityMode","pageReferences":[{"domain":"DOM","type":"3","description":"Document compatibility mode.","domainHref":"tot/DOM/","href":"#type-CompatibilityMode"}]},"dom.physicalaxes":{"keyword":"DOM.PhysicalAxes","pageReferences":[{"domain":"DOM","type":"3","description":"ContainerSelector physical axes","domainHref":"tot/DOM/","href":"#type-PhysicalAxes"}]},"dom.logicalaxes":{"keyword":"DOM.LogicalAxes","pageReferences":[{"domain":"DOM","type":"3","description":"ContainerSelector logical axes","domainHref":"tot/DOM/","href":"#type-LogicalAxes"}]},"dom.scrollorientation":{"keyword":"DOM.ScrollOrientation","pageReferences":[{"domain":"DOM","type":"3","description":"Physical scroll orientation","domainHref":"tot/DOM/","href":"#type-ScrollOrientation"}]},"dom.node":{"keyword":"DOM.Node","pageReferences":[{"domain":"DOM","type":"3","description":"DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes.\nDOMNode is a base node mirror type.","domainHref":"tot/DOM/","href":"#type-Node"}]},"dom.detachedelementinfo":{"keyword":"DOM.DetachedElementInfo","pageReferences":[{"domain":"DOM","type":"3","description":"A structure to hold the top-level node of a detached tree and an array of its retained descendants.","domainHref":"tot/DOM/","href":"#type-DetachedElementInfo"}]},"dom.rgba":{"keyword":"DOM.RGBA","pageReferences":[{"domain":"DOM","type":"3","description":"A structure holding an RGBA color.","domainHref":"tot/DOM/","href":"#type-RGBA"}]},"dom.quad":{"keyword":"DOM.Quad","pageReferences":[{"domain":"DOM","type":"3","description":"An array of quad vertices, x immediately followed by y for each point, points clock-wise.","domainHref":"tot/DOM/","href":"#type-Quad"}]},"dom.boxmodel":{"keyword":"DOM.BoxModel","pageReferences":[{"domain":"DOM","type":"3","description":"Box model.","domainHref":"tot/DOM/","href":"#type-BoxModel"}]},"dom.shapeoutsideinfo":{"keyword":"DOM.ShapeOutsideInfo","pageReferences":[{"domain":"DOM","type":"3","description":"CSS Shape Outside details.","domainHref":"tot/DOM/","href":"#type-ShapeOutsideInfo"}]},"dom.rect":{"keyword":"DOM.Rect","pageReferences":[{"domain":"DOM","type":"3","description":"Rectangle.","domainHref":"tot/DOM/","href":"#type-Rect"}]},"dom.csscomputedstyleproperty":{"keyword":"DOM.CSSComputedStyleProperty","pageReferences":[{"domain":"DOM","type":"3","domainHref":"tot/DOM/","href":"#type-CSSComputedStyleProperty"}]},"domdebugger":{"keyword":"DOMDebugger","pageReferences":[{"domain":"DOMDebugger","type":"0","description":"DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript\nexecution will stop on these operations as if there was a regular breakpoint set.","domainHref":"tot/DOMDebugger/"}]},"domdebugger.geteventlisteners":{"keyword":"DOMDebugger.getEventListeners","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Returns event listeners of the given object.","domainHref":"tot/DOMDebugger/","href":"#method-getEventListeners"}]},"domdebugger.removedombreakpoint":{"keyword":"DOMDebugger.removeDOMBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes DOM breakpoint that was set using `setDOMBreakpoint`.","domainHref":"tot/DOMDebugger/","href":"#method-removeDOMBreakpoint"}]},"domdebugger.removeeventlistenerbreakpoint":{"keyword":"DOMDebugger.removeEventListenerBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint on particular DOM event.","domainHref":"tot/DOMDebugger/","href":"#method-removeEventListenerBreakpoint"}]},"domdebugger.removeinstrumentationbreakpoint":{"keyword":"DOMDebugger.removeInstrumentationBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint on particular native event.","domainHref":"tot/DOMDebugger/","href":"#method-removeInstrumentationBreakpoint"}]},"domdebugger.removexhrbreakpoint":{"keyword":"DOMDebugger.removeXHRBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Removes breakpoint from XMLHttpRequest.","domainHref":"tot/DOMDebugger/","href":"#method-removeXHRBreakpoint"}]},"domdebugger.setbreakoncspviolation":{"keyword":"DOMDebugger.setBreakOnCSPViolation","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular CSP violations.","domainHref":"tot/DOMDebugger/","href":"#method-setBreakOnCSPViolation"}]},"domdebugger.setdombreakpoint":{"keyword":"DOMDebugger.setDOMBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular operation with DOM.","domainHref":"tot/DOMDebugger/","href":"#method-setDOMBreakpoint"}]},"domdebugger.seteventlistenerbreakpoint":{"keyword":"DOMDebugger.setEventListenerBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular DOM event.","domainHref":"tot/DOMDebugger/","href":"#method-setEventListenerBreakpoint"}]},"domdebugger.setinstrumentationbreakpoint":{"keyword":"DOMDebugger.setInstrumentationBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on particular native event.","domainHref":"tot/DOMDebugger/","href":"#method-setInstrumentationBreakpoint"}]},"domdebugger.setxhrbreakpoint":{"keyword":"DOMDebugger.setXHRBreakpoint","pageReferences":[{"domain":"DOMDebugger","type":"4","description":"Sets breakpoint on XMLHttpRequest.","domainHref":"tot/DOMDebugger/","href":"#method-setXHRBreakpoint"}]},"domdebugger.dombreakpointtype":{"keyword":"DOMDebugger.DOMBreakpointType","pageReferences":[{"domain":"DOMDebugger","type":"3","description":"DOM breakpoint type.","domainHref":"tot/DOMDebugger/","href":"#type-DOMBreakpointType"}]},"domdebugger.cspviolationtype":{"keyword":"DOMDebugger.CSPViolationType","pageReferences":[{"domain":"DOMDebugger","type":"3","description":"CSP Violation type.","domainHref":"tot/DOMDebugger/","href":"#type-CSPViolationType"}]},"domdebugger.eventlistener":{"keyword":"DOMDebugger.EventListener","pageReferences":[{"domain":"DOMDebugger","type":"3","description":"Object event listener.","domainHref":"tot/DOMDebugger/","href":"#type-EventListener"}]},"eventbreakpoints":{"keyword":"EventBreakpoints","pageReferences":[{"domain":"EventBreakpoints","type":"0","description":"EventBreakpoints permits setting JavaScript breakpoints on operations and events\noccurring in native code invoked from JavaScript. Once breakpoint is hit, it is\nreported through Debugger domain, simil...","domainHref":"tot/EventBreakpoints/"}]},"eventbreakpoints.setinstrumentationbreakpoint":{"keyword":"EventBreakpoints.setInstrumentationBreakpoint","pageReferences":[{"domain":"EventBreakpoints","type":"4","description":"Sets breakpoint on particular native event.","domainHref":"tot/EventBreakpoints/","href":"#method-setInstrumentationBreakpoint"}]},"eventbreakpoints.removeinstrumentationbreakpoint":{"keyword":"EventBreakpoints.removeInstrumentationBreakpoint","pageReferences":[{"domain":"EventBreakpoints","type":"4","description":"Removes breakpoint on particular native event.","domainHref":"tot/EventBreakpoints/","href":"#method-removeInstrumentationBreakpoint"}]},"eventbreakpoints.disable":{"keyword":"EventBreakpoints.disable","pageReferences":[{"domain":"EventBreakpoints","type":"4","description":"Removes all breakpoints","domainHref":"tot/EventBreakpoints/","href":"#method-disable"}]},"domsnapshot":{"keyword":"DOMSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"0","description":"This domain facilitates obtaining document snapshots with DOM, layout, and style information.","domainHref":"tot/DOMSnapshot/"}]},"domsnapshot.disable":{"keyword":"DOMSnapshot.disable","pageReferences":[{"domain":"DOMSnapshot","type":"4","description":"Disables DOM snapshot agent for the given page.","domainHref":"tot/DOMSnapshot/","href":"#method-disable"}]},"domsnapshot.enable":{"keyword":"DOMSnapshot.enable","pageReferences":[{"domain":"DOMSnapshot","type":"4","description":"Enables DOM snapshot agent for the given page.","domainHref":"tot/DOMSnapshot/","href":"#method-enable"}]},"domsnapshot.getsnapshot":{"keyword":"DOMSnapshot.getSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"4","description":"Returns a document snapshot, including the full DOM tree of the root node (including iframes,\ntemplate contents, and imported documents) in a flattened array, as well as layout and\nwhite-listed comput...","domainHref":"tot/DOMSnapshot/","href":"#method-getSnapshot"}]},"domsnapshot.capturesnapshot":{"keyword":"DOMSnapshot.captureSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"4","description":"Returns a document snapshot, including the full DOM tree of the root node (including iframes,\ntemplate contents, and imported documents) in a flattened array, as well as layout and\nwhite-listed comput...","domainHref":"tot/DOMSnapshot/","href":"#method-captureSnapshot"}]},"domsnapshot.domnode":{"keyword":"DOMSnapshot.DOMNode","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"A Node in the DOM tree.","domainHref":"tot/DOMSnapshot/","href":"#type-DOMNode"}]},"domsnapshot.inlinetextbox":{"keyword":"DOMSnapshot.InlineTextBox","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Details of post layout rendered text positions. The exact layout should not be regarded as\nstable and may change between versions.","domainHref":"tot/DOMSnapshot/","href":"#type-InlineTextBox"}]},"domsnapshot.layouttreenode":{"keyword":"DOMSnapshot.LayoutTreeNode","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Details of an element in the DOM tree with a LayoutObject.","domainHref":"tot/DOMSnapshot/","href":"#type-LayoutTreeNode"}]},"domsnapshot.computedstyle":{"keyword":"DOMSnapshot.ComputedStyle","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"A subset of the full ComputedStyle as defined by the request whitelist.","domainHref":"tot/DOMSnapshot/","href":"#type-ComputedStyle"}]},"domsnapshot.namevalue":{"keyword":"DOMSnapshot.NameValue","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"A name/value pair.","domainHref":"tot/DOMSnapshot/","href":"#type-NameValue"}]},"domsnapshot.stringindex":{"keyword":"DOMSnapshot.StringIndex","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Index of the string in the strings table.","domainHref":"tot/DOMSnapshot/","href":"#type-StringIndex"}]},"domsnapshot.arrayofstrings":{"keyword":"DOMSnapshot.ArrayOfStrings","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Index of the string in the strings table.","domainHref":"tot/DOMSnapshot/","href":"#type-ArrayOfStrings"}]},"domsnapshot.rarestringdata":{"keyword":"DOMSnapshot.RareStringData","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Data that is only present on rare nodes.","domainHref":"tot/DOMSnapshot/","href":"#type-RareStringData"}]},"domsnapshot.rarebooleandata":{"keyword":"DOMSnapshot.RareBooleanData","pageReferences":[{"domain":"DOMSnapshot","type":"3","domainHref":"tot/DOMSnapshot/","href":"#type-RareBooleanData"}]},"domsnapshot.rareintegerdata":{"keyword":"DOMSnapshot.RareIntegerData","pageReferences":[{"domain":"DOMSnapshot","type":"3","domainHref":"tot/DOMSnapshot/","href":"#type-RareIntegerData"}]},"domsnapshot.rectangle":{"keyword":"DOMSnapshot.Rectangle","pageReferences":[{"domain":"DOMSnapshot","type":"3","domainHref":"tot/DOMSnapshot/","href":"#type-Rectangle"}]},"domsnapshot.documentsnapshot":{"keyword":"DOMSnapshot.DocumentSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Document snapshot.","domainHref":"tot/DOMSnapshot/","href":"#type-DocumentSnapshot"}]},"domsnapshot.nodetreesnapshot":{"keyword":"DOMSnapshot.NodeTreeSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Table containing nodes.","domainHref":"tot/DOMSnapshot/","href":"#type-NodeTreeSnapshot"}]},"domsnapshot.layouttreesnapshot":{"keyword":"DOMSnapshot.LayoutTreeSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Table of details of an element in the DOM tree with a LayoutObject.","domainHref":"tot/DOMSnapshot/","href":"#type-LayoutTreeSnapshot"}]},"domsnapshot.textboxsnapshot":{"keyword":"DOMSnapshot.TextBoxSnapshot","pageReferences":[{"domain":"DOMSnapshot","type":"3","description":"Table of details of the post layout rendered text positions. The exact layout should not be regarded as\nstable and may change between versions.","domainHref":"tot/DOMSnapshot/","href":"#type-TextBoxSnapshot"}]},"domstorage":{"keyword":"DOMStorage","pageReferences":[{"domain":"DOMStorage","type":"0","description":"Query and modify DOM storage.","domainHref":"tot/DOMStorage/"}]},"domstorage.clear":{"keyword":"DOMStorage.clear","pageReferences":[{"domain":"DOMStorage","type":"4","domainHref":"tot/DOMStorage/","href":"#method-clear"}]},"domstorage.disable":{"keyword":"DOMStorage.disable","pageReferences":[{"domain":"DOMStorage","type":"4","description":"Disables storage tracking, prevents storage events from being sent to the client.","domainHref":"tot/DOMStorage/","href":"#method-disable"}]},"domstorage.enable":{"keyword":"DOMStorage.enable","pageReferences":[{"domain":"DOMStorage","type":"4","description":"Enables storage tracking, storage events will now be delivered to the client.","domainHref":"tot/DOMStorage/","href":"#method-enable"}]},"domstorage.getdomstorageitems":{"keyword":"DOMStorage.getDOMStorageItems","pageReferences":[{"domain":"DOMStorage","type":"4","domainHref":"tot/DOMStorage/","href":"#method-getDOMStorageItems"}]},"domstorage.removedomstorageitem":{"keyword":"DOMStorage.removeDOMStorageItem","pageReferences":[{"domain":"DOMStorage","type":"4","domainHref":"tot/DOMStorage/","href":"#method-removeDOMStorageItem"}]},"domstorage.setdomstorageitem":{"keyword":"DOMStorage.setDOMStorageItem","pageReferences":[{"domain":"DOMStorage","type":"4","domainHref":"tot/DOMStorage/","href":"#method-setDOMStorageItem"}]},"domstorage.domstorageitemadded":{"keyword":"DOMStorage.domStorageItemAdded","pageReferences":[{"domain":"DOMStorage","type":"1","domainHref":"tot/DOMStorage/","href":"#event-domStorageItemAdded"}]},"domstorage.domstorageitemremoved":{"keyword":"DOMStorage.domStorageItemRemoved","pageReferences":[{"domain":"DOMStorage","type":"1","domainHref":"tot/DOMStorage/","href":"#event-domStorageItemRemoved"}]},"domstorage.domstorageitemupdated":{"keyword":"DOMStorage.domStorageItemUpdated","pageReferences":[{"domain":"DOMStorage","type":"1","domainHref":"tot/DOMStorage/","href":"#event-domStorageItemUpdated"}]},"domstorage.domstorageitemscleared":{"keyword":"DOMStorage.domStorageItemsCleared","pageReferences":[{"domain":"DOMStorage","type":"1","domainHref":"tot/DOMStorage/","href":"#event-domStorageItemsCleared"}]},"domstorage.serializedstoragekey":{"keyword":"DOMStorage.SerializedStorageKey","pageReferences":[{"domain":"DOMStorage","type":"3","domainHref":"tot/DOMStorage/","href":"#type-SerializedStorageKey"}]},"domstorage.storageid":{"keyword":"DOMStorage.StorageId","pageReferences":[{"domain":"DOMStorage","type":"3","description":"DOM Storage identifier.","domainHref":"tot/DOMStorage/","href":"#type-StorageId"}]},"domstorage.item":{"keyword":"DOMStorage.Item","pageReferences":[{"domain":"DOMStorage","type":"3","description":"DOM Storage item.","domainHref":"tot/DOMStorage/","href":"#type-Item"}]},"deviceorientation":{"keyword":"DeviceOrientation","pageReferences":[{"domain":"DeviceOrientation","type":"0","domainHref":"tot/DeviceOrientation/"}]},"deviceorientation.cleardeviceorientationoverride":{"keyword":"DeviceOrientation.clearDeviceOrientationOverride","pageReferences":[{"domain":"DeviceOrientation","type":"4","description":"Clears the overridden Device Orientation.","domainHref":"tot/DeviceOrientation/","href":"#method-clearDeviceOrientationOverride"}]},"deviceorientation.setdeviceorientationoverride":{"keyword":"DeviceOrientation.setDeviceOrientationOverride","pageReferences":[{"domain":"DeviceOrientation","type":"4","description":"Overrides the Device Orientation.","domainHref":"tot/DeviceOrientation/","href":"#method-setDeviceOrientationOverride"}]},"emulation":{"keyword":"Emulation","pageReferences":[{"domain":"Emulation","type":"0","description":"This domain emulates different environments for the page.","domainHref":"tot/Emulation/"}]},"emulation.canemulate":{"keyword":"Emulation.canEmulate","pageReferences":[{"domain":"Emulation","type":"4","description":"Tells whether emulation is supported.","domainHref":"tot/Emulation/","href":"#method-canEmulate"}]},"emulation.cleardevicemetricsoverride":{"keyword":"Emulation.clearDeviceMetricsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears the overridden device metrics.","domainHref":"tot/Emulation/","href":"#method-clearDeviceMetricsOverride"}]},"emulation.cleargeolocationoverride":{"keyword":"Emulation.clearGeolocationOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears the overridden Geolocation Position and Error.","domainHref":"tot/Emulation/","href":"#method-clearGeolocationOverride"}]},"emulation.resetpagescalefactor":{"keyword":"Emulation.resetPageScaleFactor","pageReferences":[{"domain":"Emulation","type":"4","description":"Requests that page scale factor is reset to initial values.","domainHref":"tot/Emulation/","href":"#method-resetPageScaleFactor"}]},"emulation.setfocusemulationenabled":{"keyword":"Emulation.setFocusEmulationEnabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Enables or disables simulating a focused and active page.","domainHref":"tot/Emulation/","href":"#method-setFocusEmulationEnabled"}]},"emulation.setautodarkmodeoverride":{"keyword":"Emulation.setAutoDarkModeOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Automatically render all web contents using a dark theme.","domainHref":"tot/Emulation/","href":"#method-setAutoDarkModeOverride"}]},"emulation.setcputhrottlingrate":{"keyword":"Emulation.setCPUThrottlingRate","pageReferences":[{"domain":"Emulation","type":"4","description":"Enables CPU throttling to emulate slow CPUs.","domainHref":"tot/Emulation/","href":"#method-setCPUThrottlingRate"}]},"emulation.setdefaultbackgroundcoloroverride":{"keyword":"Emulation.setDefaultBackgroundColorOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Sets or clears an override of the default background color of the frame. This override is used\nif the content does not specify one.","domainHref":"tot/Emulation/","href":"#method-setDefaultBackgroundColorOverride"}]},"emulation.setsafeareainsetsoverride":{"keyword":"Emulation.setSafeAreaInsetsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the values for env(safe-area-inset-*) and env(safe-area-max-inset-*). Unset values will cause the\nrespective variables to be undefined, even if previously overridden.","domainHref":"tot/Emulation/","href":"#method-setSafeAreaInsetsOverride"}]},"emulation.setdevicemetricsoverride":{"keyword":"Emulation.setDeviceMetricsOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the values of device screen dimensions (window.screen.width, window.screen.height,\nwindow.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media\nquery results).","domainHref":"tot/Emulation/","href":"#method-setDeviceMetricsOverride"}]},"emulation.setdevicepostureoverride":{"keyword":"Emulation.setDevicePostureOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Start reporting the given posture value to the Device Posture API.\nThis override can also be set in setDeviceMetricsOverride().","domainHref":"tot/Emulation/","href":"#method-setDevicePostureOverride"}]},"emulation.cleardevicepostureoverride":{"keyword":"Emulation.clearDevicePostureOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears a device posture override set with either setDeviceMetricsOverride()\nor setDevicePostureOverride() and starts using posture information from the\nplatform again.\nDoes nothing if no override is s...","domainHref":"tot/Emulation/","href":"#method-clearDevicePostureOverride"}]},"emulation.setdisplayfeaturesoverride":{"keyword":"Emulation.setDisplayFeaturesOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Start using the given display features to pupulate the Viewport Segments API.\nThis override can also be set in setDeviceMetricsOverride().","domainHref":"tot/Emulation/","href":"#method-setDisplayFeaturesOverride"}]},"emulation.cleardisplayfeaturesoverride":{"keyword":"Emulation.clearDisplayFeaturesOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears the display features override set with either setDeviceMetricsOverride()\nor setDisplayFeaturesOverride() and starts using display features from the\nplatform again.\nDoes nothing if no override i...","domainHref":"tot/Emulation/","href":"#method-clearDisplayFeaturesOverride"}]},"emulation.setscrollbarshidden":{"keyword":"Emulation.setScrollbarsHidden","pageReferences":[{"domain":"Emulation","type":"4","domainHref":"tot/Emulation/","href":"#method-setScrollbarsHidden"}]},"emulation.setdocumentcookiedisabled":{"keyword":"Emulation.setDocumentCookieDisabled","pageReferences":[{"domain":"Emulation","type":"4","domainHref":"tot/Emulation/","href":"#method-setDocumentCookieDisabled"}]},"emulation.setemittoucheventsformouse":{"keyword":"Emulation.setEmitTouchEventsForMouse","pageReferences":[{"domain":"Emulation","type":"4","domainHref":"tot/Emulation/","href":"#method-setEmitTouchEventsForMouse"}]},"emulation.setemulatedmedia":{"keyword":"Emulation.setEmulatedMedia","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given media type or media feature for CSS media queries.","domainHref":"tot/Emulation/","href":"#method-setEmulatedMedia"}]},"emulation.setemulatedvisiondeficiency":{"keyword":"Emulation.setEmulatedVisionDeficiency","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given vision deficiency.","domainHref":"tot/Emulation/","href":"#method-setEmulatedVisionDeficiency"}]},"emulation.setemulatedostextscale":{"keyword":"Emulation.setEmulatedOSTextScale","pageReferences":[{"domain":"Emulation","type":"4","description":"Emulates the given OS text scale.","domainHref":"tot/Emulation/","href":"#method-setEmulatedOSTextScale"}]},"emulation.setgeolocationoverride":{"keyword":"Emulation.setGeolocationOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the Geolocation Position or Error. Omitting latitude, longitude or\naccuracy emulates position unavailable.","domainHref":"tot/Emulation/","href":"#method-setGeolocationOverride"}]},"emulation.getoverriddensensorinformation":{"keyword":"Emulation.getOverriddenSensorInformation","pageReferences":[{"domain":"Emulation","type":"4","domainHref":"tot/Emulation/","href":"#method-getOverriddenSensorInformation"}]},"emulation.setsensoroverrideenabled":{"keyword":"Emulation.setSensorOverrideEnabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides a platform sensor of a given type. If |enabled| is true, calls to\nSensor.start() will use a virtual sensor as backend rather than fetching\ndata from a real hardware sensor. Otherwise, existi...","domainHref":"tot/Emulation/","href":"#method-setSensorOverrideEnabled"}]},"emulation.setsensoroverridereadings":{"keyword":"Emulation.setSensorOverrideReadings","pageReferences":[{"domain":"Emulation","type":"4","description":"Updates the sensor readings reported by a sensor type previously overridden\nby setSensorOverrideEnabled.","domainHref":"tot/Emulation/","href":"#method-setSensorOverrideReadings"}]},"emulation.setpressuresourceoverrideenabled":{"keyword":"Emulation.setPressureSourceOverrideEnabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides a pressure source of a given type, as used by the Compute\nPressure API, so that updates to PressureObserver.observe() are provided\nvia setPressureStateOverride instead of being retrieved fro...","domainHref":"tot/Emulation/","href":"#method-setPressureSourceOverrideEnabled"}]},"emulation.setpressurestateoverride":{"keyword":"Emulation.setPressureStateOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"TODO: OBSOLETE: To remove when setPressureDataOverride is merged.\nProvides a given pressure state that will be processed and eventually be\ndelivered to PressureObserver users. |source| must have been ...","domainHref":"tot/Emulation/","href":"#method-setPressureStateOverride"}]},"emulation.setpressuredataoverride":{"keyword":"Emulation.setPressureDataOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Provides a given pressure data set that will be processed and eventually be\ndelivered to PressureObserver users. |source| must have been previously\noverridden by setPressureSourceOverrideEnabled.","domainHref":"tot/Emulation/","href":"#method-setPressureDataOverride"}]},"emulation.setidleoverride":{"keyword":"Emulation.setIdleOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides the Idle state.","domainHref":"tot/Emulation/","href":"#method-setIdleOverride"}]},"emulation.clearidleoverride":{"keyword":"Emulation.clearIdleOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Clears Idle state overrides.","domainHref":"tot/Emulation/","href":"#method-clearIdleOverride"}]},"emulation.setnavigatoroverrides":{"keyword":"Emulation.setNavigatorOverrides","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides value returned by the javascript navigator object.","domainHref":"tot/Emulation/","href":"#method-setNavigatorOverrides"}]},"emulation.setpagescalefactor":{"keyword":"Emulation.setPageScaleFactor","pageReferences":[{"domain":"Emulation","type":"4","description":"Sets a specified page scale factor.","domainHref":"tot/Emulation/","href":"#method-setPageScaleFactor"}]},"emulation.setscriptexecutiondisabled":{"keyword":"Emulation.setScriptExecutionDisabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Switches script execution in the page.","domainHref":"tot/Emulation/","href":"#method-setScriptExecutionDisabled"}]},"emulation.settouchemulationenabled":{"keyword":"Emulation.setTouchEmulationEnabled","pageReferences":[{"domain":"Emulation","type":"4","description":"Enables touch on platforms which do not support them.","domainHref":"tot/Emulation/","href":"#method-setTouchEmulationEnabled"}]},"emulation.setvirtualtimepolicy":{"keyword":"Emulation.setVirtualTimePolicy","pageReferences":[{"domain":"Emulation","type":"4","description":"Turns on virtual time for all frames (replacing real-time with a synthetic time source) and sets\nthe current virtual time policy. Note this supersedes any previous time budget.","domainHref":"tot/Emulation/","href":"#method-setVirtualTimePolicy"}]},"emulation.setlocaleoverride":{"keyword":"Emulation.setLocaleOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides default host system locale with the specified one.","domainHref":"tot/Emulation/","href":"#method-setLocaleOverride"}]},"emulation.settimezoneoverride":{"keyword":"Emulation.setTimezoneOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Overrides default host system timezone with the specified one.","domainHref":"tot/Emulation/","href":"#method-setTimezoneOverride"}]},"emulation.setvisiblesize":{"keyword":"Emulation.setVisibleSize","pageReferences":[{"domain":"Emulation","type":"4","description":"Resizes the frame/viewport of the page. Note that this does not affect the frame's container\n(e.g. browser window). Can be used to produce screenshots of the specified size. Not supported\non Android.","domainHref":"tot/Emulation/","href":"#method-setVisibleSize"}]},"emulation.setdisabledimagetypes":{"keyword":"Emulation.setDisabledImageTypes","pageReferences":[{"domain":"Emulation","type":"4","domainHref":"tot/Emulation/","href":"#method-setDisabledImageTypes"}]},"emulation.sethardwareconcurrencyoverride":{"keyword":"Emulation.setHardwareConcurrencyOverride","pageReferences":[{"domain":"Emulation","type":"4","domainHref":"tot/Emulation/","href":"#method-setHardwareConcurrencyOverride"}]},"emulation.setuseragentoverride":{"keyword":"Emulation.setUserAgentOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Allows overriding user agent with the given string.\n`userAgentMetadata` must be set for Client Hint headers to be sent.","domainHref":"tot/Emulation/","href":"#method-setUserAgentOverride"}]},"emulation.setautomationoverride":{"keyword":"Emulation.setAutomationOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Allows overriding the automation flag.","domainHref":"tot/Emulation/","href":"#method-setAutomationOverride"}]},"emulation.setsmallviewportheightdifferenceoverride":{"keyword":"Emulation.setSmallViewportHeightDifferenceOverride","pageReferences":[{"domain":"Emulation","type":"4","description":"Allows overriding the difference between the small and large viewport sizes, which determine the\nvalue of the `svh` and `lvh` unit, respectively. Only supported for top-level frames.","domainHref":"tot/Emulation/","href":"#method-setSmallViewportHeightDifferenceOverride"}]},"emulation.virtualtimebudgetexpired":{"keyword":"Emulation.virtualTimeBudgetExpired","pageReferences":[{"domain":"Emulation","type":"1","description":"Notification sent after the virtual time budget for the current VirtualTimePolicy has run out.","domainHref":"tot/Emulation/","href":"#event-virtualTimeBudgetExpired"}]},"emulation.safeareainsets":{"keyword":"Emulation.SafeAreaInsets","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-SafeAreaInsets"}]},"emulation.screenorientation":{"keyword":"Emulation.ScreenOrientation","pageReferences":[{"domain":"Emulation","type":"3","description":"Screen orientation.","domainHref":"tot/Emulation/","href":"#type-ScreenOrientation"}]},"emulation.displayfeature":{"keyword":"Emulation.DisplayFeature","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-DisplayFeature"}]},"emulation.deviceposture":{"keyword":"Emulation.DevicePosture","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-DevicePosture"}]},"emulation.mediafeature":{"keyword":"Emulation.MediaFeature","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-MediaFeature"}]},"emulation.virtualtimepolicy":{"keyword":"Emulation.VirtualTimePolicy","pageReferences":[{"domain":"Emulation","type":"3","description":"advance: If the scheduler runs out of immediate work, the virtual time base may fast forward to\nallow the next delayed task (if any) to run; pause: The virtual time base may not advance;\npauseIfNetwor...","domainHref":"tot/Emulation/","href":"#type-VirtualTimePolicy"}]},"emulation.useragentbrandversion":{"keyword":"Emulation.UserAgentBrandVersion","pageReferences":[{"domain":"Emulation","type":"3","description":"Used to specify User Agent Client Hints to emulate. See https://wicg.github.io/ua-client-hints","domainHref":"tot/Emulation/","href":"#type-UserAgentBrandVersion"}]},"emulation.useragentmetadata":{"keyword":"Emulation.UserAgentMetadata","pageReferences":[{"domain":"Emulation","type":"3","description":"Used to specify User Agent Client Hints to emulate. See https://wicg.github.io/ua-client-hints\nMissing optional values will be filled in by the target with what it would normally use.","domainHref":"tot/Emulation/","href":"#type-UserAgentMetadata"}]},"emulation.sensortype":{"keyword":"Emulation.SensorType","pageReferences":[{"domain":"Emulation","type":"3","description":"Used to specify sensor types to emulate.\nSee https://w3c.github.io/sensors/#automation for more information.","domainHref":"tot/Emulation/","href":"#type-SensorType"}]},"emulation.sensormetadata":{"keyword":"Emulation.SensorMetadata","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-SensorMetadata"}]},"emulation.sensorreadingsingle":{"keyword":"Emulation.SensorReadingSingle","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-SensorReadingSingle"}]},"emulation.sensorreadingxyz":{"keyword":"Emulation.SensorReadingXYZ","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-SensorReadingXYZ"}]},"emulation.sensorreadingquaternion":{"keyword":"Emulation.SensorReadingQuaternion","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-SensorReadingQuaternion"}]},"emulation.sensorreading":{"keyword":"Emulation.SensorReading","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-SensorReading"}]},"emulation.pressuresource":{"keyword":"Emulation.PressureSource","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-PressureSource"}]},"emulation.pressurestate":{"keyword":"Emulation.PressureState","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-PressureState"}]},"emulation.pressuremetadata":{"keyword":"Emulation.PressureMetadata","pageReferences":[{"domain":"Emulation","type":"3","domainHref":"tot/Emulation/","href":"#type-PressureMetadata"}]},"emulation.disabledimagetype":{"keyword":"Emulation.DisabledImageType","pageReferences":[{"domain":"Emulation","type":"3","description":"Enum of image types that can be disabled.","domainHref":"tot/Emulation/","href":"#type-DisabledImageType"}]},"headlessexperimental":{"keyword":"HeadlessExperimental","pageReferences":[{"domain":"HeadlessExperimental","type":"0","description":"This domain provides experimental commands only supported in headless mode.","domainHref":"tot/HeadlessExperimental/"}]},"headlessexperimental.beginframe":{"keyword":"HeadlessExperimental.beginFrame","pageReferences":[{"domain":"HeadlessExperimental","type":"4","description":"Sends a BeginFrame to the target and returns when the frame was completed. Optionally captures a\nscreenshot from the resulting frame. Requires that the target was created with enabled\nBeginFrameContro...","domainHref":"tot/HeadlessExperimental/","href":"#method-beginFrame"}]},"headlessexperimental.disable":{"keyword":"HeadlessExperimental.disable","pageReferences":[{"domain":"HeadlessExperimental","type":"4","description":"Disables headless events for the target.","domainHref":"tot/HeadlessExperimental/","href":"#method-disable"}]},"headlessexperimental.enable":{"keyword":"HeadlessExperimental.enable","pageReferences":[{"domain":"HeadlessExperimental","type":"4","description":"Enables headless events for the target.","domainHref":"tot/HeadlessExperimental/","href":"#method-enable"}]},"headlessexperimental.screenshotparams":{"keyword":"HeadlessExperimental.ScreenshotParams","pageReferences":[{"domain":"HeadlessExperimental","type":"3","description":"Encoding options for a screenshot.","domainHref":"tot/HeadlessExperimental/","href":"#type-ScreenshotParams"}]},"io":{"keyword":"IO","pageReferences":[{"domain":"IO","type":"0","description":"Input/Output operations for streams produced by DevTools.","domainHref":"tot/IO/"}]},"io.close":{"keyword":"IO.close","pageReferences":[{"domain":"IO","type":"4","description":"Close the stream, discard any temporary backing storage.","domainHref":"tot/IO/","href":"#method-close"}]},"io.read":{"keyword":"IO.read","pageReferences":[{"domain":"IO","type":"4","description":"Read a chunk of the stream","domainHref":"tot/IO/","href":"#method-read"}]},"io.resolveblob":{"keyword":"IO.resolveBlob","pageReferences":[{"domain":"IO","type":"4","description":"Return UUID of Blob object specified by a remote object id.","domainHref":"tot/IO/","href":"#method-resolveBlob"}]},"io.streamhandle":{"keyword":"IO.StreamHandle","pageReferences":[{"domain":"IO","type":"3","description":"This is either obtained from another method or specified as `blob:` where\n`` is an UUID of a Blob.","domainHref":"tot/IO/","href":"#type-StreamHandle"}]},"filesystem":{"keyword":"FileSystem","pageReferences":[{"domain":"FileSystem","type":"0","domainHref":"tot/FileSystem/"}]},"filesystem.getdirectory":{"keyword":"FileSystem.getDirectory","pageReferences":[{"domain":"FileSystem","type":"4","domainHref":"tot/FileSystem/","href":"#method-getDirectory"}]},"filesystem.file":{"keyword":"FileSystem.File","pageReferences":[{"domain":"FileSystem","type":"3","domainHref":"tot/FileSystem/","href":"#type-File"}]},"filesystem.directory":{"keyword":"FileSystem.Directory","pageReferences":[{"domain":"FileSystem","type":"3","domainHref":"tot/FileSystem/","href":"#type-Directory"}]},"filesystem.bucketfilesystemlocator":{"keyword":"FileSystem.BucketFileSystemLocator","pageReferences":[{"domain":"FileSystem","type":"3","domainHref":"tot/FileSystem/","href":"#type-BucketFileSystemLocator"}]},"indexeddb":{"keyword":"IndexedDB","pageReferences":[{"domain":"IndexedDB","type":"0","domainHref":"tot/IndexedDB/"}]},"indexeddb.clearobjectstore":{"keyword":"IndexedDB.clearObjectStore","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Clears all entries from an object store.","domainHref":"tot/IndexedDB/","href":"#method-clearObjectStore"}]},"indexeddb.deletedatabase":{"keyword":"IndexedDB.deleteDatabase","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Deletes a database.","domainHref":"tot/IndexedDB/","href":"#method-deleteDatabase"}]},"indexeddb.deleteobjectstoreentries":{"keyword":"IndexedDB.deleteObjectStoreEntries","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Delete a range of entries from an object store","domainHref":"tot/IndexedDB/","href":"#method-deleteObjectStoreEntries"}]},"indexeddb.disable":{"keyword":"IndexedDB.disable","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Disables events from backend.","domainHref":"tot/IndexedDB/","href":"#method-disable"}]},"indexeddb.enable":{"keyword":"IndexedDB.enable","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Enables events from backend.","domainHref":"tot/IndexedDB/","href":"#method-enable"}]},"indexeddb.requestdata":{"keyword":"IndexedDB.requestData","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Requests data from object store or index.","domainHref":"tot/IndexedDB/","href":"#method-requestData"}]},"indexeddb.getmetadata":{"keyword":"IndexedDB.getMetadata","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Gets metadata of an object store.","domainHref":"tot/IndexedDB/","href":"#method-getMetadata"}]},"indexeddb.requestdatabase":{"keyword":"IndexedDB.requestDatabase","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Requests database with given name in given frame.","domainHref":"tot/IndexedDB/","href":"#method-requestDatabase"}]},"indexeddb.requestdatabasenames":{"keyword":"IndexedDB.requestDatabaseNames","pageReferences":[{"domain":"IndexedDB","type":"4","description":"Requests database names for given security origin.","domainHref":"tot/IndexedDB/","href":"#method-requestDatabaseNames"}]},"indexeddb.databasewithobjectstores":{"keyword":"IndexedDB.DatabaseWithObjectStores","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Database with an array of object stores.","domainHref":"tot/IndexedDB/","href":"#type-DatabaseWithObjectStores"}]},"indexeddb.objectstore":{"keyword":"IndexedDB.ObjectStore","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Object store.","domainHref":"tot/IndexedDB/","href":"#type-ObjectStore"}]},"indexeddb.objectstoreindex":{"keyword":"IndexedDB.ObjectStoreIndex","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Object store index.","domainHref":"tot/IndexedDB/","href":"#type-ObjectStoreIndex"}]},"indexeddb.key":{"keyword":"IndexedDB.Key","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Key.","domainHref":"tot/IndexedDB/","href":"#type-Key"}]},"indexeddb.keyrange":{"keyword":"IndexedDB.KeyRange","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Key range.","domainHref":"tot/IndexedDB/","href":"#type-KeyRange"}]},"indexeddb.dataentry":{"keyword":"IndexedDB.DataEntry","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Data entry.","domainHref":"tot/IndexedDB/","href":"#type-DataEntry"}]},"indexeddb.keypath":{"keyword":"IndexedDB.KeyPath","pageReferences":[{"domain":"IndexedDB","type":"3","description":"Key path.","domainHref":"tot/IndexedDB/","href":"#type-KeyPath"}]},"input":{"keyword":"Input","pageReferences":[{"domain":"Input","type":"0","domainHref":"tot/Input/"}]},"input.dispatchdragevent":{"keyword":"Input.dispatchDragEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a drag event into the page.","domainHref":"tot/Input/","href":"#method-dispatchDragEvent"}]},"input.dispatchkeyevent":{"keyword":"Input.dispatchKeyEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a key event to the page.","domainHref":"tot/Input/","href":"#method-dispatchKeyEvent"}]},"input.inserttext":{"keyword":"Input.insertText","pageReferences":[{"domain":"Input","type":"4","description":"This method emulates inserting text that doesn't come from a key press,\nfor example an emoji keyboard or an IME.","domainHref":"tot/Input/","href":"#method-insertText"}]},"input.imesetcomposition":{"keyword":"Input.imeSetComposition","pageReferences":[{"domain":"Input","type":"4","description":"This method sets the current candidate text for IME.\nUse imeCommitComposition to commit the final text.\nUse imeSetComposition with empty string as text to cancel composition.","domainHref":"tot/Input/","href":"#method-imeSetComposition"}]},"input.dispatchmouseevent":{"keyword":"Input.dispatchMouseEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a mouse event to the page.","domainHref":"tot/Input/","href":"#method-dispatchMouseEvent"}]},"input.dispatchtouchevent":{"keyword":"Input.dispatchTouchEvent","pageReferences":[{"domain":"Input","type":"4","description":"Dispatches a touch event to the page.","domainHref":"tot/Input/","href":"#method-dispatchTouchEvent"}]},"input.canceldragging":{"keyword":"Input.cancelDragging","pageReferences":[{"domain":"Input","type":"4","description":"Cancels any active dragging in the page.","domainHref":"tot/Input/","href":"#method-cancelDragging"}]},"input.emulatetouchfrommouseevent":{"keyword":"Input.emulateTouchFromMouseEvent","pageReferences":[{"domain":"Input","type":"4","description":"Emulates touch event from the mouse event parameters.","domainHref":"tot/Input/","href":"#method-emulateTouchFromMouseEvent"}]},"input.setignoreinputevents":{"keyword":"Input.setIgnoreInputEvents","pageReferences":[{"domain":"Input","type":"4","description":"Ignores input events (useful while auditing page).","domainHref":"tot/Input/","href":"#method-setIgnoreInputEvents"}]},"input.setinterceptdrags":{"keyword":"Input.setInterceptDrags","pageReferences":[{"domain":"Input","type":"4","description":"Prevents default drag and drop behavior and instead emits `Input.dragIntercepted` events.\nDrag and drop behavior can be directly controlled via `Input.dispatchDragEvent`.","domainHref":"tot/Input/","href":"#method-setInterceptDrags"}]},"input.synthesizepinchgesture":{"keyword":"Input.synthesizePinchGesture","pageReferences":[{"domain":"Input","type":"4","description":"Synthesizes a pinch gesture over a time period by issuing appropriate touch events.","domainHref":"tot/Input/","href":"#method-synthesizePinchGesture"}]},"input.synthesizescrollgesture":{"keyword":"Input.synthesizeScrollGesture","pageReferences":[{"domain":"Input","type":"4","description":"Synthesizes a scroll gesture over a time period by issuing appropriate touch events.","domainHref":"tot/Input/","href":"#method-synthesizeScrollGesture"}]},"input.synthesizetapgesture":{"keyword":"Input.synthesizeTapGesture","pageReferences":[{"domain":"Input","type":"4","description":"Synthesizes a tap gesture over a time period by issuing appropriate touch events.","domainHref":"tot/Input/","href":"#method-synthesizeTapGesture"}]},"input.dragintercepted":{"keyword":"Input.dragIntercepted","pageReferences":[{"domain":"Input","type":"1","description":"Emitted only when `Input.setInterceptDrags` is enabled. Use this data with `Input.dispatchDragEvent` to\nrestore normal drag and drop behavior.","domainHref":"tot/Input/","href":"#event-dragIntercepted"}]},"input.touchpoint":{"keyword":"Input.TouchPoint","pageReferences":[{"domain":"Input","type":"3","domainHref":"tot/Input/","href":"#type-TouchPoint"}]},"input.gesturesourcetype":{"keyword":"Input.GestureSourceType","pageReferences":[{"domain":"Input","type":"3","domainHref":"tot/Input/","href":"#type-GestureSourceType"}]},"input.mousebutton":{"keyword":"Input.MouseButton","pageReferences":[{"domain":"Input","type":"3","domainHref":"tot/Input/","href":"#type-MouseButton"}]},"input.timesinceepoch":{"keyword":"Input.TimeSinceEpoch","pageReferences":[{"domain":"Input","type":"3","description":"UTC time in seconds, counted from January 1, 1970.","domainHref":"tot/Input/","href":"#type-TimeSinceEpoch"}]},"input.dragdataitem":{"keyword":"Input.DragDataItem","pageReferences":[{"domain":"Input","type":"3","domainHref":"tot/Input/","href":"#type-DragDataItem"}]},"input.dragdata":{"keyword":"Input.DragData","pageReferences":[{"domain":"Input","type":"3","domainHref":"tot/Input/","href":"#type-DragData"}]},"inspector":{"keyword":"Inspector","pageReferences":[{"domain":"Inspector","type":"0","domainHref":"tot/Inspector/"}]},"inspector.disable":{"keyword":"Inspector.disable","pageReferences":[{"domain":"Inspector","type":"4","description":"Disables inspector domain notifications.","domainHref":"tot/Inspector/","href":"#method-disable"}]},"inspector.enable":{"keyword":"Inspector.enable","pageReferences":[{"domain":"Inspector","type":"4","description":"Enables inspector domain notifications.","domainHref":"tot/Inspector/","href":"#method-enable"}]},"inspector.detached":{"keyword":"Inspector.detached","pageReferences":[{"domain":"Inspector","type":"1","description":"Fired when remote debugging connection is about to be terminated. Contains detach reason.","domainHref":"tot/Inspector/","href":"#event-detached"}]},"inspector.targetcrashed":{"keyword":"Inspector.targetCrashed","pageReferences":[{"domain":"Inspector","type":"1","description":"Fired when debugging target has crashed","domainHref":"tot/Inspector/","href":"#event-targetCrashed"}]},"inspector.targetreloadedaftercrash":{"keyword":"Inspector.targetReloadedAfterCrash","pageReferences":[{"domain":"Inspector","type":"1","description":"Fired when debugging target has reloaded after crash","domainHref":"tot/Inspector/","href":"#event-targetReloadedAfterCrash"}]},"layertree":{"keyword":"LayerTree","pageReferences":[{"domain":"LayerTree","type":"0","domainHref":"tot/LayerTree/"}]},"layertree.compositingreasons":{"keyword":"LayerTree.compositingReasons","pageReferences":[{"domain":"LayerTree","type":"4","description":"Provides the reasons why the given layer was composited.","domainHref":"tot/LayerTree/","href":"#method-compositingReasons"}]},"layertree.disable":{"keyword":"LayerTree.disable","pageReferences":[{"domain":"LayerTree","type":"4","description":"Disables compositing tree inspection.","domainHref":"tot/LayerTree/","href":"#method-disable"}]},"layertree.enable":{"keyword":"LayerTree.enable","pageReferences":[{"domain":"LayerTree","type":"4","description":"Enables compositing tree inspection.","domainHref":"tot/LayerTree/","href":"#method-enable"}]},"layertree.loadsnapshot":{"keyword":"LayerTree.loadSnapshot","pageReferences":[{"domain":"LayerTree","type":"4","description":"Returns the snapshot identifier.","domainHref":"tot/LayerTree/","href":"#method-loadSnapshot"}]},"layertree.makesnapshot":{"keyword":"LayerTree.makeSnapshot","pageReferences":[{"domain":"LayerTree","type":"4","description":"Returns the layer snapshot identifier.","domainHref":"tot/LayerTree/","href":"#method-makeSnapshot"}]},"layertree.profilesnapshot":{"keyword":"LayerTree.profileSnapshot","pageReferences":[{"domain":"LayerTree","type":"4","domainHref":"tot/LayerTree/","href":"#method-profileSnapshot"}]},"layertree.releasesnapshot":{"keyword":"LayerTree.releaseSnapshot","pageReferences":[{"domain":"LayerTree","type":"4","description":"Releases layer snapshot captured by the back-end.","domainHref":"tot/LayerTree/","href":"#method-releaseSnapshot"}]},"layertree.replaysnapshot":{"keyword":"LayerTree.replaySnapshot","pageReferences":[{"domain":"LayerTree","type":"4","description":"Replays the layer snapshot and returns the resulting bitmap.","domainHref":"tot/LayerTree/","href":"#method-replaySnapshot"}]},"layertree.snapshotcommandlog":{"keyword":"LayerTree.snapshotCommandLog","pageReferences":[{"domain":"LayerTree","type":"4","description":"Replays the layer snapshot and returns canvas log.","domainHref":"tot/LayerTree/","href":"#method-snapshotCommandLog"}]},"layertree.layerpainted":{"keyword":"LayerTree.layerPainted","pageReferences":[{"domain":"LayerTree","type":"1","domainHref":"tot/LayerTree/","href":"#event-layerPainted"}]},"layertree.layertreedidchange":{"keyword":"LayerTree.layerTreeDidChange","pageReferences":[{"domain":"LayerTree","type":"1","domainHref":"tot/LayerTree/","href":"#event-layerTreeDidChange"}]},"layertree.layerid":{"keyword":"LayerTree.LayerId","pageReferences":[{"domain":"LayerTree","type":"3","description":"Unique Layer identifier.","domainHref":"tot/LayerTree/","href":"#type-LayerId"}]},"layertree.snapshotid":{"keyword":"LayerTree.SnapshotId","pageReferences":[{"domain":"LayerTree","type":"3","description":"Unique snapshot identifier.","domainHref":"tot/LayerTree/","href":"#type-SnapshotId"}]},"layertree.scrollrect":{"keyword":"LayerTree.ScrollRect","pageReferences":[{"domain":"LayerTree","type":"3","description":"Rectangle where scrolling happens on the main thread.","domainHref":"tot/LayerTree/","href":"#type-ScrollRect"}]},"layertree.stickypositionconstraint":{"keyword":"LayerTree.StickyPositionConstraint","pageReferences":[{"domain":"LayerTree","type":"3","description":"Sticky position constraints.","domainHref":"tot/LayerTree/","href":"#type-StickyPositionConstraint"}]},"layertree.picturetile":{"keyword":"LayerTree.PictureTile","pageReferences":[{"domain":"LayerTree","type":"3","description":"Serialized fragment of layer picture along with its offset within the layer.","domainHref":"tot/LayerTree/","href":"#type-PictureTile"}]},"layertree.layer":{"keyword":"LayerTree.Layer","pageReferences":[{"domain":"LayerTree","type":"3","description":"Information about a compositing layer.","domainHref":"tot/LayerTree/","href":"#type-Layer"}]},"layertree.paintprofile":{"keyword":"LayerTree.PaintProfile","pageReferences":[{"domain":"LayerTree","type":"3","description":"Array of timings, one per paint step.","domainHref":"tot/LayerTree/","href":"#type-PaintProfile"}]},"log":{"keyword":"Log","pageReferences":[{"domain":"Log","type":"0","description":"Provides access to log entries.","domainHref":"tot/Log/"}]},"log.clear":{"keyword":"Log.clear","pageReferences":[{"domain":"Log","type":"4","description":"Clears the log.","domainHref":"tot/Log/","href":"#method-clear"}]},"log.disable":{"keyword":"Log.disable","pageReferences":[{"domain":"Log","type":"4","description":"Disables log domain, prevents further log entries from being reported to the client.","domainHref":"tot/Log/","href":"#method-disable"}]},"log.enable":{"keyword":"Log.enable","pageReferences":[{"domain":"Log","type":"4","description":"Enables log domain, sends the entries collected so far to the client by means of the\n`entryAdded` notification.","domainHref":"tot/Log/","href":"#method-enable"}]},"log.startviolationsreport":{"keyword":"Log.startViolationsReport","pageReferences":[{"domain":"Log","type":"4","description":"start violation reporting.","domainHref":"tot/Log/","href":"#method-startViolationsReport"}]},"log.stopviolationsreport":{"keyword":"Log.stopViolationsReport","pageReferences":[{"domain":"Log","type":"4","description":"Stop violation reporting.","domainHref":"tot/Log/","href":"#method-stopViolationsReport"}]},"log.entryadded":{"keyword":"Log.entryAdded","pageReferences":[{"domain":"Log","type":"1","description":"Issued when new message was logged.","domainHref":"tot/Log/","href":"#event-entryAdded"}]},"log.logentry":{"keyword":"Log.LogEntry","pageReferences":[{"domain":"Log","type":"3","description":"Log entry.","domainHref":"tot/Log/","href":"#type-LogEntry"}]},"log.violationsetting":{"keyword":"Log.ViolationSetting","pageReferences":[{"domain":"Log","type":"3","description":"Violation configuration setting.","domainHref":"tot/Log/","href":"#type-ViolationSetting"}]},"memory":{"keyword":"Memory","pageReferences":[{"domain":"Memory","type":"0","domainHref":"tot/Memory/"}]},"memory.getdomcounters":{"keyword":"Memory.getDOMCounters","pageReferences":[{"domain":"Memory","type":"4","description":"Retruns current DOM object counters.","domainHref":"tot/Memory/","href":"#method-getDOMCounters"}]},"memory.getdomcountersforleakdetection":{"keyword":"Memory.getDOMCountersForLeakDetection","pageReferences":[{"domain":"Memory","type":"4","description":"Retruns DOM object counters after preparing renderer for leak detection.","domainHref":"tot/Memory/","href":"#method-getDOMCountersForLeakDetection"}]},"memory.prepareforleakdetection":{"keyword":"Memory.prepareForLeakDetection","pageReferences":[{"domain":"Memory","type":"4","description":"Prepares for leak detection by terminating workers, stopping spellcheckers,\ndropping non-essential internal caches, running garbage collections, etc.","domainHref":"tot/Memory/","href":"#method-prepareForLeakDetection"}]},"memory.forciblypurgejavascriptmemory":{"keyword":"Memory.forciblyPurgeJavaScriptMemory","pageReferences":[{"domain":"Memory","type":"4","description":"Simulate OomIntervention by purging V8 memory.","domainHref":"tot/Memory/","href":"#method-forciblyPurgeJavaScriptMemory"}]},"memory.setpressurenotificationssuppressed":{"keyword":"Memory.setPressureNotificationsSuppressed","pageReferences":[{"domain":"Memory","type":"4","description":"Enable/disable suppressing memory pressure notifications in all processes.","domainHref":"tot/Memory/","href":"#method-setPressureNotificationsSuppressed"}]},"memory.simulatepressurenotification":{"keyword":"Memory.simulatePressureNotification","pageReferences":[{"domain":"Memory","type":"4","description":"Simulate a memory pressure notification in all processes.","domainHref":"tot/Memory/","href":"#method-simulatePressureNotification"}]},"memory.startsampling":{"keyword":"Memory.startSampling","pageReferences":[{"domain":"Memory","type":"4","description":"Start collecting native memory profile.","domainHref":"tot/Memory/","href":"#method-startSampling"}]},"memory.stopsampling":{"keyword":"Memory.stopSampling","pageReferences":[{"domain":"Memory","type":"4","description":"Stop collecting native memory profile.","domainHref":"tot/Memory/","href":"#method-stopSampling"}]},"memory.getalltimesamplingprofile":{"keyword":"Memory.getAllTimeSamplingProfile","pageReferences":[{"domain":"Memory","type":"4","description":"Retrieve native memory allocations profile\ncollected since renderer process startup.","domainHref":"tot/Memory/","href":"#method-getAllTimeSamplingProfile"}]},"memory.getbrowsersamplingprofile":{"keyword":"Memory.getBrowserSamplingProfile","pageReferences":[{"domain":"Memory","type":"4","description":"Retrieve native memory allocations profile\ncollected since browser process startup.","domainHref":"tot/Memory/","href":"#method-getBrowserSamplingProfile"}]},"memory.getsamplingprofile":{"keyword":"Memory.getSamplingProfile","pageReferences":[{"domain":"Memory","type":"4","description":"Retrieve native memory allocations profile collected since last\n`startSampling` call.","domainHref":"tot/Memory/","href":"#method-getSamplingProfile"}]},"memory.pressurelevel":{"keyword":"Memory.PressureLevel","pageReferences":[{"domain":"Memory","type":"3","description":"Memory pressure level.","domainHref":"tot/Memory/","href":"#type-PressureLevel"}]},"memory.samplingprofilenode":{"keyword":"Memory.SamplingProfileNode","pageReferences":[{"domain":"Memory","type":"3","description":"Heap profile sample.","domainHref":"tot/Memory/","href":"#type-SamplingProfileNode"}]},"memory.samplingprofile":{"keyword":"Memory.SamplingProfile","pageReferences":[{"domain":"Memory","type":"3","description":"Array of heap profile samples.","domainHref":"tot/Memory/","href":"#type-SamplingProfile"}]},"memory.module":{"keyword":"Memory.Module","pageReferences":[{"domain":"Memory","type":"3","description":"Executable module information","domainHref":"tot/Memory/","href":"#type-Module"}]},"memory.domcounter":{"keyword":"Memory.DOMCounter","pageReferences":[{"domain":"Memory","type":"3","description":"DOM object counter data.","domainHref":"tot/Memory/","href":"#type-DOMCounter"}]},"network":{"keyword":"Network","pageReferences":[{"domain":"Network","type":"0","description":"Network domain allows tracking network activities of the page. It exposes information about http,\nfile, data and other requests and responses, their headers, bodies, timing, etc.","domainHref":"tot/Network/"}]},"network.setacceptedencodings":{"keyword":"Network.setAcceptedEncodings","pageReferences":[{"domain":"Network","type":"4","description":"Sets a list of content encodings that will be accepted. Empty list means no encoding is accepted.","domainHref":"tot/Network/","href":"#method-setAcceptedEncodings"}]},"network.clearacceptedencodingsoverride":{"keyword":"Network.clearAcceptedEncodingsOverride","pageReferences":[{"domain":"Network","type":"4","description":"Clears accepted encodings set by setAcceptedEncodings","domainHref":"tot/Network/","href":"#method-clearAcceptedEncodingsOverride"}]},"network.canclearbrowsercache":{"keyword":"Network.canClearBrowserCache","pageReferences":[{"domain":"Network","type":"4","description":"Tells whether clearing browser cache is supported.","domainHref":"tot/Network/","href":"#method-canClearBrowserCache"}]},"network.canclearbrowsercookies":{"keyword":"Network.canClearBrowserCookies","pageReferences":[{"domain":"Network","type":"4","description":"Tells whether clearing browser cookies is supported.","domainHref":"tot/Network/","href":"#method-canClearBrowserCookies"}]},"network.canemulatenetworkconditions":{"keyword":"Network.canEmulateNetworkConditions","pageReferences":[{"domain":"Network","type":"4","description":"Tells whether emulation of network conditions is supported.","domainHref":"tot/Network/","href":"#method-canEmulateNetworkConditions"}]},"network.clearbrowsercache":{"keyword":"Network.clearBrowserCache","pageReferences":[{"domain":"Network","type":"4","description":"Clears browser cache.","domainHref":"tot/Network/","href":"#method-clearBrowserCache"}]},"network.clearbrowsercookies":{"keyword":"Network.clearBrowserCookies","pageReferences":[{"domain":"Network","type":"4","description":"Clears browser cookies.","domainHref":"tot/Network/","href":"#method-clearBrowserCookies"}]},"network.continueinterceptedrequest":{"keyword":"Network.continueInterceptedRequest","pageReferences":[{"domain":"Network","type":"4","description":"Response to Network.requestIntercepted which either modifies the request to continue with any\nmodifications, or blocks it, or completes it with the provided response bytes. If a network\nfetch occurs a...","domainHref":"tot/Network/","href":"#method-continueInterceptedRequest"}]},"network.deletecookies":{"keyword":"Network.deleteCookies","pageReferences":[{"domain":"Network","type":"4","description":"Deletes browser cookies with matching name and url or domain/path/partitionKey pair.","domainHref":"tot/Network/","href":"#method-deleteCookies"}]},"network.disable":{"keyword":"Network.disable","pageReferences":[{"domain":"Network","type":"4","description":"Disables network tracking, prevents network events from being sent to the client.","domainHref":"tot/Network/","href":"#method-disable"}]},"network.emulatenetworkconditions":{"keyword":"Network.emulateNetworkConditions","pageReferences":[{"domain":"Network","type":"4","description":"Activates emulation of network conditions.","domainHref":"tot/Network/","href":"#method-emulateNetworkConditions"}]},"network.enable":{"keyword":"Network.enable","pageReferences":[{"domain":"Network","type":"4","description":"Enables network tracking, network events will now be delivered to the client.","domainHref":"tot/Network/","href":"#method-enable"}]},"network.getallcookies":{"keyword":"Network.getAllCookies","pageReferences":[{"domain":"Network","type":"4","description":"Returns all browser cookies. Depending on the backend support, will return detailed cookie\ninformation in the `cookies` field.\nDeprecated. Use Storage.getCookies instead.","domainHref":"tot/Network/","href":"#method-getAllCookies"}]},"network.getcertificate":{"keyword":"Network.getCertificate","pageReferences":[{"domain":"Network","type":"4","description":"Returns the DER-encoded certificate.","domainHref":"tot/Network/","href":"#method-getCertificate"}]},"network.getcookies":{"keyword":"Network.getCookies","pageReferences":[{"domain":"Network","type":"4","description":"Returns all browser cookies for the current URL. Depending on the backend support, will return\ndetailed cookie information in the `cookies` field.","domainHref":"tot/Network/","href":"#method-getCookies"}]},"network.getresponsebody":{"keyword":"Network.getResponseBody","pageReferences":[{"domain":"Network","type":"4","description":"Returns content served for the given request.","domainHref":"tot/Network/","href":"#method-getResponseBody"}]},"network.getrequestpostdata":{"keyword":"Network.getRequestPostData","pageReferences":[{"domain":"Network","type":"4","description":"Returns post data sent with the request. Returns an error when no data was sent with the request.","domainHref":"tot/Network/","href":"#method-getRequestPostData"}]},"network.getresponsebodyforinterception":{"keyword":"Network.getResponseBodyForInterception","pageReferences":[{"domain":"Network","type":"4","description":"Returns content served for the given currently intercepted request.","domainHref":"tot/Network/","href":"#method-getResponseBodyForInterception"}]},"network.takeresponsebodyforinterceptionasstream":{"keyword":"Network.takeResponseBodyForInterceptionAsStream","pageReferences":[{"domain":"Network","type":"4","description":"Returns a handle to the stream representing the response body. Note that after this command,\nthe intercepted request can't be continued as is -- you either need to cancel it or to provide\nthe response...","domainHref":"tot/Network/","href":"#method-takeResponseBodyForInterceptionAsStream"}]},"network.replayxhr":{"keyword":"Network.replayXHR","pageReferences":[{"domain":"Network","type":"4","description":"This method sends a new XMLHttpRequest which is identical to the original one. The following\nparameters should be identical: method, url, async, request body, extra headers, withCredentials\nattribute,...","domainHref":"tot/Network/","href":"#method-replayXHR"}]},"network.searchinresponsebody":{"keyword":"Network.searchInResponseBody","pageReferences":[{"domain":"Network","type":"4","description":"Searches for given string in response content.","domainHref":"tot/Network/","href":"#method-searchInResponseBody"}]},"network.setblockedurls":{"keyword":"Network.setBlockedURLs","pageReferences":[{"domain":"Network","type":"4","description":"Blocks URLs from loading.","domainHref":"tot/Network/","href":"#method-setBlockedURLs"}]},"network.setbypassserviceworker":{"keyword":"Network.setBypassServiceWorker","pageReferences":[{"domain":"Network","type":"4","description":"Toggles ignoring of service worker for each request.","domainHref":"tot/Network/","href":"#method-setBypassServiceWorker"}]},"network.setcachedisabled":{"keyword":"Network.setCacheDisabled","pageReferences":[{"domain":"Network","type":"4","description":"Toggles ignoring cache for each request. If `true`, cache will not be used.","domainHref":"tot/Network/","href":"#method-setCacheDisabled"}]},"network.setcookie":{"keyword":"Network.setCookie","pageReferences":[{"domain":"Network","type":"4","description":"Sets a cookie with the given cookie data; may overwrite equivalent cookies if they exist.","domainHref":"tot/Network/","href":"#method-setCookie"}]},"network.setcookies":{"keyword":"Network.setCookies","pageReferences":[{"domain":"Network","type":"4","description":"Sets given cookies.","domainHref":"tot/Network/","href":"#method-setCookies"}]},"network.setextrahttpheaders":{"keyword":"Network.setExtraHTTPHeaders","pageReferences":[{"domain":"Network","type":"4","description":"Specifies whether to always send extra HTTP headers with the requests from this page.","domainHref":"tot/Network/","href":"#method-setExtraHTTPHeaders"}]},"network.setattachdebugstack":{"keyword":"Network.setAttachDebugStack","pageReferences":[{"domain":"Network","type":"4","description":"Specifies whether to attach a page script stack id in requests","domainHref":"tot/Network/","href":"#method-setAttachDebugStack"}]},"network.setrequestinterception":{"keyword":"Network.setRequestInterception","pageReferences":[{"domain":"Network","type":"4","description":"Sets the requests to intercept that match the provided patterns and optionally resource types.\nDeprecated, please use Fetch.enable instead.","domainHref":"tot/Network/","href":"#method-setRequestInterception"}]},"network.setuseragentoverride":{"keyword":"Network.setUserAgentOverride","pageReferences":[{"domain":"Network","type":"4","description":"Allows overriding user agent with the given string.","domainHref":"tot/Network/","href":"#method-setUserAgentOverride"}]},"network.streamresourcecontent":{"keyword":"Network.streamResourceContent","pageReferences":[{"domain":"Network","type":"4","description":"Enables streaming of the response for the given requestId.\nIf enabled, the dataReceived event contains the data that was received during streaming.","domainHref":"tot/Network/","href":"#method-streamResourceContent"}]},"network.getsecurityisolationstatus":{"keyword":"Network.getSecurityIsolationStatus","pageReferences":[{"domain":"Network","type":"4","description":"Returns information about the COEP/COOP isolation status.","domainHref":"tot/Network/","href":"#method-getSecurityIsolationStatus"}]},"network.enablereportingapi":{"keyword":"Network.enableReportingApi","pageReferences":[{"domain":"Network","type":"4","description":"Enables tracking for the Reporting API, events generated by the Reporting API will now be delivered to the client.\nEnabling triggers 'reportingApiReportAdded' for all existing reports.","domainHref":"tot/Network/","href":"#method-enableReportingApi"}]},"network.loadnetworkresource":{"keyword":"Network.loadNetworkResource","pageReferences":[{"domain":"Network","type":"4","description":"Fetches the resource and returns the content.","domainHref":"tot/Network/","href":"#method-loadNetworkResource"}]},"network.setcookiecontrols":{"keyword":"Network.setCookieControls","pageReferences":[{"domain":"Network","type":"4","description":"Sets Controls for third-party cookie access\nPage reload is required before the new cookie behavior will be observed","domainHref":"tot/Network/","href":"#method-setCookieControls"}]},"network.datareceived":{"keyword":"Network.dataReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when data chunk was received over the network.","domainHref":"tot/Network/","href":"#event-dataReceived"}]},"network.eventsourcemessagereceived":{"keyword":"Network.eventSourceMessageReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when EventSource message is received.","domainHref":"tot/Network/","href":"#event-eventSourceMessageReceived"}]},"network.loadingfailed":{"keyword":"Network.loadingFailed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP request has failed to load.","domainHref":"tot/Network/","href":"#event-loadingFailed"}]},"network.loadingfinished":{"keyword":"Network.loadingFinished","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP request has finished loading.","domainHref":"tot/Network/","href":"#event-loadingFinished"}]},"network.requestintercepted":{"keyword":"Network.requestIntercepted","pageReferences":[{"domain":"Network","type":"1","description":"Details of an intercepted HTTP request, which must be either allowed, blocked, modified or\nmocked.\nDeprecated, use Fetch.requestPaused instead.","domainHref":"tot/Network/","href":"#event-requestIntercepted"}]},"network.requestservedfromcache":{"keyword":"Network.requestServedFromCache","pageReferences":[{"domain":"Network","type":"1","description":"Fired if request ended up loading from cache.","domainHref":"tot/Network/","href":"#event-requestServedFromCache"}]},"network.requestwillbesent":{"keyword":"Network.requestWillBeSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when page is about to send HTTP request.","domainHref":"tot/Network/","href":"#event-requestWillBeSent"}]},"network.resourcechangedpriority":{"keyword":"Network.resourceChangedPriority","pageReferences":[{"domain":"Network","type":"1","description":"Fired when resource loading priority is changed","domainHref":"tot/Network/","href":"#event-resourceChangedPriority"}]},"network.signedexchangereceived":{"keyword":"Network.signedExchangeReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when a signed exchange was received over the network","domainHref":"tot/Network/","href":"#event-signedExchangeReceived"}]},"network.responsereceived":{"keyword":"Network.responseReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when HTTP response is available.","domainHref":"tot/Network/","href":"#event-responseReceived"}]},"network.websocketclosed":{"keyword":"Network.webSocketClosed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket is closed.","domainHref":"tot/Network/","href":"#event-webSocketClosed"}]},"network.websocketcreated":{"keyword":"Network.webSocketCreated","pageReferences":[{"domain":"Network","type":"1","description":"Fired upon WebSocket creation.","domainHref":"tot/Network/","href":"#event-webSocketCreated"}]},"network.websocketframeerror":{"keyword":"Network.webSocketFrameError","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket message error occurs.","domainHref":"tot/Network/","href":"#event-webSocketFrameError"}]},"network.websocketframereceived":{"keyword":"Network.webSocketFrameReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket message is received.","domainHref":"tot/Network/","href":"#event-webSocketFrameReceived"}]},"network.websocketframesent":{"keyword":"Network.webSocketFrameSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket message is sent.","domainHref":"tot/Network/","href":"#event-webSocketFrameSent"}]},"network.websockethandshakeresponsereceived":{"keyword":"Network.webSocketHandshakeResponseReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket handshake response becomes available.","domainHref":"tot/Network/","href":"#event-webSocketHandshakeResponseReceived"}]},"network.websocketwillsendhandshakerequest":{"keyword":"Network.webSocketWillSendHandshakeRequest","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebSocket is about to initiate handshake.","domainHref":"tot/Network/","href":"#event-webSocketWillSendHandshakeRequest"}]},"network.webtransportcreated":{"keyword":"Network.webTransportCreated","pageReferences":[{"domain":"Network","type":"1","description":"Fired upon WebTransport creation.","domainHref":"tot/Network/","href":"#event-webTransportCreated"}]},"network.webtransportconnectionestablished":{"keyword":"Network.webTransportConnectionEstablished","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebTransport handshake is finished.","domainHref":"tot/Network/","href":"#event-webTransportConnectionEstablished"}]},"network.webtransportclosed":{"keyword":"Network.webTransportClosed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when WebTransport is disposed.","domainHref":"tot/Network/","href":"#event-webTransportClosed"}]},"network.directtcpsocketcreated":{"keyword":"Network.directTCPSocketCreated","pageReferences":[{"domain":"Network","type":"1","description":"Fired upon direct_socket.TCPSocket creation.","domainHref":"tot/Network/","href":"#event-directTCPSocketCreated"}]},"network.directtcpsocketopened":{"keyword":"Network.directTCPSocketOpened","pageReferences":[{"domain":"Network","type":"1","description":"Fired when direct_socket.TCPSocket connection is opened.","domainHref":"tot/Network/","href":"#event-directTCPSocketOpened"}]},"network.directtcpsocketaborted":{"keyword":"Network.directTCPSocketAborted","pageReferences":[{"domain":"Network","type":"1","description":"Fired when direct_socket.TCPSocket is aborted.","domainHref":"tot/Network/","href":"#event-directTCPSocketAborted"}]},"network.directtcpsocketclosed":{"keyword":"Network.directTCPSocketClosed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when direct_socket.TCPSocket is closed.","domainHref":"tot/Network/","href":"#event-directTCPSocketClosed"}]},"network.directtcpsocketchunksent":{"keyword":"Network.directTCPSocketChunkSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when data is sent to tcp direct socket stream.","domainHref":"tot/Network/","href":"#event-directTCPSocketChunkSent"}]},"network.directtcpsocketchunkreceived":{"keyword":"Network.directTCPSocketChunkReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when data is received from tcp direct socket stream.","domainHref":"tot/Network/","href":"#event-directTCPSocketChunkReceived"}]},"network.directudpsocketcreated":{"keyword":"Network.directUDPSocketCreated","pageReferences":[{"domain":"Network","type":"1","description":"Fired upon direct_socket.UDPSocket creation.","domainHref":"tot/Network/","href":"#event-directUDPSocketCreated"}]},"network.directudpsocketopened":{"keyword":"Network.directUDPSocketOpened","pageReferences":[{"domain":"Network","type":"1","description":"Fired when direct_socket.UDPSocket connection is opened.","domainHref":"tot/Network/","href":"#event-directUDPSocketOpened"}]},"network.directudpsocketaborted":{"keyword":"Network.directUDPSocketAborted","pageReferences":[{"domain":"Network","type":"1","description":"Fired when direct_socket.UDPSocket is aborted.","domainHref":"tot/Network/","href":"#event-directUDPSocketAborted"}]},"network.directudpsocketclosed":{"keyword":"Network.directUDPSocketClosed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when direct_socket.UDPSocket is closed.","domainHref":"tot/Network/","href":"#event-directUDPSocketClosed"}]},"network.directudpsocketchunksent":{"keyword":"Network.directUDPSocketChunkSent","pageReferences":[{"domain":"Network","type":"1","description":"Fired when message is sent to udp direct socket stream.","domainHref":"tot/Network/","href":"#event-directUDPSocketChunkSent"}]},"network.directudpsocketchunkreceived":{"keyword":"Network.directUDPSocketChunkReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired when message is received from udp direct socket stream.","domainHref":"tot/Network/","href":"#event-directUDPSocketChunkReceived"}]},"network.requestwillbesentextrainfo":{"keyword":"Network.requestWillBeSentExtraInfo","pageReferences":[{"domain":"Network","type":"1","description":"Fired when additional information about a requestWillBeSent event is available from the\nnetwork stack. Not every requestWillBeSent event will have an additional\nrequestWillBeSentExtraInfo fired for it...","domainHref":"tot/Network/","href":"#event-requestWillBeSentExtraInfo"}]},"network.responsereceivedextrainfo":{"keyword":"Network.responseReceivedExtraInfo","pageReferences":[{"domain":"Network","type":"1","description":"Fired when additional information about a responseReceived event is available from the network\nstack. Not every responseReceived event will have an additional responseReceivedExtraInfo for\nit, and res...","domainHref":"tot/Network/","href":"#event-responseReceivedExtraInfo"}]},"network.responsereceivedearlyhints":{"keyword":"Network.responseReceivedEarlyHints","pageReferences":[{"domain":"Network","type":"1","description":"Fired when 103 Early Hints headers is received in addition to the common response.\nNot every responseReceived event will have an responseReceivedEarlyHints fired.\nOnly one responseReceivedEarlyHints m...","domainHref":"tot/Network/","href":"#event-responseReceivedEarlyHints"}]},"network.trusttokenoperationdone":{"keyword":"Network.trustTokenOperationDone","pageReferences":[{"domain":"Network","type":"1","description":"Fired exactly once for each Trust Token operation. Depending on\nthe type of the operation and whether the operation succeeded or\nfailed, the event is fired before the corresponding request was sent\nor...","domainHref":"tot/Network/","href":"#event-trustTokenOperationDone"}]},"network.policyupdated":{"keyword":"Network.policyUpdated","pageReferences":[{"domain":"Network","type":"1","description":"Fired once security policy has been updated.","domainHref":"tot/Network/","href":"#event-policyUpdated"}]},"network.subresourcewebbundlemetadatareceived":{"keyword":"Network.subresourceWebBundleMetadataReceived","pageReferences":[{"domain":"Network","type":"1","description":"Fired once when parsing the .wbn file has succeeded.\nThe event contains the information about the web bundle contents.","domainHref":"tot/Network/","href":"#event-subresourceWebBundleMetadataReceived"}]},"network.subresourcewebbundlemetadataerror":{"keyword":"Network.subresourceWebBundleMetadataError","pageReferences":[{"domain":"Network","type":"1","description":"Fired once when parsing the .wbn file has failed.","domainHref":"tot/Network/","href":"#event-subresourceWebBundleMetadataError"}]},"network.subresourcewebbundleinnerresponseparsed":{"keyword":"Network.subresourceWebBundleInnerResponseParsed","pageReferences":[{"domain":"Network","type":"1","description":"Fired when handling requests for resources within a .wbn file.\nNote: this will only be fired for resources that are requested by the webpage.","domainHref":"tot/Network/","href":"#event-subresourceWebBundleInnerResponseParsed"}]},"network.subresourcewebbundleinnerresponseerror":{"keyword":"Network.subresourceWebBundleInnerResponseError","pageReferences":[{"domain":"Network","type":"1","description":"Fired when request for resources within a .wbn file failed.","domainHref":"tot/Network/","href":"#event-subresourceWebBundleInnerResponseError"}]},"network.reportingapireportadded":{"keyword":"Network.reportingApiReportAdded","pageReferences":[{"domain":"Network","type":"1","description":"Is sent whenever a new report is added.\nAnd after 'enableReportingApi' for all existing reports.","domainHref":"tot/Network/","href":"#event-reportingApiReportAdded"}]},"network.reportingapireportupdated":{"keyword":"Network.reportingApiReportUpdated","pageReferences":[{"domain":"Network","type":"1","domainHref":"tot/Network/","href":"#event-reportingApiReportUpdated"}]},"network.reportingapiendpointschangedfororigin":{"keyword":"Network.reportingApiEndpointsChangedForOrigin","pageReferences":[{"domain":"Network","type":"1","domainHref":"tot/Network/","href":"#event-reportingApiEndpointsChangedForOrigin"}]},"network.resourcetype":{"keyword":"Network.ResourceType","pageReferences":[{"domain":"Network","type":"3","description":"Resource type as it was perceived by the rendering engine.","domainHref":"tot/Network/","href":"#type-ResourceType"}]},"network.loaderid":{"keyword":"Network.LoaderId","pageReferences":[{"domain":"Network","type":"3","description":"Unique loader identifier.","domainHref":"tot/Network/","href":"#type-LoaderId"}]},"network.requestid":{"keyword":"Network.RequestId","pageReferences":[{"domain":"Network","type":"3","description":"Unique network request identifier.\nNote that this does not identify individual HTTP requests that are part of\na network request.","domainHref":"tot/Network/","href":"#type-RequestId"}]},"network.interceptionid":{"keyword":"Network.InterceptionId","pageReferences":[{"domain":"Network","type":"3","description":"Unique intercepted request identifier.","domainHref":"tot/Network/","href":"#type-InterceptionId"}]},"network.errorreason":{"keyword":"Network.ErrorReason","pageReferences":[{"domain":"Network","type":"3","description":"Network level fetch failure reason.","domainHref":"tot/Network/","href":"#type-ErrorReason"}]},"network.timesinceepoch":{"keyword":"Network.TimeSinceEpoch","pageReferences":[{"domain":"Network","type":"3","description":"UTC time in seconds, counted from January 1, 1970.","domainHref":"tot/Network/","href":"#type-TimeSinceEpoch"}]},"network.monotonictime":{"keyword":"Network.MonotonicTime","pageReferences":[{"domain":"Network","type":"3","description":"Monotonically increasing time in seconds since an arbitrary point in the past.","domainHref":"tot/Network/","href":"#type-MonotonicTime"}]},"network.headers":{"keyword":"Network.Headers","pageReferences":[{"domain":"Network","type":"3","description":"Request / response headers as keys / values of JSON object.","domainHref":"tot/Network/","href":"#type-Headers"}]},"network.connectiontype":{"keyword":"Network.ConnectionType","pageReferences":[{"domain":"Network","type":"3","description":"The underlying connection technology that the browser is supposedly using.","domainHref":"tot/Network/","href":"#type-ConnectionType"}]},"network.cookiesamesite":{"keyword":"Network.CookieSameSite","pageReferences":[{"domain":"Network","type":"3","description":"Represents the cookie's 'SameSite' status:\nhttps://tools.ietf.org/html/draft-west-first-party-cookies","domainHref":"tot/Network/","href":"#type-CookieSameSite"}]},"network.cookiepriority":{"keyword":"Network.CookiePriority","pageReferences":[{"domain":"Network","type":"3","description":"Represents the cookie's 'Priority' status:\nhttps://tools.ietf.org/html/draft-west-cookie-priority-00","domainHref":"tot/Network/","href":"#type-CookiePriority"}]},"network.cookiesourcescheme":{"keyword":"Network.CookieSourceScheme","pageReferences":[{"domain":"Network","type":"3","description":"Represents the source scheme of the origin that originally set the cookie.\nA value of \"Unset\" allows protocol clients to emulate legacy cookie scope for the scheme.\nThis is a temporary ability and it ...","domainHref":"tot/Network/","href":"#type-CookieSourceScheme"}]},"network.resourcetiming":{"keyword":"Network.ResourceTiming","pageReferences":[{"domain":"Network","type":"3","description":"Timing information for the request.","domainHref":"tot/Network/","href":"#type-ResourceTiming"}]},"network.resourcepriority":{"keyword":"Network.ResourcePriority","pageReferences":[{"domain":"Network","type":"3","description":"Loading priority of a resource request.","domainHref":"tot/Network/","href":"#type-ResourcePriority"}]},"network.postdataentry":{"keyword":"Network.PostDataEntry","pageReferences":[{"domain":"Network","type":"3","description":"Post data entry for HTTP request","domainHref":"tot/Network/","href":"#type-PostDataEntry"}]},"network.request":{"keyword":"Network.Request","pageReferences":[{"domain":"Network","type":"3","description":"HTTP request data.","domainHref":"tot/Network/","href":"#type-Request"}]},"network.signedcertificatetimestamp":{"keyword":"Network.SignedCertificateTimestamp","pageReferences":[{"domain":"Network","type":"3","description":"Details of a signed certificate timestamp (SCT).","domainHref":"tot/Network/","href":"#type-SignedCertificateTimestamp"}]},"network.securitydetails":{"keyword":"Network.SecurityDetails","pageReferences":[{"domain":"Network","type":"3","description":"Security details about a request.","domainHref":"tot/Network/","href":"#type-SecurityDetails"}]},"network.certificatetransparencycompliance":{"keyword":"Network.CertificateTransparencyCompliance","pageReferences":[{"domain":"Network","type":"3","description":"Whether the request complied with Certificate Transparency policy.","domainHref":"tot/Network/","href":"#type-CertificateTransparencyCompliance"}]},"network.blockedreason":{"keyword":"Network.BlockedReason","pageReferences":[{"domain":"Network","type":"3","description":"The reason why request was blocked.","domainHref":"tot/Network/","href":"#type-BlockedReason"}]},"network.corserror":{"keyword":"Network.CorsError","pageReferences":[{"domain":"Network","type":"3","description":"The reason why request was blocked.","domainHref":"tot/Network/","href":"#type-CorsError"}]},"network.corserrorstatus":{"keyword":"Network.CorsErrorStatus","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-CorsErrorStatus"}]},"network.serviceworkerresponsesource":{"keyword":"Network.ServiceWorkerResponseSource","pageReferences":[{"domain":"Network","type":"3","description":"Source of serviceworker response.","domainHref":"tot/Network/","href":"#type-ServiceWorkerResponseSource"}]},"network.trusttokenparams":{"keyword":"Network.TrustTokenParams","pageReferences":[{"domain":"Network","type":"3","description":"Determines what type of Trust Token operation is executed and\ndepending on the type, some additional parameters. The values\nare specified in third_party/blink/renderer/core/fetch/trust_token.idl.","domainHref":"tot/Network/","href":"#type-TrustTokenParams"}]},"network.trusttokenoperationtype":{"keyword":"Network.TrustTokenOperationType","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-TrustTokenOperationType"}]},"network.alternateprotocolusage":{"keyword":"Network.AlternateProtocolUsage","pageReferences":[{"domain":"Network","type":"3","description":"The reason why Chrome uses a specific transport protocol for HTTP semantics.","domainHref":"tot/Network/","href":"#type-AlternateProtocolUsage"}]},"network.serviceworkerroutersource":{"keyword":"Network.ServiceWorkerRouterSource","pageReferences":[{"domain":"Network","type":"3","description":"Source of service worker router.","domainHref":"tot/Network/","href":"#type-ServiceWorkerRouterSource"}]},"network.serviceworkerrouterinfo":{"keyword":"Network.ServiceWorkerRouterInfo","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ServiceWorkerRouterInfo"}]},"network.response":{"keyword":"Network.Response","pageReferences":[{"domain":"Network","type":"3","description":"HTTP response data.","domainHref":"tot/Network/","href":"#type-Response"}]},"network.websocketrequest":{"keyword":"Network.WebSocketRequest","pageReferences":[{"domain":"Network","type":"3","description":"WebSocket request data.","domainHref":"tot/Network/","href":"#type-WebSocketRequest"}]},"network.websocketresponse":{"keyword":"Network.WebSocketResponse","pageReferences":[{"domain":"Network","type":"3","description":"WebSocket response data.","domainHref":"tot/Network/","href":"#type-WebSocketResponse"}]},"network.websocketframe":{"keyword":"Network.WebSocketFrame","pageReferences":[{"domain":"Network","type":"3","description":"WebSocket message data. This represents an entire WebSocket message, not just a fragmented frame as the name suggests.","domainHref":"tot/Network/","href":"#type-WebSocketFrame"}]},"network.cachedresource":{"keyword":"Network.CachedResource","pageReferences":[{"domain":"Network","type":"3","description":"Information about the cached resource.","domainHref":"tot/Network/","href":"#type-CachedResource"}]},"network.initiator":{"keyword":"Network.Initiator","pageReferences":[{"domain":"Network","type":"3","description":"Information about the request initiator.","domainHref":"tot/Network/","href":"#type-Initiator"}]},"network.cookiepartitionkey":{"keyword":"Network.CookiePartitionKey","pageReferences":[{"domain":"Network","type":"3","description":"cookiePartitionKey object\nThe representation of the components of the key that are created by the cookiePartitionKey class contained in net/cookies/cookie_partition_key.h.","domainHref":"tot/Network/","href":"#type-CookiePartitionKey"}]},"network.cookie":{"keyword":"Network.Cookie","pageReferences":[{"domain":"Network","type":"3","description":"Cookie object","domainHref":"tot/Network/","href":"#type-Cookie"}]},"network.setcookieblockedreason":{"keyword":"Network.SetCookieBlockedReason","pageReferences":[{"domain":"Network","type":"3","description":"Types of reasons why a cookie may not be stored from a response.","domainHref":"tot/Network/","href":"#type-SetCookieBlockedReason"}]},"network.cookieblockedreason":{"keyword":"Network.CookieBlockedReason","pageReferences":[{"domain":"Network","type":"3","description":"Types of reasons why a cookie may not be sent with a request.","domainHref":"tot/Network/","href":"#type-CookieBlockedReason"}]},"network.cookieexemptionreason":{"keyword":"Network.CookieExemptionReason","pageReferences":[{"domain":"Network","type":"3","description":"Types of reasons why a cookie should have been blocked by 3PCD but is exempted for the request.","domainHref":"tot/Network/","href":"#type-CookieExemptionReason"}]},"network.blockedsetcookiewithreason":{"keyword":"Network.BlockedSetCookieWithReason","pageReferences":[{"domain":"Network","type":"3","description":"A cookie which was not stored from a response with the corresponding reason.","domainHref":"tot/Network/","href":"#type-BlockedSetCookieWithReason"}]},"network.exemptedsetcookiewithreason":{"keyword":"Network.ExemptedSetCookieWithReason","pageReferences":[{"domain":"Network","type":"3","description":"A cookie should have been blocked by 3PCD but is exempted and stored from a response with the\ncorresponding reason. A cookie could only have at most one exemption reason.","domainHref":"tot/Network/","href":"#type-ExemptedSetCookieWithReason"}]},"network.associatedcookie":{"keyword":"Network.AssociatedCookie","pageReferences":[{"domain":"Network","type":"3","description":"A cookie associated with the request which may or may not be sent with it.\nIncludes the cookies itself and reasons for blocking or exemption.","domainHref":"tot/Network/","href":"#type-AssociatedCookie"}]},"network.cookieparam":{"keyword":"Network.CookieParam","pageReferences":[{"domain":"Network","type":"3","description":"Cookie parameter object","domainHref":"tot/Network/","href":"#type-CookieParam"}]},"network.authchallenge":{"keyword":"Network.AuthChallenge","pageReferences":[{"domain":"Network","type":"3","description":"Authorization challenge for HTTP status code 401 or 407.","domainHref":"tot/Network/","href":"#type-AuthChallenge"}]},"network.authchallengeresponse":{"keyword":"Network.AuthChallengeResponse","pageReferences":[{"domain":"Network","type":"3","description":"Response to an AuthChallenge.","domainHref":"tot/Network/","href":"#type-AuthChallengeResponse"}]},"network.interceptionstage":{"keyword":"Network.InterceptionStage","pageReferences":[{"domain":"Network","type":"3","description":"Stages of the interception to begin intercepting. Request will intercept before the request is\nsent. Response will intercept after the response is received.","domainHref":"tot/Network/","href":"#type-InterceptionStage"}]},"network.requestpattern":{"keyword":"Network.RequestPattern","pageReferences":[{"domain":"Network","type":"3","description":"Request pattern for interception.","domainHref":"tot/Network/","href":"#type-RequestPattern"}]},"network.signedexchangesignature":{"keyword":"Network.SignedExchangeSignature","pageReferences":[{"domain":"Network","type":"3","description":"Information about a signed exchange signature.\nhttps://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html#rfc.section.3.1","domainHref":"tot/Network/","href":"#type-SignedExchangeSignature"}]},"network.signedexchangeheader":{"keyword":"Network.SignedExchangeHeader","pageReferences":[{"domain":"Network","type":"3","description":"Information about a signed exchange header.\nhttps://wicg.github.io/webpackage/draft-yasskin-httpbis-origin-signed-exchanges-impl.html#cbor-representation","domainHref":"tot/Network/","href":"#type-SignedExchangeHeader"}]},"network.signedexchangeerrorfield":{"keyword":"Network.SignedExchangeErrorField","pageReferences":[{"domain":"Network","type":"3","description":"Field type for a signed exchange related error.","domainHref":"tot/Network/","href":"#type-SignedExchangeErrorField"}]},"network.signedexchangeerror":{"keyword":"Network.SignedExchangeError","pageReferences":[{"domain":"Network","type":"3","description":"Information about a signed exchange response.","domainHref":"tot/Network/","href":"#type-SignedExchangeError"}]},"network.signedexchangeinfo":{"keyword":"Network.SignedExchangeInfo","pageReferences":[{"domain":"Network","type":"3","description":"Information about a signed exchange response.","domainHref":"tot/Network/","href":"#type-SignedExchangeInfo"}]},"network.contentencoding":{"keyword":"Network.ContentEncoding","pageReferences":[{"domain":"Network","type":"3","description":"List of content encodings supported by the backend.","domainHref":"tot/Network/","href":"#type-ContentEncoding"}]},"network.directsocketdnsquerytype":{"keyword":"Network.DirectSocketDnsQueryType","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-DirectSocketDnsQueryType"}]},"network.directtcpsocketoptions":{"keyword":"Network.DirectTCPSocketOptions","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-DirectTCPSocketOptions"}]},"network.directudpsocketoptions":{"keyword":"Network.DirectUDPSocketOptions","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-DirectUDPSocketOptions"}]},"network.directudpmessage":{"keyword":"Network.DirectUDPMessage","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-DirectUDPMessage"}]},"network.privatenetworkrequestpolicy":{"keyword":"Network.PrivateNetworkRequestPolicy","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-PrivateNetworkRequestPolicy"}]},"network.ipaddressspace":{"keyword":"Network.IPAddressSpace","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-IPAddressSpace"}]},"network.connecttiming":{"keyword":"Network.ConnectTiming","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ConnectTiming"}]},"network.clientsecuritystate":{"keyword":"Network.ClientSecurityState","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ClientSecurityState"}]},"network.crossoriginopenerpolicyvalue":{"keyword":"Network.CrossOriginOpenerPolicyValue","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-CrossOriginOpenerPolicyValue"}]},"network.crossoriginopenerpolicystatus":{"keyword":"Network.CrossOriginOpenerPolicyStatus","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-CrossOriginOpenerPolicyStatus"}]},"network.crossoriginembedderpolicyvalue":{"keyword":"Network.CrossOriginEmbedderPolicyValue","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-CrossOriginEmbedderPolicyValue"}]},"network.crossoriginembedderpolicystatus":{"keyword":"Network.CrossOriginEmbedderPolicyStatus","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-CrossOriginEmbedderPolicyStatus"}]},"network.contentsecuritypolicysource":{"keyword":"Network.ContentSecurityPolicySource","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ContentSecurityPolicySource"}]},"network.contentsecuritypolicystatus":{"keyword":"Network.ContentSecurityPolicyStatus","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ContentSecurityPolicyStatus"}]},"network.securityisolationstatus":{"keyword":"Network.SecurityIsolationStatus","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-SecurityIsolationStatus"}]},"network.reportstatus":{"keyword":"Network.ReportStatus","pageReferences":[{"domain":"Network","type":"3","description":"The status of a Reporting API report.","domainHref":"tot/Network/","href":"#type-ReportStatus"}]},"network.reportid":{"keyword":"Network.ReportId","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ReportId"}]},"network.reportingapireport":{"keyword":"Network.ReportingApiReport","pageReferences":[{"domain":"Network","type":"3","description":"An object representing a report generated by the Reporting API.","domainHref":"tot/Network/","href":"#type-ReportingApiReport"}]},"network.reportingapiendpoint":{"keyword":"Network.ReportingApiEndpoint","pageReferences":[{"domain":"Network","type":"3","domainHref":"tot/Network/","href":"#type-ReportingApiEndpoint"}]},"network.loadnetworkresourcepageresult":{"keyword":"Network.LoadNetworkResourcePageResult","pageReferences":[{"domain":"Network","type":"3","description":"An object providing the result of a network resource load.","domainHref":"tot/Network/","href":"#type-LoadNetworkResourcePageResult"}]},"network.loadnetworkresourceoptions":{"keyword":"Network.LoadNetworkResourceOptions","pageReferences":[{"domain":"Network","type":"3","description":"An options object that may be extended later to better support CORS,\nCORB and streaming.","domainHref":"tot/Network/","href":"#type-LoadNetworkResourceOptions"}]},"overlay":{"keyword":"Overlay","pageReferences":[{"domain":"Overlay","type":"0","description":"This domain provides various functionality related to drawing atop the inspected page.","domainHref":"tot/Overlay/"}]},"overlay.disable":{"keyword":"Overlay.disable","pageReferences":[{"domain":"Overlay","type":"4","description":"Disables domain notifications.","domainHref":"tot/Overlay/","href":"#method-disable"}]},"overlay.enable":{"keyword":"Overlay.enable","pageReferences":[{"domain":"Overlay","type":"4","description":"Enables domain notifications.","domainHref":"tot/Overlay/","href":"#method-enable"}]},"overlay.gethighlightobjectfortest":{"keyword":"Overlay.getHighlightObjectForTest","pageReferences":[{"domain":"Overlay","type":"4","description":"For testing.","domainHref":"tot/Overlay/","href":"#method-getHighlightObjectForTest"}]},"overlay.getgridhighlightobjectsfortest":{"keyword":"Overlay.getGridHighlightObjectsForTest","pageReferences":[{"domain":"Overlay","type":"4","description":"For Persistent Grid testing.","domainHref":"tot/Overlay/","href":"#method-getGridHighlightObjectsForTest"}]},"overlay.getsourceorderhighlightobjectfortest":{"keyword":"Overlay.getSourceOrderHighlightObjectForTest","pageReferences":[{"domain":"Overlay","type":"4","description":"For Source Order Viewer testing.","domainHref":"tot/Overlay/","href":"#method-getSourceOrderHighlightObjectForTest"}]},"overlay.hidehighlight":{"keyword":"Overlay.hideHighlight","pageReferences":[{"domain":"Overlay","type":"4","description":"Hides any highlight.","domainHref":"tot/Overlay/","href":"#method-hideHighlight"}]},"overlay.highlightframe":{"keyword":"Overlay.highlightFrame","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlights owner element of the frame with given id.\nDeprecated: Doesn't work reliably and cannot be fixed due to process\nseparation (the owner node might be in a different process). Determine\nthe own...","domainHref":"tot/Overlay/","href":"#method-highlightFrame"}]},"overlay.highlightnode":{"keyword":"Overlay.highlightNode","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or\nobjectId must be specified.","domainHref":"tot/Overlay/","href":"#method-highlightNode"}]},"overlay.highlightquad":{"keyword":"Overlay.highlightQuad","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlights given quad. Coordinates are absolute with respect to the main frame viewport.","domainHref":"tot/Overlay/","href":"#method-highlightQuad"}]},"overlay.highlightrect":{"keyword":"Overlay.highlightRect","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.","domainHref":"tot/Overlay/","href":"#method-highlightRect"}]},"overlay.highlightsourceorder":{"keyword":"Overlay.highlightSourceOrder","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlights the source order of the children of the DOM node with given id or with the given\nJavaScript object wrapper. Either nodeId or objectId must be specified.","domainHref":"tot/Overlay/","href":"#method-highlightSourceOrder"}]},"overlay.setinspectmode":{"keyword":"Overlay.setInspectMode","pageReferences":[{"domain":"Overlay","type":"4","description":"Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted.\nBackend then generates 'inspectNodeRequested' event upon element selection.","domainHref":"tot/Overlay/","href":"#method-setInspectMode"}]},"overlay.setshowadhighlights":{"keyword":"Overlay.setShowAdHighlights","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlights owner element of all frames detected to be ads.","domainHref":"tot/Overlay/","href":"#method-setShowAdHighlights"}]},"overlay.setpausedindebuggermessage":{"keyword":"Overlay.setPausedInDebuggerMessage","pageReferences":[{"domain":"Overlay","type":"4","domainHref":"tot/Overlay/","href":"#method-setPausedInDebuggerMessage"}]},"overlay.setshowdebugborders":{"keyword":"Overlay.setShowDebugBorders","pageReferences":[{"domain":"Overlay","type":"4","description":"Requests that backend shows debug borders on layers","domainHref":"tot/Overlay/","href":"#method-setShowDebugBorders"}]},"overlay.setshowfpscounter":{"keyword":"Overlay.setShowFPSCounter","pageReferences":[{"domain":"Overlay","type":"4","description":"Requests that backend shows the FPS counter","domainHref":"tot/Overlay/","href":"#method-setShowFPSCounter"}]},"overlay.setshowgridoverlays":{"keyword":"Overlay.setShowGridOverlays","pageReferences":[{"domain":"Overlay","type":"4","description":"Highlight multiple elements with the CSS Grid overlay.","domainHref":"tot/Overlay/","href":"#method-setShowGridOverlays"}]},"overlay.setshowflexoverlays":{"keyword":"Overlay.setShowFlexOverlays","pageReferences":[{"domain":"Overlay","type":"4","domainHref":"tot/Overlay/","href":"#method-setShowFlexOverlays"}]},"overlay.setshowscrollsnapoverlays":{"keyword":"Overlay.setShowScrollSnapOverlays","pageReferences":[{"domain":"Overlay","type":"4","domainHref":"tot/Overlay/","href":"#method-setShowScrollSnapOverlays"}]},"overlay.setshowcontainerqueryoverlays":{"keyword":"Overlay.setShowContainerQueryOverlays","pageReferences":[{"domain":"Overlay","type":"4","domainHref":"tot/Overlay/","href":"#method-setShowContainerQueryOverlays"}]},"overlay.setshowpaintrects":{"keyword":"Overlay.setShowPaintRects","pageReferences":[{"domain":"Overlay","type":"4","description":"Requests that backend shows paint rectangles","domainHref":"tot/Overlay/","href":"#method-setShowPaintRects"}]},"overlay.setshowlayoutshiftregions":{"keyword":"Overlay.setShowLayoutShiftRegions","pageReferences":[{"domain":"Overlay","type":"4","description":"Requests that backend shows layout shift regions","domainHref":"tot/Overlay/","href":"#method-setShowLayoutShiftRegions"}]},"overlay.setshowscrollbottleneckrects":{"keyword":"Overlay.setShowScrollBottleneckRects","pageReferences":[{"domain":"Overlay","type":"4","description":"Requests that backend shows scroll bottleneck rects","domainHref":"tot/Overlay/","href":"#method-setShowScrollBottleneckRects"}]},"overlay.setshowhittestborders":{"keyword":"Overlay.setShowHitTestBorders","pageReferences":[{"domain":"Overlay","type":"4","description":"Deprecated, no longer has any effect.","domainHref":"tot/Overlay/","href":"#method-setShowHitTestBorders"}]},"overlay.setshowwebvitals":{"keyword":"Overlay.setShowWebVitals","pageReferences":[{"domain":"Overlay","type":"4","description":"Deprecated, no longer has any effect.","domainHref":"tot/Overlay/","href":"#method-setShowWebVitals"}]},"overlay.setshowviewportsizeonresize":{"keyword":"Overlay.setShowViewportSizeOnResize","pageReferences":[{"domain":"Overlay","type":"4","description":"Paints viewport size upon main frame resize.","domainHref":"tot/Overlay/","href":"#method-setShowViewportSizeOnResize"}]},"overlay.setshowhinge":{"keyword":"Overlay.setShowHinge","pageReferences":[{"domain":"Overlay","type":"4","description":"Add a dual screen device hinge","domainHref":"tot/Overlay/","href":"#method-setShowHinge"}]},"overlay.setshowisolatedelements":{"keyword":"Overlay.setShowIsolatedElements","pageReferences":[{"domain":"Overlay","type":"4","description":"Show elements in isolation mode with overlays.","domainHref":"tot/Overlay/","href":"#method-setShowIsolatedElements"}]},"overlay.setshowwindowcontrolsoverlay":{"keyword":"Overlay.setShowWindowControlsOverlay","pageReferences":[{"domain":"Overlay","type":"4","description":"Show Window Controls Overlay for PWA","domainHref":"tot/Overlay/","href":"#method-setShowWindowControlsOverlay"}]},"overlay.inspectnoderequested":{"keyword":"Overlay.inspectNodeRequested","pageReferences":[{"domain":"Overlay","type":"1","description":"Fired when the node should be inspected. This happens after call to `setInspectMode` or when\nuser manually inspects an element.","domainHref":"tot/Overlay/","href":"#event-inspectNodeRequested"}]},"overlay.nodehighlightrequested":{"keyword":"Overlay.nodeHighlightRequested","pageReferences":[{"domain":"Overlay","type":"1","description":"Fired when the node should be highlighted. This happens after call to `setInspectMode`.","domainHref":"tot/Overlay/","href":"#event-nodeHighlightRequested"}]},"overlay.screenshotrequested":{"keyword":"Overlay.screenshotRequested","pageReferences":[{"domain":"Overlay","type":"1","description":"Fired when user asks to capture screenshot of some area on the page.","domainHref":"tot/Overlay/","href":"#event-screenshotRequested"}]},"overlay.inspectmodecanceled":{"keyword":"Overlay.inspectModeCanceled","pageReferences":[{"domain":"Overlay","type":"1","description":"Fired when user cancels the inspect mode.","domainHref":"tot/Overlay/","href":"#event-inspectModeCanceled"}]},"overlay.sourceorderconfig":{"keyword":"Overlay.SourceOrderConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration data for drawing the source order of an elements children.","domainHref":"tot/Overlay/","href":"#type-SourceOrderConfig"}]},"overlay.gridhighlightconfig":{"keyword":"Overlay.GridHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration data for the highlighting of Grid elements.","domainHref":"tot/Overlay/","href":"#type-GridHighlightConfig"}]},"overlay.flexcontainerhighlightconfig":{"keyword":"Overlay.FlexContainerHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration data for the highlighting of Flex container elements.","domainHref":"tot/Overlay/","href":"#type-FlexContainerHighlightConfig"}]},"overlay.flexitemhighlightconfig":{"keyword":"Overlay.FlexItemHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration data for the highlighting of Flex item elements.","domainHref":"tot/Overlay/","href":"#type-FlexItemHighlightConfig"}]},"overlay.linestyle":{"keyword":"Overlay.LineStyle","pageReferences":[{"domain":"Overlay","type":"3","description":"Style information for drawing a line.","domainHref":"tot/Overlay/","href":"#type-LineStyle"}]},"overlay.boxstyle":{"keyword":"Overlay.BoxStyle","pageReferences":[{"domain":"Overlay","type":"3","description":"Style information for drawing a box.","domainHref":"tot/Overlay/","href":"#type-BoxStyle"}]},"overlay.contrastalgorithm":{"keyword":"Overlay.ContrastAlgorithm","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-ContrastAlgorithm"}]},"overlay.highlightconfig":{"keyword":"Overlay.HighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration data for the highlighting of page elements.","domainHref":"tot/Overlay/","href":"#type-HighlightConfig"}]},"overlay.colorformat":{"keyword":"Overlay.ColorFormat","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-ColorFormat"}]},"overlay.gridnodehighlightconfig":{"keyword":"Overlay.GridNodeHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configurations for Persistent Grid Highlight","domainHref":"tot/Overlay/","href":"#type-GridNodeHighlightConfig"}]},"overlay.flexnodehighlightconfig":{"keyword":"Overlay.FlexNodeHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-FlexNodeHighlightConfig"}]},"overlay.scrollsnapcontainerhighlightconfig":{"keyword":"Overlay.ScrollSnapContainerHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-ScrollSnapContainerHighlightConfig"}]},"overlay.scrollsnaphighlightconfig":{"keyword":"Overlay.ScrollSnapHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-ScrollSnapHighlightConfig"}]},"overlay.hingeconfig":{"keyword":"Overlay.HingeConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration for dual screen hinge","domainHref":"tot/Overlay/","href":"#type-HingeConfig"}]},"overlay.windowcontrolsoverlayconfig":{"keyword":"Overlay.WindowControlsOverlayConfig","pageReferences":[{"domain":"Overlay","type":"3","description":"Configuration for Window Controls Overlay","domainHref":"tot/Overlay/","href":"#type-WindowControlsOverlayConfig"}]},"overlay.containerqueryhighlightconfig":{"keyword":"Overlay.ContainerQueryHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-ContainerQueryHighlightConfig"}]},"overlay.containerquerycontainerhighlightconfig":{"keyword":"Overlay.ContainerQueryContainerHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-ContainerQueryContainerHighlightConfig"}]},"overlay.isolatedelementhighlightconfig":{"keyword":"Overlay.IsolatedElementHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-IsolatedElementHighlightConfig"}]},"overlay.isolationmodehighlightconfig":{"keyword":"Overlay.IsolationModeHighlightConfig","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-IsolationModeHighlightConfig"}]},"overlay.inspectmode":{"keyword":"Overlay.InspectMode","pageReferences":[{"domain":"Overlay","type":"3","domainHref":"tot/Overlay/","href":"#type-InspectMode"}]},"page":{"keyword":"Page","pageReferences":[{"domain":"Page","type":"0","description":"Actions and events related to the inspected page belong to the page domain.","domainHref":"tot/Page/"}]},"page.addscripttoevaluateonload":{"keyword":"Page.addScriptToEvaluateOnLoad","pageReferences":[{"domain":"Page","type":"4","description":"Deprecated, please use addScriptToEvaluateOnNewDocument instead.","domainHref":"tot/Page/","href":"#method-addScriptToEvaluateOnLoad"}]},"page.addscripttoevaluateonnewdocument":{"keyword":"Page.addScriptToEvaluateOnNewDocument","pageReferences":[{"domain":"Page","type":"4","description":"Evaluates given script in every frame upon creation (before loading frame's scripts).","domainHref":"tot/Page/","href":"#method-addScriptToEvaluateOnNewDocument"}]},"page.bringtofront":{"keyword":"Page.bringToFront","pageReferences":[{"domain":"Page","type":"4","description":"Brings page to front (activates tab).","domainHref":"tot/Page/","href":"#method-bringToFront"}]},"page.capturescreenshot":{"keyword":"Page.captureScreenshot","pageReferences":[{"domain":"Page","type":"4","description":"Capture page screenshot.","domainHref":"tot/Page/","href":"#method-captureScreenshot"}]},"page.capturesnapshot":{"keyword":"Page.captureSnapshot","pageReferences":[{"domain":"Page","type":"4","description":"Returns a snapshot of the page as a string. For MHTML format, the serialization includes\niframes, shadow DOM, external resources, and element-inline styles.","domainHref":"tot/Page/","href":"#method-captureSnapshot"}]},"page.cleardevicemetricsoverride":{"keyword":"Page.clearDeviceMetricsOverride","pageReferences":[{"domain":"Page","type":"4","description":"Clears the overridden device metrics.","domainHref":"tot/Page/","href":"#method-clearDeviceMetricsOverride"}]},"page.cleardeviceorientationoverride":{"keyword":"Page.clearDeviceOrientationOverride","pageReferences":[{"domain":"Page","type":"4","description":"Clears the overridden Device Orientation.","domainHref":"tot/Page/","href":"#method-clearDeviceOrientationOverride"}]},"page.cleargeolocationoverride":{"keyword":"Page.clearGeolocationOverride","pageReferences":[{"domain":"Page","type":"4","description":"Clears the overridden Geolocation Position and Error.","domainHref":"tot/Page/","href":"#method-clearGeolocationOverride"}]},"page.createisolatedworld":{"keyword":"Page.createIsolatedWorld","pageReferences":[{"domain":"Page","type":"4","description":"Creates an isolated world for the given frame.","domainHref":"tot/Page/","href":"#method-createIsolatedWorld"}]},"page.deletecookie":{"keyword":"Page.deleteCookie","pageReferences":[{"domain":"Page","type":"4","description":"Deletes browser cookie with given name, domain and path.","domainHref":"tot/Page/","href":"#method-deleteCookie"}]},"page.disable":{"keyword":"Page.disable","pageReferences":[{"domain":"Page","type":"4","description":"Disables page domain notifications.","domainHref":"tot/Page/","href":"#method-disable"}]},"page.enable":{"keyword":"Page.enable","pageReferences":[{"domain":"Page","type":"4","description":"Enables page domain notifications.","domainHref":"tot/Page/","href":"#method-enable"}]},"page.getappmanifest":{"keyword":"Page.getAppManifest","pageReferences":[{"domain":"Page","type":"4","description":"Gets the processed manifest for this current document.\n This API always waits for the manifest to be loaded.\n If manifestId is provided, and it does not match the manifest of the\n current documen...","domainHref":"tot/Page/","href":"#method-getAppManifest"}]},"page.getinstallabilityerrors":{"keyword":"Page.getInstallabilityErrors","pageReferences":[{"domain":"Page","type":"4","domainHref":"tot/Page/","href":"#method-getInstallabilityErrors"}]},"page.getmanifesticons":{"keyword":"Page.getManifestIcons","pageReferences":[{"domain":"Page","type":"4","description":"Deprecated because it's not guaranteed that the returned icon is in fact the one used for PWA installation.","domainHref":"tot/Page/","href":"#method-getManifestIcons"}]},"page.getappid":{"keyword":"Page.getAppId","pageReferences":[{"domain":"Page","type":"4","description":"Returns the unique (PWA) app id.\nOnly returns values if the feature flag 'WebAppEnableManifestId' is enabled","domainHref":"tot/Page/","href":"#method-getAppId"}]},"page.getadscriptancestry":{"keyword":"Page.getAdScriptAncestry","pageReferences":[{"domain":"Page","type":"4","domainHref":"tot/Page/","href":"#method-getAdScriptAncestry"}]},"page.getframetree":{"keyword":"Page.getFrameTree","pageReferences":[{"domain":"Page","type":"4","description":"Returns present frame tree structure.","domainHref":"tot/Page/","href":"#method-getFrameTree"}]},"page.getlayoutmetrics":{"keyword":"Page.getLayoutMetrics","pageReferences":[{"domain":"Page","type":"4","description":"Returns metrics relating to the layouting of the page, such as viewport bounds/scale.","domainHref":"tot/Page/","href":"#method-getLayoutMetrics"}]},"page.getnavigationhistory":{"keyword":"Page.getNavigationHistory","pageReferences":[{"domain":"Page","type":"4","description":"Returns navigation history for the current page.","domainHref":"tot/Page/","href":"#method-getNavigationHistory"}]},"page.resetnavigationhistory":{"keyword":"Page.resetNavigationHistory","pageReferences":[{"domain":"Page","type":"4","description":"Resets navigation history for the current page.","domainHref":"tot/Page/","href":"#method-resetNavigationHistory"}]},"page.getresourcecontent":{"keyword":"Page.getResourceContent","pageReferences":[{"domain":"Page","type":"4","description":"Returns content of the given resource.","domainHref":"tot/Page/","href":"#method-getResourceContent"}]},"page.getresourcetree":{"keyword":"Page.getResourceTree","pageReferences":[{"domain":"Page","type":"4","description":"Returns present frame / resource tree structure.","domainHref":"tot/Page/","href":"#method-getResourceTree"}]},"page.handlejavascriptdialog":{"keyword":"Page.handleJavaScriptDialog","pageReferences":[{"domain":"Page","type":"4","description":"Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).","domainHref":"tot/Page/","href":"#method-handleJavaScriptDialog"}]},"page.navigate":{"keyword":"Page.navigate","pageReferences":[{"domain":"Page","type":"4","description":"Navigates current page to the given URL.","domainHref":"tot/Page/","href":"#method-navigate"}]},"page.navigatetohistoryentry":{"keyword":"Page.navigateToHistoryEntry","pageReferences":[{"domain":"Page","type":"4","description":"Navigates current page to the given history entry.","domainHref":"tot/Page/","href":"#method-navigateToHistoryEntry"}]},"page.printtopdf":{"keyword":"Page.printToPDF","pageReferences":[{"domain":"Page","type":"4","description":"Print page as PDF.","domainHref":"tot/Page/","href":"#method-printToPDF"}]},"page.reload":{"keyword":"Page.reload","pageReferences":[{"domain":"Page","type":"4","description":"Reloads given page optionally ignoring the cache.","domainHref":"tot/Page/","href":"#method-reload"}]},"page.removescripttoevaluateonload":{"keyword":"Page.removeScriptToEvaluateOnLoad","pageReferences":[{"domain":"Page","type":"4","description":"Deprecated, please use removeScriptToEvaluateOnNewDocument instead.","domainHref":"tot/Page/","href":"#method-removeScriptToEvaluateOnLoad"}]},"page.removescripttoevaluateonnewdocument":{"keyword":"Page.removeScriptToEvaluateOnNewDocument","pageReferences":[{"domain":"Page","type":"4","description":"Removes given script from the list.","domainHref":"tot/Page/","href":"#method-removeScriptToEvaluateOnNewDocument"}]},"page.screencastframeack":{"keyword":"Page.screencastFrameAck","pageReferences":[{"domain":"Page","type":"4","description":"Acknowledges that a screencast frame has been received by the frontend.","domainHref":"tot/Page/","href":"#method-screencastFrameAck"}]},"page.searchinresource":{"keyword":"Page.searchInResource","pageReferences":[{"domain":"Page","type":"4","description":"Searches for given string in resource content.","domainHref":"tot/Page/","href":"#method-searchInResource"}]},"page.setadblockingenabled":{"keyword":"Page.setAdBlockingEnabled","pageReferences":[{"domain":"Page","type":"4","description":"Enable Chrome's experimental ad filter on all sites.","domainHref":"tot/Page/","href":"#method-setAdBlockingEnabled"}]},"page.setbypasscsp":{"keyword":"Page.setBypassCSP","pageReferences":[{"domain":"Page","type":"4","description":"Enable page Content Security Policy by-passing.","domainHref":"tot/Page/","href":"#method-setBypassCSP"}]},"page.getpermissionspolicystate":{"keyword":"Page.getPermissionsPolicyState","pageReferences":[{"domain":"Page","type":"4","description":"Get Permissions Policy state on given frame.","domainHref":"tot/Page/","href":"#method-getPermissionsPolicyState"}]},"page.getorigintrials":{"keyword":"Page.getOriginTrials","pageReferences":[{"domain":"Page","type":"4","description":"Get Origin Trials on given frame.","domainHref":"tot/Page/","href":"#method-getOriginTrials"}]},"page.setdevicemetricsoverride":{"keyword":"Page.setDeviceMetricsOverride","pageReferences":[{"domain":"Page","type":"4","description":"Overrides the values of device screen dimensions (window.screen.width, window.screen.height,\nwindow.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media\nquery results).","domainHref":"tot/Page/","href":"#method-setDeviceMetricsOverride"}]},"page.setdeviceorientationoverride":{"keyword":"Page.setDeviceOrientationOverride","pageReferences":[{"domain":"Page","type":"4","description":"Overrides the Device Orientation.","domainHref":"tot/Page/","href":"#method-setDeviceOrientationOverride"}]},"page.setfontfamilies":{"keyword":"Page.setFontFamilies","pageReferences":[{"domain":"Page","type":"4","description":"Set generic font families.","domainHref":"tot/Page/","href":"#method-setFontFamilies"}]},"page.setfontsizes":{"keyword":"Page.setFontSizes","pageReferences":[{"domain":"Page","type":"4","description":"Set default font sizes.","domainHref":"tot/Page/","href":"#method-setFontSizes"}]},"page.setdocumentcontent":{"keyword":"Page.setDocumentContent","pageReferences":[{"domain":"Page","type":"4","description":"Sets given markup as the document's HTML.","domainHref":"tot/Page/","href":"#method-setDocumentContent"}]},"page.setdownloadbehavior":{"keyword":"Page.setDownloadBehavior","pageReferences":[{"domain":"Page","type":"4","description":"Set the behavior when downloading a file.","domainHref":"tot/Page/","href":"#method-setDownloadBehavior"}]},"page.setgeolocationoverride":{"keyword":"Page.setGeolocationOverride","pageReferences":[{"domain":"Page","type":"4","description":"Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position\nunavailable.","domainHref":"tot/Page/","href":"#method-setGeolocationOverride"}]},"page.setlifecycleeventsenabled":{"keyword":"Page.setLifecycleEventsEnabled","pageReferences":[{"domain":"Page","type":"4","description":"Controls whether page will emit lifecycle events.","domainHref":"tot/Page/","href":"#method-setLifecycleEventsEnabled"}]},"page.settouchemulationenabled":{"keyword":"Page.setTouchEmulationEnabled","pageReferences":[{"domain":"Page","type":"4","description":"Toggles mouse event-based touch event emulation.","domainHref":"tot/Page/","href":"#method-setTouchEmulationEnabled"}]},"page.startscreencast":{"keyword":"Page.startScreencast","pageReferences":[{"domain":"Page","type":"4","description":"Starts sending each frame using the `screencastFrame` event.","domainHref":"tot/Page/","href":"#method-startScreencast"}]},"page.stoploading":{"keyword":"Page.stopLoading","pageReferences":[{"domain":"Page","type":"4","description":"Force the page stop all navigations and pending resource fetches.","domainHref":"tot/Page/","href":"#method-stopLoading"}]},"page.crash":{"keyword":"Page.crash","pageReferences":[{"domain":"Page","type":"4","description":"Crashes renderer on the IO thread, generates minidumps.","domainHref":"tot/Page/","href":"#method-crash"}]},"page.close":{"keyword":"Page.close","pageReferences":[{"domain":"Page","type":"4","description":"Tries to close page, running its beforeunload hooks, if any.","domainHref":"tot/Page/","href":"#method-close"}]},"page.setweblifecyclestate":{"keyword":"Page.setWebLifecycleState","pageReferences":[{"domain":"Page","type":"4","description":"Tries to update the web lifecycle state of the page.\nIt will transition the page to the given state according to:\nhttps://github.com/WICG/web-lifecycle/","domainHref":"tot/Page/","href":"#method-setWebLifecycleState"}]},"page.stopscreencast":{"keyword":"Page.stopScreencast","pageReferences":[{"domain":"Page","type":"4","description":"Stops sending each frame in the `screencastFrame`.","domainHref":"tot/Page/","href":"#method-stopScreencast"}]},"page.producecompilationcache":{"keyword":"Page.produceCompilationCache","pageReferences":[{"domain":"Page","type":"4","description":"Requests backend to produce compilation cache for the specified scripts.\n`scripts` are appended to the list of scripts for which the cache\nwould be produced. The list may be reset during page navigati...","domainHref":"tot/Page/","href":"#method-produceCompilationCache"}]},"page.addcompilationcache":{"keyword":"Page.addCompilationCache","pageReferences":[{"domain":"Page","type":"4","description":"Seeds compilation cache for given url. Compilation cache does not survive\ncross-process navigation.","domainHref":"tot/Page/","href":"#method-addCompilationCache"}]},"page.clearcompilationcache":{"keyword":"Page.clearCompilationCache","pageReferences":[{"domain":"Page","type":"4","description":"Clears seeded compilation cache.","domainHref":"tot/Page/","href":"#method-clearCompilationCache"}]},"page.setspctransactionmode":{"keyword":"Page.setSPCTransactionMode","pageReferences":[{"domain":"Page","type":"4","description":"Sets the Secure Payment Confirmation transaction mode.\nhttps://w3c.github.io/secure-payment-confirmation/#sctn-automation-set-spc-transaction-mode","domainHref":"tot/Page/","href":"#method-setSPCTransactionMode"}]},"page.setrphregistrationmode":{"keyword":"Page.setRPHRegistrationMode","pageReferences":[{"domain":"Page","type":"4","description":"Extensions for Custom Handlers API:\nhttps://html.spec.whatwg.org/multipage/system-state.html#rph-automation","domainHref":"tot/Page/","href":"#method-setRPHRegistrationMode"}]},"page.generatetestreport":{"keyword":"Page.generateTestReport","pageReferences":[{"domain":"Page","type":"4","description":"Generates a report for testing.","domainHref":"tot/Page/","href":"#method-generateTestReport"}]},"page.waitfordebugger":{"keyword":"Page.waitForDebugger","pageReferences":[{"domain":"Page","type":"4","description":"Pauses page execution. Can be resumed using generic Runtime.runIfWaitingForDebugger.","domainHref":"tot/Page/","href":"#method-waitForDebugger"}]},"page.setinterceptfilechooserdialog":{"keyword":"Page.setInterceptFileChooserDialog","pageReferences":[{"domain":"Page","type":"4","description":"Intercept file chooser requests and transfer control to protocol clients.\nWhen file chooser interception is enabled, native file chooser dialog is not shown.\nInstead, a protocol event `Page.fileChoose...","domainHref":"tot/Page/","href":"#method-setInterceptFileChooserDialog"}]},"page.setprerenderingallowed":{"keyword":"Page.setPrerenderingAllowed","pageReferences":[{"domain":"Page","type":"4","description":"Enable/disable prerendering manually.\n\nThis command is a short-term solution for https://crbug.com/1440085.\nSee https://docs.google.com/document/d/12HVmFxYj5Jc-eJr5OmWsa2bqTJsbgGLKI6ZIyx0_wpA\nfor more...","domainHref":"tot/Page/","href":"#method-setPrerenderingAllowed"}]},"page.domcontenteventfired":{"keyword":"Page.domContentEventFired","pageReferences":[{"domain":"Page","type":"1","domainHref":"tot/Page/","href":"#event-domContentEventFired"}]},"page.filechooseropened":{"keyword":"Page.fileChooserOpened","pageReferences":[{"domain":"Page","type":"1","description":"Emitted only when `page.interceptFileChooser` is enabled.","domainHref":"tot/Page/","href":"#event-fileChooserOpened"}]},"page.frameattached":{"keyword":"Page.frameAttached","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has been attached to its parent.","domainHref":"tot/Page/","href":"#event-frameAttached"}]},"page.frameclearedschedulednavigation":{"keyword":"Page.frameClearedScheduledNavigation","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame no longer has a scheduled navigation.","domainHref":"tot/Page/","href":"#event-frameClearedScheduledNavigation"}]},"page.framedetached":{"keyword":"Page.frameDetached","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has been detached from its parent.","domainHref":"tot/Page/","href":"#event-frameDetached"}]},"page.framesubtreewillbedetached":{"keyword":"Page.frameSubtreeWillBeDetached","pageReferences":[{"domain":"Page","type":"1","description":"Fired before frame subtree is detached. Emitted before any frame of the\nsubtree is actually detached.","domainHref":"tot/Page/","href":"#event-frameSubtreeWillBeDetached"}]},"page.framenavigated":{"keyword":"Page.frameNavigated","pageReferences":[{"domain":"Page","type":"1","description":"Fired once navigation of the frame has completed. Frame is now associated with the new loader.","domainHref":"tot/Page/","href":"#event-frameNavigated"}]},"page.documentopened":{"keyword":"Page.documentOpened","pageReferences":[{"domain":"Page","type":"1","description":"Fired when opening document to write to.","domainHref":"tot/Page/","href":"#event-documentOpened"}]},"page.frameresized":{"keyword":"Page.frameResized","pageReferences":[{"domain":"Page","type":"1","domainHref":"tot/Page/","href":"#event-frameResized"}]},"page.framestartednavigating":{"keyword":"Page.frameStartedNavigating","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a navigation starts. This event is fired for both\nrenderer-initiated and browser-initiated navigations. For renderer-initiated\nnavigations, the event is fired after `frameRequestedNavigatio...","domainHref":"tot/Page/","href":"#event-frameStartedNavigating"}]},"page.framerequestednavigation":{"keyword":"Page.frameRequestedNavigation","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a renderer-initiated navigation is requested.\nNavigation may still be cancelled after the event is issued.","domainHref":"tot/Page/","href":"#event-frameRequestedNavigation"}]},"page.frameschedulednavigation":{"keyword":"Page.frameScheduledNavigation","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame schedules a potential navigation.","domainHref":"tot/Page/","href":"#event-frameScheduledNavigation"}]},"page.framestartedloading":{"keyword":"Page.frameStartedLoading","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has started loading.","domainHref":"tot/Page/","href":"#event-frameStartedLoading"}]},"page.framestoppedloading":{"keyword":"Page.frameStoppedLoading","pageReferences":[{"domain":"Page","type":"1","description":"Fired when frame has stopped loading.","domainHref":"tot/Page/","href":"#event-frameStoppedLoading"}]},"page.downloadwillbegin":{"keyword":"Page.downloadWillBegin","pageReferences":[{"domain":"Page","type":"1","description":"Fired when page is about to start a download.\nDeprecated. Use Browser.downloadWillBegin instead.","domainHref":"tot/Page/","href":"#event-downloadWillBegin"}]},"page.downloadprogress":{"keyword":"Page.downloadProgress","pageReferences":[{"domain":"Page","type":"1","description":"Fired when download makes progress. Last call has |done| == true.\nDeprecated. Use Browser.downloadProgress instead.","domainHref":"tot/Page/","href":"#event-downloadProgress"}]},"page.interstitialhidden":{"keyword":"Page.interstitialHidden","pageReferences":[{"domain":"Page","type":"1","description":"Fired when interstitial page was hidden","domainHref":"tot/Page/","href":"#event-interstitialHidden"}]},"page.interstitialshown":{"keyword":"Page.interstitialShown","pageReferences":[{"domain":"Page","type":"1","description":"Fired when interstitial page was shown","domainHref":"tot/Page/","href":"#event-interstitialShown"}]},"page.javascriptdialogclosed":{"keyword":"Page.javascriptDialogClosed","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been\nclosed.","domainHref":"tot/Page/","href":"#event-javascriptDialogClosed"}]},"page.javascriptdialogopening":{"keyword":"Page.javascriptDialogOpening","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to\nopen.","domainHref":"tot/Page/","href":"#event-javascriptDialogOpening"}]},"page.lifecycleevent":{"keyword":"Page.lifecycleEvent","pageReferences":[{"domain":"Page","type":"1","description":"Fired for lifecycle events (navigation, load, paint, etc) in the current\ntarget (including local frames).","domainHref":"tot/Page/","href":"#event-lifecycleEvent"}]},"page.backforwardcachenotused":{"keyword":"Page.backForwardCacheNotUsed","pageReferences":[{"domain":"Page","type":"1","description":"Fired for failed bfcache history navigations if BackForwardCache feature is enabled. Do\nnot assume any ordering with the Page.frameNavigated event. This event is fired only for\nmain-frame history navi...","domainHref":"tot/Page/","href":"#event-backForwardCacheNotUsed"}]},"page.loadeventfired":{"keyword":"Page.loadEventFired","pageReferences":[{"domain":"Page","type":"1","domainHref":"tot/Page/","href":"#event-loadEventFired"}]},"page.navigatedwithindocument":{"keyword":"Page.navigatedWithinDocument","pageReferences":[{"domain":"Page","type":"1","description":"Fired when same-document navigation happens, e.g. due to history API usage or anchor navigation.","domainHref":"tot/Page/","href":"#event-navigatedWithinDocument"}]},"page.screencastframe":{"keyword":"Page.screencastFrame","pageReferences":[{"domain":"Page","type":"1","description":"Compressed image data requested by the `startScreencast`.","domainHref":"tot/Page/","href":"#event-screencastFrame"}]},"page.screencastvisibilitychanged":{"keyword":"Page.screencastVisibilityChanged","pageReferences":[{"domain":"Page","type":"1","description":"Fired when the page with currently enabled screencast was shown or hidden `.","domainHref":"tot/Page/","href":"#event-screencastVisibilityChanged"}]},"page.windowopen":{"keyword":"Page.windowOpen","pageReferences":[{"domain":"Page","type":"1","description":"Fired when a new window is going to be opened, via window.open(), link click, form submission,\netc.","domainHref":"tot/Page/","href":"#event-windowOpen"}]},"page.compilationcacheproduced":{"keyword":"Page.compilationCacheProduced","pageReferences":[{"domain":"Page","type":"1","description":"Issued for every compilation cache generated. Is only available\nif Page.setGenerateCompilationCache is enabled.","domainHref":"tot/Page/","href":"#event-compilationCacheProduced"}]},"page.frameid":{"keyword":"Page.FrameId","pageReferences":[{"domain":"Page","type":"3","description":"Unique frame identifier.","domainHref":"tot/Page/","href":"#type-FrameId"}]},"page.adframetype":{"keyword":"Page.AdFrameType","pageReferences":[{"domain":"Page","type":"3","description":"Indicates whether a frame has been identified as an ad.","domainHref":"tot/Page/","href":"#type-AdFrameType"}]},"page.adframeexplanation":{"keyword":"Page.AdFrameExplanation","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-AdFrameExplanation"}]},"page.adframestatus":{"keyword":"Page.AdFrameStatus","pageReferences":[{"domain":"Page","type":"3","description":"Indicates whether a frame has been identified as an ad and why.","domainHref":"tot/Page/","href":"#type-AdFrameStatus"}]},"page.adscriptid":{"keyword":"Page.AdScriptId","pageReferences":[{"domain":"Page","type":"3","description":"Identifies the script which caused a script or frame to be labelled as an\nad.","domainHref":"tot/Page/","href":"#type-AdScriptId"}]},"page.adscriptancestry":{"keyword":"Page.AdScriptAncestry","pageReferences":[{"domain":"Page","type":"3","description":"Encapsulates the script ancestry and the root script filterlist rule that\ncaused the frame to be labelled as an ad. Only created when `ancestryChain`\nis not empty.","domainHref":"tot/Page/","href":"#type-AdScriptAncestry"}]},"page.securecontexttype":{"keyword":"Page.SecureContextType","pageReferences":[{"domain":"Page","type":"3","description":"Indicates whether the frame is a secure context and why it is the case.","domainHref":"tot/Page/","href":"#type-SecureContextType"}]},"page.crossoriginisolatedcontexttype":{"keyword":"Page.CrossOriginIsolatedContextType","pageReferences":[{"domain":"Page","type":"3","description":"Indicates whether the frame is cross-origin isolated and why it is the case.","domainHref":"tot/Page/","href":"#type-CrossOriginIsolatedContextType"}]},"page.gatedapifeatures":{"keyword":"Page.GatedAPIFeatures","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-GatedAPIFeatures"}]},"page.permissionspolicyfeature":{"keyword":"Page.PermissionsPolicyFeature","pageReferences":[{"domain":"Page","type":"3","description":"All Permissions Policy features. This enum should match the one defined\nin services/network/public/cpp/permissions_policy/permissions_policy_features.json5.\nLINT.IfChange(PermissionsPolicyFeature)","domainHref":"tot/Page/","href":"#type-PermissionsPolicyFeature"}]},"page.permissionspolicyblockreason":{"keyword":"Page.PermissionsPolicyBlockReason","pageReferences":[{"domain":"Page","type":"3","description":"Reason for a permissions policy feature to be disabled.","domainHref":"tot/Page/","href":"#type-PermissionsPolicyBlockReason"}]},"page.permissionspolicyblocklocator":{"keyword":"Page.PermissionsPolicyBlockLocator","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-PermissionsPolicyBlockLocator"}]},"page.permissionspolicyfeaturestate":{"keyword":"Page.PermissionsPolicyFeatureState","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-PermissionsPolicyFeatureState"}]},"page.origintrialtokenstatus":{"keyword":"Page.OriginTrialTokenStatus","pageReferences":[{"domain":"Page","type":"3","description":"Origin Trial(https://www.chromium.org/blink/origin-trials) support.\nStatus for an Origin Trial token.","domainHref":"tot/Page/","href":"#type-OriginTrialTokenStatus"}]},"page.origintrialstatus":{"keyword":"Page.OriginTrialStatus","pageReferences":[{"domain":"Page","type":"3","description":"Status for an Origin Trial.","domainHref":"tot/Page/","href":"#type-OriginTrialStatus"}]},"page.origintrialusagerestriction":{"keyword":"Page.OriginTrialUsageRestriction","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-OriginTrialUsageRestriction"}]},"page.origintrialtoken":{"keyword":"Page.OriginTrialToken","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-OriginTrialToken"}]},"page.origintrialtokenwithstatus":{"keyword":"Page.OriginTrialTokenWithStatus","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-OriginTrialTokenWithStatus"}]},"page.origintrial":{"keyword":"Page.OriginTrial","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-OriginTrial"}]},"page.securityorigindetails":{"keyword":"Page.SecurityOriginDetails","pageReferences":[{"domain":"Page","type":"3","description":"Additional information about the frame document's security origin.","domainHref":"tot/Page/","href":"#type-SecurityOriginDetails"}]},"page.frame":{"keyword":"Page.Frame","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Frame on the page.","domainHref":"tot/Page/","href":"#type-Frame"}]},"page.frameresource":{"keyword":"Page.FrameResource","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Resource on the page.","domainHref":"tot/Page/","href":"#type-FrameResource"}]},"page.frameresourcetree":{"keyword":"Page.FrameResourceTree","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Frame hierarchy along with their cached resources.","domainHref":"tot/Page/","href":"#type-FrameResourceTree"}]},"page.frametree":{"keyword":"Page.FrameTree","pageReferences":[{"domain":"Page","type":"3","description":"Information about the Frame hierarchy.","domainHref":"tot/Page/","href":"#type-FrameTree"}]},"page.scriptidentifier":{"keyword":"Page.ScriptIdentifier","pageReferences":[{"domain":"Page","type":"3","description":"Unique script identifier.","domainHref":"tot/Page/","href":"#type-ScriptIdentifier"}]},"page.transitiontype":{"keyword":"Page.TransitionType","pageReferences":[{"domain":"Page","type":"3","description":"Transition type.","domainHref":"tot/Page/","href":"#type-TransitionType"}]},"page.navigationentry":{"keyword":"Page.NavigationEntry","pageReferences":[{"domain":"Page","type":"3","description":"Navigation history entry.","domainHref":"tot/Page/","href":"#type-NavigationEntry"}]},"page.screencastframemetadata":{"keyword":"Page.ScreencastFrameMetadata","pageReferences":[{"domain":"Page","type":"3","description":"Screencast frame metadata.","domainHref":"tot/Page/","href":"#type-ScreencastFrameMetadata"}]},"page.dialogtype":{"keyword":"Page.DialogType","pageReferences":[{"domain":"Page","type":"3","description":"Javascript dialog type.","domainHref":"tot/Page/","href":"#type-DialogType"}]},"page.appmanifesterror":{"keyword":"Page.AppManifestError","pageReferences":[{"domain":"Page","type":"3","description":"Error while paring app manifest.","domainHref":"tot/Page/","href":"#type-AppManifestError"}]},"page.appmanifestparsedproperties":{"keyword":"Page.AppManifestParsedProperties","pageReferences":[{"domain":"Page","type":"3","description":"Parsed app manifest properties.","domainHref":"tot/Page/","href":"#type-AppManifestParsedProperties"}]},"page.layoutviewport":{"keyword":"Page.LayoutViewport","pageReferences":[{"domain":"Page","type":"3","description":"Layout viewport position and dimensions.","domainHref":"tot/Page/","href":"#type-LayoutViewport"}]},"page.visualviewport":{"keyword":"Page.VisualViewport","pageReferences":[{"domain":"Page","type":"3","description":"Visual viewport position, dimensions, and scale.","domainHref":"tot/Page/","href":"#type-VisualViewport"}]},"page.viewport":{"keyword":"Page.Viewport","pageReferences":[{"domain":"Page","type":"3","description":"Viewport for capturing screenshot.","domainHref":"tot/Page/","href":"#type-Viewport"}]},"page.fontfamilies":{"keyword":"Page.FontFamilies","pageReferences":[{"domain":"Page","type":"3","description":"Generic font families collection.","domainHref":"tot/Page/","href":"#type-FontFamilies"}]},"page.scriptfontfamilies":{"keyword":"Page.ScriptFontFamilies","pageReferences":[{"domain":"Page","type":"3","description":"Font families collection for a script.","domainHref":"tot/Page/","href":"#type-ScriptFontFamilies"}]},"page.fontsizes":{"keyword":"Page.FontSizes","pageReferences":[{"domain":"Page","type":"3","description":"Default font sizes.","domainHref":"tot/Page/","href":"#type-FontSizes"}]},"page.clientnavigationreason":{"keyword":"Page.ClientNavigationReason","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-ClientNavigationReason"}]},"page.clientnavigationdisposition":{"keyword":"Page.ClientNavigationDisposition","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-ClientNavigationDisposition"}]},"page.installabilityerrorargument":{"keyword":"Page.InstallabilityErrorArgument","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-InstallabilityErrorArgument"}]},"page.installabilityerror":{"keyword":"Page.InstallabilityError","pageReferences":[{"domain":"Page","type":"3","description":"The installability error","domainHref":"tot/Page/","href":"#type-InstallabilityError"}]},"page.referrerpolicy":{"keyword":"Page.ReferrerPolicy","pageReferences":[{"domain":"Page","type":"3","description":"The referring-policy used for the navigation.","domainHref":"tot/Page/","href":"#type-ReferrerPolicy"}]},"page.compilationcacheparams":{"keyword":"Page.CompilationCacheParams","pageReferences":[{"domain":"Page","type":"3","description":"Per-script compilation cache parameters for `Page.produceCompilationCache`","domainHref":"tot/Page/","href":"#type-CompilationCacheParams"}]},"page.filefilter":{"keyword":"Page.FileFilter","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-FileFilter"}]},"page.filehandler":{"keyword":"Page.FileHandler","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-FileHandler"}]},"page.imageresource":{"keyword":"Page.ImageResource","pageReferences":[{"domain":"Page","type":"3","description":"The image definition used in both icon and screenshot.","domainHref":"tot/Page/","href":"#type-ImageResource"}]},"page.launchhandler":{"keyword":"Page.LaunchHandler","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-LaunchHandler"}]},"page.protocolhandler":{"keyword":"Page.ProtocolHandler","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-ProtocolHandler"}]},"page.relatedapplication":{"keyword":"Page.RelatedApplication","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-RelatedApplication"}]},"page.scopeextension":{"keyword":"Page.ScopeExtension","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-ScopeExtension"}]},"page.screenshot":{"keyword":"Page.Screenshot","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-Screenshot"}]},"page.sharetarget":{"keyword":"Page.ShareTarget","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-ShareTarget"}]},"page.shortcut":{"keyword":"Page.Shortcut","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-Shortcut"}]},"page.webappmanifest":{"keyword":"Page.WebAppManifest","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-WebAppManifest"}]},"page.navigationtype":{"keyword":"Page.NavigationType","pageReferences":[{"domain":"Page","type":"3","description":"The type of a frameNavigated event.","domainHref":"tot/Page/","href":"#type-NavigationType"}]},"page.backforwardcachenotrestoredreason":{"keyword":"Page.BackForwardCacheNotRestoredReason","pageReferences":[{"domain":"Page","type":"3","description":"List of not restored reasons for back-forward cache.","domainHref":"tot/Page/","href":"#type-BackForwardCacheNotRestoredReason"}]},"page.backforwardcachenotrestoredreasontype":{"keyword":"Page.BackForwardCacheNotRestoredReasonType","pageReferences":[{"domain":"Page","type":"3","description":"Types of not restored reasons for back-forward cache.","domainHref":"tot/Page/","href":"#type-BackForwardCacheNotRestoredReasonType"}]},"page.backforwardcacheblockingdetails":{"keyword":"Page.BackForwardCacheBlockingDetails","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-BackForwardCacheBlockingDetails"}]},"page.backforwardcachenotrestoredexplanation":{"keyword":"Page.BackForwardCacheNotRestoredExplanation","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-BackForwardCacheNotRestoredExplanation"}]},"page.backforwardcachenotrestoredexplanationtree":{"keyword":"Page.BackForwardCacheNotRestoredExplanationTree","pageReferences":[{"domain":"Page","type":"3","domainHref":"tot/Page/","href":"#type-BackForwardCacheNotRestoredExplanationTree"}]},"performance":{"keyword":"Performance","pageReferences":[{"domain":"Performance","type":"0","domainHref":"tot/Performance/"}]},"performance.disable":{"keyword":"Performance.disable","pageReferences":[{"domain":"Performance","type":"4","description":"Disable collecting and reporting metrics.","domainHref":"tot/Performance/","href":"#method-disable"}]},"performance.enable":{"keyword":"Performance.enable","pageReferences":[{"domain":"Performance","type":"4","description":"Enable collecting and reporting metrics.","domainHref":"tot/Performance/","href":"#method-enable"}]},"performance.settimedomain":{"keyword":"Performance.setTimeDomain","pageReferences":[{"domain":"Performance","type":"4","description":"Sets time domain to use for collecting and reporting duration metrics.\nNote that this must be called before enabling metrics collection. Calling\nthis method while metrics collection is enabled returns...","domainHref":"tot/Performance/","href":"#method-setTimeDomain"}]},"performance.getmetrics":{"keyword":"Performance.getMetrics","pageReferences":[{"domain":"Performance","type":"4","description":"Retrieve current values of run-time metrics.","domainHref":"tot/Performance/","href":"#method-getMetrics"}]},"performance.metrics":{"keyword":"Performance.metrics","pageReferences":[{"domain":"Performance","type":"1","description":"Current values of the metrics.","domainHref":"tot/Performance/","href":"#event-metrics"}]},"performance.metric":{"keyword":"Performance.Metric","pageReferences":[{"domain":"Performance","type":"3","description":"Run-time execution metric.","domainHref":"tot/Performance/","href":"#type-Metric"}]},"performancetimeline":{"keyword":"PerformanceTimeline","pageReferences":[{"domain":"PerformanceTimeline","type":"0","description":"Reporting of performance timeline events, as specified in\nhttps://w3c.github.io/performance-timeline/#dom-performanceobserver.","domainHref":"tot/PerformanceTimeline/"}]},"performancetimeline.enable":{"keyword":"PerformanceTimeline.enable","pageReferences":[{"domain":"PerformanceTimeline","type":"4","description":"Previously buffered events would be reported before method returns.\nSee also: timelineEventAdded","domainHref":"tot/PerformanceTimeline/","href":"#method-enable"}]},"performancetimeline.timelineeventadded":{"keyword":"PerformanceTimeline.timelineEventAdded","pageReferences":[{"domain":"PerformanceTimeline","type":"1","description":"Sent when a performance timeline event is added. See reportPerformanceTimeline method.","domainHref":"tot/PerformanceTimeline/","href":"#event-timelineEventAdded"}]},"performancetimeline.largestcontentfulpaint":{"keyword":"PerformanceTimeline.LargestContentfulPaint","pageReferences":[{"domain":"PerformanceTimeline","type":"3","description":"See https://github.com/WICG/LargestContentfulPaint and largest_contentful_paint.idl","domainHref":"tot/PerformanceTimeline/","href":"#type-LargestContentfulPaint"}]},"performancetimeline.layoutshiftattribution":{"keyword":"PerformanceTimeline.LayoutShiftAttribution","pageReferences":[{"domain":"PerformanceTimeline","type":"3","domainHref":"tot/PerformanceTimeline/","href":"#type-LayoutShiftAttribution"}]},"performancetimeline.layoutshift":{"keyword":"PerformanceTimeline.LayoutShift","pageReferences":[{"domain":"PerformanceTimeline","type":"3","description":"See https://wicg.github.io/layout-instability/#sec-layout-shift and layout_shift.idl","domainHref":"tot/PerformanceTimeline/","href":"#type-LayoutShift"}]},"performancetimeline.timelineevent":{"keyword":"PerformanceTimeline.TimelineEvent","pageReferences":[{"domain":"PerformanceTimeline","type":"3","domainHref":"tot/PerformanceTimeline/","href":"#type-TimelineEvent"}]},"security":{"keyword":"Security","pageReferences":[{"domain":"Security","type":"0","description":"Security","domainHref":"tot/Security/"}]},"security.disable":{"keyword":"Security.disable","pageReferences":[{"domain":"Security","type":"4","description":"Disables tracking security state changes.","domainHref":"tot/Security/","href":"#method-disable"}]},"security.enable":{"keyword":"Security.enable","pageReferences":[{"domain":"Security","type":"4","description":"Enables tracking security state changes.","domainHref":"tot/Security/","href":"#method-enable"}]},"security.setignorecertificateerrors":{"keyword":"Security.setIgnoreCertificateErrors","pageReferences":[{"domain":"Security","type":"4","description":"Enable/disable whether all certificate errors should be ignored.","domainHref":"tot/Security/","href":"#method-setIgnoreCertificateErrors"}]},"security.handlecertificateerror":{"keyword":"Security.handleCertificateError","pageReferences":[{"domain":"Security","type":"4","description":"Handles a certificate error that fired a certificateError event.","domainHref":"tot/Security/","href":"#method-handleCertificateError"}]},"security.setoverridecertificateerrors":{"keyword":"Security.setOverrideCertificateErrors","pageReferences":[{"domain":"Security","type":"4","description":"Enable/disable overriding certificate errors. If enabled, all certificate error events need to\nbe handled by the DevTools client and should be answered with `handleCertificateError` commands.","domainHref":"tot/Security/","href":"#method-setOverrideCertificateErrors"}]},"security.certificateerror":{"keyword":"Security.certificateError","pageReferences":[{"domain":"Security","type":"1","description":"There is a certificate error. If overriding certificate errors is enabled, then it should be\nhandled with the `handleCertificateError` command. Note: this event does not fire if the\ncertificate error ...","domainHref":"tot/Security/","href":"#event-certificateError"}]},"security.visiblesecuritystatechanged":{"keyword":"Security.visibleSecurityStateChanged","pageReferences":[{"domain":"Security","type":"1","description":"The security state of the page changed.","domainHref":"tot/Security/","href":"#event-visibleSecurityStateChanged"}]},"security.securitystatechanged":{"keyword":"Security.securityStateChanged","pageReferences":[{"domain":"Security","type":"1","description":"The security state of the page changed. No longer being sent.","domainHref":"tot/Security/","href":"#event-securityStateChanged"}]},"security.certificateid":{"keyword":"Security.CertificateId","pageReferences":[{"domain":"Security","type":"3","description":"An internal certificate ID value.","domainHref":"tot/Security/","href":"#type-CertificateId"}]},"security.mixedcontenttype":{"keyword":"Security.MixedContentType","pageReferences":[{"domain":"Security","type":"3","description":"A description of mixed content (HTTP resources on HTTPS pages), as defined by\nhttps://www.w3.org/TR/mixed-content/#categories","domainHref":"tot/Security/","href":"#type-MixedContentType"}]},"security.securitystate":{"keyword":"Security.SecurityState","pageReferences":[{"domain":"Security","type":"3","description":"The security level of a page or resource.","domainHref":"tot/Security/","href":"#type-SecurityState"}]},"security.certificatesecuritystate":{"keyword":"Security.CertificateSecurityState","pageReferences":[{"domain":"Security","type":"3","description":"Details about the security state of the page certificate.","domainHref":"tot/Security/","href":"#type-CertificateSecurityState"}]},"security.safetytipstatus":{"keyword":"Security.SafetyTipStatus","pageReferences":[{"domain":"Security","type":"3","domainHref":"tot/Security/","href":"#type-SafetyTipStatus"}]},"security.safetytipinfo":{"keyword":"Security.SafetyTipInfo","pageReferences":[{"domain":"Security","type":"3","domainHref":"tot/Security/","href":"#type-SafetyTipInfo"}]},"security.visiblesecuritystate":{"keyword":"Security.VisibleSecurityState","pageReferences":[{"domain":"Security","type":"3","description":"Security state information about the page.","domainHref":"tot/Security/","href":"#type-VisibleSecurityState"}]},"security.securitystateexplanation":{"keyword":"Security.SecurityStateExplanation","pageReferences":[{"domain":"Security","type":"3","description":"An explanation of an factor contributing to the security state.","domainHref":"tot/Security/","href":"#type-SecurityStateExplanation"}]},"security.insecurecontentstatus":{"keyword":"Security.InsecureContentStatus","pageReferences":[{"domain":"Security","type":"3","description":"Information about insecure content on the page.","domainHref":"tot/Security/","href":"#type-InsecureContentStatus"}]},"security.certificateerroraction":{"keyword":"Security.CertificateErrorAction","pageReferences":[{"domain":"Security","type":"3","description":"The action to take when a certificate error occurs. continue will continue processing the\nrequest and cancel will cancel the request.","domainHref":"tot/Security/","href":"#type-CertificateErrorAction"}]},"serviceworker":{"keyword":"ServiceWorker","pageReferences":[{"domain":"ServiceWorker","type":"0","domainHref":"tot/ServiceWorker/"}]},"serviceworker.deliverpushmessage":{"keyword":"ServiceWorker.deliverPushMessage","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-deliverPushMessage"}]},"serviceworker.disable":{"keyword":"ServiceWorker.disable","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-disable"}]},"serviceworker.dispatchsyncevent":{"keyword":"ServiceWorker.dispatchSyncEvent","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-dispatchSyncEvent"}]},"serviceworker.dispatchperiodicsyncevent":{"keyword":"ServiceWorker.dispatchPeriodicSyncEvent","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-dispatchPeriodicSyncEvent"}]},"serviceworker.enable":{"keyword":"ServiceWorker.enable","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-enable"}]},"serviceworker.inspectworker":{"keyword":"ServiceWorker.inspectWorker","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-inspectWorker"}]},"serviceworker.setforceupdateonpageload":{"keyword":"ServiceWorker.setForceUpdateOnPageLoad","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-setForceUpdateOnPageLoad"}]},"serviceworker.skipwaiting":{"keyword":"ServiceWorker.skipWaiting","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-skipWaiting"}]},"serviceworker.startworker":{"keyword":"ServiceWorker.startWorker","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-startWorker"}]},"serviceworker.stopallworkers":{"keyword":"ServiceWorker.stopAllWorkers","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-stopAllWorkers"}]},"serviceworker.stopworker":{"keyword":"ServiceWorker.stopWorker","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-stopWorker"}]},"serviceworker.unregister":{"keyword":"ServiceWorker.unregister","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-unregister"}]},"serviceworker.updateregistration":{"keyword":"ServiceWorker.updateRegistration","pageReferences":[{"domain":"ServiceWorker","type":"4","domainHref":"tot/ServiceWorker/","href":"#method-updateRegistration"}]},"serviceworker.workererrorreported":{"keyword":"ServiceWorker.workerErrorReported","pageReferences":[{"domain":"ServiceWorker","type":"1","domainHref":"tot/ServiceWorker/","href":"#event-workerErrorReported"}]},"serviceworker.workerregistrationupdated":{"keyword":"ServiceWorker.workerRegistrationUpdated","pageReferences":[{"domain":"ServiceWorker","type":"1","domainHref":"tot/ServiceWorker/","href":"#event-workerRegistrationUpdated"}]},"serviceworker.workerversionupdated":{"keyword":"ServiceWorker.workerVersionUpdated","pageReferences":[{"domain":"ServiceWorker","type":"1","domainHref":"tot/ServiceWorker/","href":"#event-workerVersionUpdated"}]},"serviceworker.registrationid":{"keyword":"ServiceWorker.RegistrationID","pageReferences":[{"domain":"ServiceWorker","type":"3","domainHref":"tot/ServiceWorker/","href":"#type-RegistrationID"}]},"serviceworker.serviceworkerregistration":{"keyword":"ServiceWorker.ServiceWorkerRegistration","pageReferences":[{"domain":"ServiceWorker","type":"3","description":"ServiceWorker registration.","domainHref":"tot/ServiceWorker/","href":"#type-ServiceWorkerRegistration"}]},"serviceworker.serviceworkerversionrunningstatus":{"keyword":"ServiceWorker.ServiceWorkerVersionRunningStatus","pageReferences":[{"domain":"ServiceWorker","type":"3","domainHref":"tot/ServiceWorker/","href":"#type-ServiceWorkerVersionRunningStatus"}]},"serviceworker.serviceworkerversionstatus":{"keyword":"ServiceWorker.ServiceWorkerVersionStatus","pageReferences":[{"domain":"ServiceWorker","type":"3","domainHref":"tot/ServiceWorker/","href":"#type-ServiceWorkerVersionStatus"}]},"serviceworker.serviceworkerversion":{"keyword":"ServiceWorker.ServiceWorkerVersion","pageReferences":[{"domain":"ServiceWorker","type":"3","description":"ServiceWorker version.","domainHref":"tot/ServiceWorker/","href":"#type-ServiceWorkerVersion"}]},"serviceworker.serviceworkererrormessage":{"keyword":"ServiceWorker.ServiceWorkerErrorMessage","pageReferences":[{"domain":"ServiceWorker","type":"3","description":"ServiceWorker error message.","domainHref":"tot/ServiceWorker/","href":"#type-ServiceWorkerErrorMessage"}]},"storage":{"keyword":"Storage","pageReferences":[{"domain":"Storage","type":"0","domainHref":"tot/Storage/"}]},"storage.getstoragekeyforframe":{"keyword":"Storage.getStorageKeyForFrame","pageReferences":[{"domain":"Storage","type":"4","description":"Returns a storage key given a frame id.","domainHref":"tot/Storage/","href":"#method-getStorageKeyForFrame"}]},"storage.cleardatafororigin":{"keyword":"Storage.clearDataForOrigin","pageReferences":[{"domain":"Storage","type":"4","description":"Clears storage for origin.","domainHref":"tot/Storage/","href":"#method-clearDataForOrigin"}]},"storage.cleardataforstoragekey":{"keyword":"Storage.clearDataForStorageKey","pageReferences":[{"domain":"Storage","type":"4","description":"Clears storage for storage key.","domainHref":"tot/Storage/","href":"#method-clearDataForStorageKey"}]},"storage.getcookies":{"keyword":"Storage.getCookies","pageReferences":[{"domain":"Storage","type":"4","description":"Returns all browser cookies.","domainHref":"tot/Storage/","href":"#method-getCookies"}]},"storage.setcookies":{"keyword":"Storage.setCookies","pageReferences":[{"domain":"Storage","type":"4","description":"Sets given cookies.","domainHref":"tot/Storage/","href":"#method-setCookies"}]},"storage.clearcookies":{"keyword":"Storage.clearCookies","pageReferences":[{"domain":"Storage","type":"4","description":"Clears cookies.","domainHref":"tot/Storage/","href":"#method-clearCookies"}]},"storage.getusageandquota":{"keyword":"Storage.getUsageAndQuota","pageReferences":[{"domain":"Storage","type":"4","description":"Returns usage and quota in bytes.","domainHref":"tot/Storage/","href":"#method-getUsageAndQuota"}]},"storage.overridequotafororigin":{"keyword":"Storage.overrideQuotaForOrigin","pageReferences":[{"domain":"Storage","type":"4","description":"Override quota for the specified origin","domainHref":"tot/Storage/","href":"#method-overrideQuotaForOrigin"}]},"storage.trackcachestoragefororigin":{"keyword":"Storage.trackCacheStorageForOrigin","pageReferences":[{"domain":"Storage","type":"4","description":"Registers origin to be notified when an update occurs to its cache storage list.","domainHref":"tot/Storage/","href":"#method-trackCacheStorageForOrigin"}]},"storage.trackcachestorageforstoragekey":{"keyword":"Storage.trackCacheStorageForStorageKey","pageReferences":[{"domain":"Storage","type":"4","description":"Registers storage key to be notified when an update occurs to its cache storage list.","domainHref":"tot/Storage/","href":"#method-trackCacheStorageForStorageKey"}]},"storage.trackindexeddbfororigin":{"keyword":"Storage.trackIndexedDBForOrigin","pageReferences":[{"domain":"Storage","type":"4","description":"Registers origin to be notified when an update occurs to its IndexedDB.","domainHref":"tot/Storage/","href":"#method-trackIndexedDBForOrigin"}]},"storage.trackindexeddbforstoragekey":{"keyword":"Storage.trackIndexedDBForStorageKey","pageReferences":[{"domain":"Storage","type":"4","description":"Registers storage key to be notified when an update occurs to its IndexedDB.","domainHref":"tot/Storage/","href":"#method-trackIndexedDBForStorageKey"}]},"storage.untrackcachestoragefororigin":{"keyword":"Storage.untrackCacheStorageForOrigin","pageReferences":[{"domain":"Storage","type":"4","description":"Unregisters origin from receiving notifications for cache storage.","domainHref":"tot/Storage/","href":"#method-untrackCacheStorageForOrigin"}]},"storage.untrackcachestorageforstoragekey":{"keyword":"Storage.untrackCacheStorageForStorageKey","pageReferences":[{"domain":"Storage","type":"4","description":"Unregisters storage key from receiving notifications for cache storage.","domainHref":"tot/Storage/","href":"#method-untrackCacheStorageForStorageKey"}]},"storage.untrackindexeddbfororigin":{"keyword":"Storage.untrackIndexedDBForOrigin","pageReferences":[{"domain":"Storage","type":"4","description":"Unregisters origin from receiving notifications for IndexedDB.","domainHref":"tot/Storage/","href":"#method-untrackIndexedDBForOrigin"}]},"storage.untrackindexeddbforstoragekey":{"keyword":"Storage.untrackIndexedDBForStorageKey","pageReferences":[{"domain":"Storage","type":"4","description":"Unregisters storage key from receiving notifications for IndexedDB.","domainHref":"tot/Storage/","href":"#method-untrackIndexedDBForStorageKey"}]},"storage.gettrusttokens":{"keyword":"Storage.getTrustTokens","pageReferences":[{"domain":"Storage","type":"4","description":"Returns the number of stored Trust Tokens per issuer for the\ncurrent browsing context.","domainHref":"tot/Storage/","href":"#method-getTrustTokens"}]},"storage.cleartrusttokens":{"keyword":"Storage.clearTrustTokens","pageReferences":[{"domain":"Storage","type":"4","description":"Removes all Trust Tokens issued by the provided issuerOrigin.\nLeaves other stored data, including the issuer's Redemption Records, intact.","domainHref":"tot/Storage/","href":"#method-clearTrustTokens"}]},"storage.getinterestgroupdetails":{"keyword":"Storage.getInterestGroupDetails","pageReferences":[{"domain":"Storage","type":"4","description":"Gets details for a named interest group.","domainHref":"tot/Storage/","href":"#method-getInterestGroupDetails"}]},"storage.setinterestgrouptracking":{"keyword":"Storage.setInterestGroupTracking","pageReferences":[{"domain":"Storage","type":"4","description":"Enables/Disables issuing of interestGroupAccessed events.","domainHref":"tot/Storage/","href":"#method-setInterestGroupTracking"}]},"storage.setinterestgroupauctiontracking":{"keyword":"Storage.setInterestGroupAuctionTracking","pageReferences":[{"domain":"Storage","type":"4","description":"Enables/Disables issuing of interestGroupAuctionEventOccurred and\ninterestGroupAuctionNetworkRequestCreated.","domainHref":"tot/Storage/","href":"#method-setInterestGroupAuctionTracking"}]},"storage.getsharedstoragemetadata":{"keyword":"Storage.getSharedStorageMetadata","pageReferences":[{"domain":"Storage","type":"4","description":"Gets metadata for an origin's shared storage.","domainHref":"tot/Storage/","href":"#method-getSharedStorageMetadata"}]},"storage.getsharedstorageentries":{"keyword":"Storage.getSharedStorageEntries","pageReferences":[{"domain":"Storage","type":"4","description":"Gets the entries in an given origin's shared storage.","domainHref":"tot/Storage/","href":"#method-getSharedStorageEntries"}]},"storage.setsharedstorageentry":{"keyword":"Storage.setSharedStorageEntry","pageReferences":[{"domain":"Storage","type":"4","description":"Sets entry with `key` and `value` for a given origin's shared storage.","domainHref":"tot/Storage/","href":"#method-setSharedStorageEntry"}]},"storage.deletesharedstorageentry":{"keyword":"Storage.deleteSharedStorageEntry","pageReferences":[{"domain":"Storage","type":"4","description":"Deletes entry for `key` (if it exists) for a given origin's shared storage.","domainHref":"tot/Storage/","href":"#method-deleteSharedStorageEntry"}]},"storage.clearsharedstorageentries":{"keyword":"Storage.clearSharedStorageEntries","pageReferences":[{"domain":"Storage","type":"4","description":"Clears all entries for a given origin's shared storage.","domainHref":"tot/Storage/","href":"#method-clearSharedStorageEntries"}]},"storage.resetsharedstoragebudget":{"keyword":"Storage.resetSharedStorageBudget","pageReferences":[{"domain":"Storage","type":"4","description":"Resets the budget for `ownerOrigin` by clearing all budget withdrawals.","domainHref":"tot/Storage/","href":"#method-resetSharedStorageBudget"}]},"storage.setsharedstoragetracking":{"keyword":"Storage.setSharedStorageTracking","pageReferences":[{"domain":"Storage","type":"4","description":"Enables/disables issuing of sharedStorageAccessed events.","domainHref":"tot/Storage/","href":"#method-setSharedStorageTracking"}]},"storage.setstoragebuckettracking":{"keyword":"Storage.setStorageBucketTracking","pageReferences":[{"domain":"Storage","type":"4","description":"Set tracking for a storage key's buckets.","domainHref":"tot/Storage/","href":"#method-setStorageBucketTracking"}]},"storage.deletestoragebucket":{"keyword":"Storage.deleteStorageBucket","pageReferences":[{"domain":"Storage","type":"4","description":"Deletes the Storage Bucket with the given storage key and bucket name.","domainHref":"tot/Storage/","href":"#method-deleteStorageBucket"}]},"storage.runbouncetrackingmitigations":{"keyword":"Storage.runBounceTrackingMitigations","pageReferences":[{"domain":"Storage","type":"4","description":"Deletes state for sites identified as potential bounce trackers, immediately.","domainHref":"tot/Storage/","href":"#method-runBounceTrackingMitigations"}]},"storage.setattributionreportinglocaltestingmode":{"keyword":"Storage.setAttributionReportingLocalTestingMode","pageReferences":[{"domain":"Storage","type":"4","description":"https://wicg.github.io/attribution-reporting-api/","domainHref":"tot/Storage/","href":"#method-setAttributionReportingLocalTestingMode"}]},"storage.setattributionreportingtracking":{"keyword":"Storage.setAttributionReportingTracking","pageReferences":[{"domain":"Storage","type":"4","description":"Enables/disables issuing of Attribution Reporting events.","domainHref":"tot/Storage/","href":"#method-setAttributionReportingTracking"}]},"storage.sendpendingattributionreports":{"keyword":"Storage.sendPendingAttributionReports","pageReferences":[{"domain":"Storage","type":"4","description":"Sends all pending Attribution Reports immediately, regardless of their\nscheduled report time.","domainHref":"tot/Storage/","href":"#method-sendPendingAttributionReports"}]},"storage.getrelatedwebsitesets":{"keyword":"Storage.getRelatedWebsiteSets","pageReferences":[{"domain":"Storage","type":"4","description":"Returns the effective Related Website Sets in use by this profile for the browser\nsession. The effective Related Website Sets will not change during a browser session.","domainHref":"tot/Storage/","href":"#method-getRelatedWebsiteSets"}]},"storage.getaffectedurlsforthirdpartycookiemetadata":{"keyword":"Storage.getAffectedUrlsForThirdPartyCookieMetadata","pageReferences":[{"domain":"Storage","type":"4","description":"Returns the list of URLs from a page and its embedded resources that match\nexisting grace period URL pattern rules.\nhttps://developers.google.com/privacy-sandbox/cookies/temporary-exceptions/grace-per...","domainHref":"tot/Storage/","href":"#method-getAffectedUrlsForThirdPartyCookieMetadata"}]},"storage.setprotectedaudiencekanonymity":{"keyword":"Storage.setProtectedAudienceKAnonymity","pageReferences":[{"domain":"Storage","type":"4","domainHref":"tot/Storage/","href":"#method-setProtectedAudienceKAnonymity"}]},"storage.cachestoragecontentupdated":{"keyword":"Storage.cacheStorageContentUpdated","pageReferences":[{"domain":"Storage","type":"1","description":"A cache's contents have been modified.","domainHref":"tot/Storage/","href":"#event-cacheStorageContentUpdated"}]},"storage.cachestoragelistupdated":{"keyword":"Storage.cacheStorageListUpdated","pageReferences":[{"domain":"Storage","type":"1","description":"A cache has been added/deleted.","domainHref":"tot/Storage/","href":"#event-cacheStorageListUpdated"}]},"storage.indexeddbcontentupdated":{"keyword":"Storage.indexedDBContentUpdated","pageReferences":[{"domain":"Storage","type":"1","description":"The origin's IndexedDB object store has been modified.","domainHref":"tot/Storage/","href":"#event-indexedDBContentUpdated"}]},"storage.indexeddblistupdated":{"keyword":"Storage.indexedDBListUpdated","pageReferences":[{"domain":"Storage","type":"1","description":"The origin's IndexedDB database list has been modified.","domainHref":"tot/Storage/","href":"#event-indexedDBListUpdated"}]},"storage.interestgroupaccessed":{"keyword":"Storage.interestGroupAccessed","pageReferences":[{"domain":"Storage","type":"1","description":"One of the interest groups was accessed. Note that these events are global\nto all targets sharing an interest group store.","domainHref":"tot/Storage/","href":"#event-interestGroupAccessed"}]},"storage.interestgroupauctioneventoccurred":{"keyword":"Storage.interestGroupAuctionEventOccurred","pageReferences":[{"domain":"Storage","type":"1","description":"An auction involving interest groups is taking place. These events are\ntarget-specific.","domainHref":"tot/Storage/","href":"#event-interestGroupAuctionEventOccurred"}]},"storage.interestgroupauctionnetworkrequestcreated":{"keyword":"Storage.interestGroupAuctionNetworkRequestCreated","pageReferences":[{"domain":"Storage","type":"1","description":"Specifies which auctions a particular network fetch may be related to, and\nin what role. Note that it is not ordered with respect to\nNetwork.requestWillBeSent (but will happen before loadingFinished\nl...","domainHref":"tot/Storage/","href":"#event-interestGroupAuctionNetworkRequestCreated"}]},"storage.sharedstorageaccessed":{"keyword":"Storage.sharedStorageAccessed","pageReferences":[{"domain":"Storage","type":"1","description":"Shared storage was accessed by the associated page.\nThe following parameters are included in all events.","domainHref":"tot/Storage/","href":"#event-sharedStorageAccessed"}]},"storage.sharedstorageworkletoperationexecutionfinished":{"keyword":"Storage.sharedStorageWorkletOperationExecutionFinished","pageReferences":[{"domain":"Storage","type":"1","description":"A shared storage run or selectURL operation finished its execution.\nThe following parameters are included in all events.","domainHref":"tot/Storage/","href":"#event-sharedStorageWorkletOperationExecutionFinished"}]},"storage.storagebucketcreatedorupdated":{"keyword":"Storage.storageBucketCreatedOrUpdated","pageReferences":[{"domain":"Storage","type":"1","domainHref":"tot/Storage/","href":"#event-storageBucketCreatedOrUpdated"}]},"storage.storagebucketdeleted":{"keyword":"Storage.storageBucketDeleted","pageReferences":[{"domain":"Storage","type":"1","domainHref":"tot/Storage/","href":"#event-storageBucketDeleted"}]},"storage.attributionreportingsourceregistered":{"keyword":"Storage.attributionReportingSourceRegistered","pageReferences":[{"domain":"Storage","type":"1","domainHref":"tot/Storage/","href":"#event-attributionReportingSourceRegistered"}]},"storage.attributionreportingtriggerregistered":{"keyword":"Storage.attributionReportingTriggerRegistered","pageReferences":[{"domain":"Storage","type":"1","domainHref":"tot/Storage/","href":"#event-attributionReportingTriggerRegistered"}]},"storage.attributionreportingreportsent":{"keyword":"Storage.attributionReportingReportSent","pageReferences":[{"domain":"Storage","type":"1","domainHref":"tot/Storage/","href":"#event-attributionReportingReportSent"}]},"storage.attributionreportingverbosedebugreportsent":{"keyword":"Storage.attributionReportingVerboseDebugReportSent","pageReferences":[{"domain":"Storage","type":"1","domainHref":"tot/Storage/","href":"#event-attributionReportingVerboseDebugReportSent"}]},"storage.serializedstoragekey":{"keyword":"Storage.SerializedStorageKey","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-SerializedStorageKey"}]},"storage.storagetype":{"keyword":"Storage.StorageType","pageReferences":[{"domain":"Storage","type":"3","description":"Enum of possible storage types.","domainHref":"tot/Storage/","href":"#type-StorageType"}]},"storage.usagefortype":{"keyword":"Storage.UsageForType","pageReferences":[{"domain":"Storage","type":"3","description":"Usage for a storage type.","domainHref":"tot/Storage/","href":"#type-UsageForType"}]},"storage.trusttokens":{"keyword":"Storage.TrustTokens","pageReferences":[{"domain":"Storage","type":"3","description":"Pair of issuer origin and number of available (signed, but not used) Trust\nTokens from that issuer.","domainHref":"tot/Storage/","href":"#type-TrustTokens"}]},"storage.interestgroupauctionid":{"keyword":"Storage.InterestGroupAuctionId","pageReferences":[{"domain":"Storage","type":"3","description":"Protected audience interest group auction identifier.","domainHref":"tot/Storage/","href":"#type-InterestGroupAuctionId"}]},"storage.interestgroupaccesstype":{"keyword":"Storage.InterestGroupAccessType","pageReferences":[{"domain":"Storage","type":"3","description":"Enum of interest group access types.","domainHref":"tot/Storage/","href":"#type-InterestGroupAccessType"}]},"storage.interestgroupauctioneventtype":{"keyword":"Storage.InterestGroupAuctionEventType","pageReferences":[{"domain":"Storage","type":"3","description":"Enum of auction events.","domainHref":"tot/Storage/","href":"#type-InterestGroupAuctionEventType"}]},"storage.interestgroupauctionfetchtype":{"keyword":"Storage.InterestGroupAuctionFetchType","pageReferences":[{"domain":"Storage","type":"3","description":"Enum of network fetches auctions can do.","domainHref":"tot/Storage/","href":"#type-InterestGroupAuctionFetchType"}]},"storage.sharedstorageaccessscope":{"keyword":"Storage.SharedStorageAccessScope","pageReferences":[{"domain":"Storage","type":"3","description":"Enum of shared storage access scopes.","domainHref":"tot/Storage/","href":"#type-SharedStorageAccessScope"}]},"storage.sharedstorageaccessmethod":{"keyword":"Storage.SharedStorageAccessMethod","pageReferences":[{"domain":"Storage","type":"3","description":"Enum of shared storage access methods.","domainHref":"tot/Storage/","href":"#type-SharedStorageAccessMethod"}]},"storage.sharedstorageentry":{"keyword":"Storage.SharedStorageEntry","pageReferences":[{"domain":"Storage","type":"3","description":"Struct for a single key-value pair in an origin's shared storage.","domainHref":"tot/Storage/","href":"#type-SharedStorageEntry"}]},"storage.sharedstoragemetadata":{"keyword":"Storage.SharedStorageMetadata","pageReferences":[{"domain":"Storage","type":"3","description":"Details for an origin's shared storage.","domainHref":"tot/Storage/","href":"#type-SharedStorageMetadata"}]},"storage.sharedstorageprivateaggregationconfig":{"keyword":"Storage.SharedStoragePrivateAggregationConfig","pageReferences":[{"domain":"Storage","type":"3","description":"Represents a dictionary object passed in as privateAggregationConfig to\nrun or selectURL.","domainHref":"tot/Storage/","href":"#type-SharedStoragePrivateAggregationConfig"}]},"storage.sharedstoragereportingmetadata":{"keyword":"Storage.SharedStorageReportingMetadata","pageReferences":[{"domain":"Storage","type":"3","description":"Pair of reporting metadata details for a candidate URL for `selectURL()`.","domainHref":"tot/Storage/","href":"#type-SharedStorageReportingMetadata"}]},"storage.sharedstorageurlwithmetadata":{"keyword":"Storage.SharedStorageUrlWithMetadata","pageReferences":[{"domain":"Storage","type":"3","description":"Bundles a candidate URL with its reporting metadata.","domainHref":"tot/Storage/","href":"#type-SharedStorageUrlWithMetadata"}]},"storage.sharedstorageaccessparams":{"keyword":"Storage.SharedStorageAccessParams","pageReferences":[{"domain":"Storage","type":"3","description":"Bundles the parameters for shared storage access events whose\npresence/absence can vary according to SharedStorageAccessType.","domainHref":"tot/Storage/","href":"#type-SharedStorageAccessParams"}]},"storage.storagebucketsdurability":{"keyword":"Storage.StorageBucketsDurability","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-StorageBucketsDurability"}]},"storage.storagebucket":{"keyword":"Storage.StorageBucket","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-StorageBucket"}]},"storage.storagebucketinfo":{"keyword":"Storage.StorageBucketInfo","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-StorageBucketInfo"}]},"storage.attributionreportingsourcetype":{"keyword":"Storage.AttributionReportingSourceType","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingSourceType"}]},"storage.unsignedint64asbase10":{"keyword":"Storage.UnsignedInt64AsBase10","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-UnsignedInt64AsBase10"}]},"storage.unsignedint128asbase16":{"keyword":"Storage.UnsignedInt128AsBase16","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-UnsignedInt128AsBase16"}]},"storage.signedint64asbase10":{"keyword":"Storage.SignedInt64AsBase10","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-SignedInt64AsBase10"}]},"storage.attributionreportingfilterdataentry":{"keyword":"Storage.AttributionReportingFilterDataEntry","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingFilterDataEntry"}]},"storage.attributionreportingfilterconfig":{"keyword":"Storage.AttributionReportingFilterConfig","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingFilterConfig"}]},"storage.attributionreportingfilterpair":{"keyword":"Storage.AttributionReportingFilterPair","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingFilterPair"}]},"storage.attributionreportingaggregationkeysentry":{"keyword":"Storage.AttributionReportingAggregationKeysEntry","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregationKeysEntry"}]},"storage.attributionreportingeventreportwindows":{"keyword":"Storage.AttributionReportingEventReportWindows","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingEventReportWindows"}]},"storage.attributionreportingtriggerdatamatching":{"keyword":"Storage.AttributionReportingTriggerDataMatching","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingTriggerDataMatching"}]},"storage.attributionreportingaggregatabledebugreportingdata":{"keyword":"Storage.AttributionReportingAggregatableDebugReportingData","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableDebugReportingData"}]},"storage.attributionreportingaggregatabledebugreportingconfig":{"keyword":"Storage.AttributionReportingAggregatableDebugReportingConfig","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableDebugReportingConfig"}]},"storage.attributionscopesdata":{"keyword":"Storage.AttributionScopesData","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionScopesData"}]},"storage.attributionreportingnamedbudgetdef":{"keyword":"Storage.AttributionReportingNamedBudgetDef","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingNamedBudgetDef"}]},"storage.attributionreportingsourceregistration":{"keyword":"Storage.AttributionReportingSourceRegistration","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingSourceRegistration"}]},"storage.attributionreportingsourceregistrationresult":{"keyword":"Storage.AttributionReportingSourceRegistrationResult","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingSourceRegistrationResult"}]},"storage.attributionreportingsourceregistrationtimeconfig":{"keyword":"Storage.AttributionReportingSourceRegistrationTimeConfig","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingSourceRegistrationTimeConfig"}]},"storage.attributionreportingaggregatablevaluedictentry":{"keyword":"Storage.AttributionReportingAggregatableValueDictEntry","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableValueDictEntry"}]},"storage.attributionreportingaggregatablevalueentry":{"keyword":"Storage.AttributionReportingAggregatableValueEntry","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableValueEntry"}]},"storage.attributionreportingeventtriggerdata":{"keyword":"Storage.AttributionReportingEventTriggerData","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingEventTriggerData"}]},"storage.attributionreportingaggregatabletriggerdata":{"keyword":"Storage.AttributionReportingAggregatableTriggerData","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableTriggerData"}]},"storage.attributionreportingaggregatablededupkey":{"keyword":"Storage.AttributionReportingAggregatableDedupKey","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableDedupKey"}]},"storage.attributionreportingnamedbudgetcandidate":{"keyword":"Storage.AttributionReportingNamedBudgetCandidate","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingNamedBudgetCandidate"}]},"storage.attributionreportingtriggerregistration":{"keyword":"Storage.AttributionReportingTriggerRegistration","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingTriggerRegistration"}]},"storage.attributionreportingeventlevelresult":{"keyword":"Storage.AttributionReportingEventLevelResult","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingEventLevelResult"}]},"storage.attributionreportingaggregatableresult":{"keyword":"Storage.AttributionReportingAggregatableResult","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingAggregatableResult"}]},"storage.attributionreportingreportresult":{"keyword":"Storage.AttributionReportingReportResult","pageReferences":[{"domain":"Storage","type":"3","domainHref":"tot/Storage/","href":"#type-AttributionReportingReportResult"}]},"storage.relatedwebsiteset":{"keyword":"Storage.RelatedWebsiteSet","pageReferences":[{"domain":"Storage","type":"3","description":"A single Related Website Set object.","domainHref":"tot/Storage/","href":"#type-RelatedWebsiteSet"}]},"systeminfo":{"keyword":"SystemInfo","pageReferences":[{"domain":"SystemInfo","type":"0","description":"The SystemInfo domain defines methods and events for querying low-level system information.","domainHref":"tot/SystemInfo/"}]},"systeminfo.getinfo":{"keyword":"SystemInfo.getInfo","pageReferences":[{"domain":"SystemInfo","type":"4","description":"Returns information about the system.","domainHref":"tot/SystemInfo/","href":"#method-getInfo"}]},"systeminfo.getfeaturestate":{"keyword":"SystemInfo.getFeatureState","pageReferences":[{"domain":"SystemInfo","type":"4","description":"Returns information about the feature state.","domainHref":"tot/SystemInfo/","href":"#method-getFeatureState"}]},"systeminfo.getprocessinfo":{"keyword":"SystemInfo.getProcessInfo","pageReferences":[{"domain":"SystemInfo","type":"4","description":"Returns information about all running processes.","domainHref":"tot/SystemInfo/","href":"#method-getProcessInfo"}]},"systeminfo.gpudevice":{"keyword":"SystemInfo.GPUDevice","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Describes a single graphics processor (GPU).","domainHref":"tot/SystemInfo/","href":"#type-GPUDevice"}]},"systeminfo.size":{"keyword":"SystemInfo.Size","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Describes the width and height dimensions of an entity.","domainHref":"tot/SystemInfo/","href":"#type-Size"}]},"systeminfo.videodecodeacceleratorcapability":{"keyword":"SystemInfo.VideoDecodeAcceleratorCapability","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Describes a supported video decoding profile with its associated minimum and\nmaximum resolutions.","domainHref":"tot/SystemInfo/","href":"#type-VideoDecodeAcceleratorCapability"}]},"systeminfo.videoencodeacceleratorcapability":{"keyword":"SystemInfo.VideoEncodeAcceleratorCapability","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Describes a supported video encoding profile with its associated maximum\nresolution and maximum framerate.","domainHref":"tot/SystemInfo/","href":"#type-VideoEncodeAcceleratorCapability"}]},"systeminfo.subsamplingformat":{"keyword":"SystemInfo.SubsamplingFormat","pageReferences":[{"domain":"SystemInfo","type":"3","description":"YUV subsampling type of the pixels of a given image.","domainHref":"tot/SystemInfo/","href":"#type-SubsamplingFormat"}]},"systeminfo.imagetype":{"keyword":"SystemInfo.ImageType","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Image format of a given image.","domainHref":"tot/SystemInfo/","href":"#type-ImageType"}]},"systeminfo.imagedecodeacceleratorcapability":{"keyword":"SystemInfo.ImageDecodeAcceleratorCapability","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Describes a supported image decoding profile with its associated minimum and\nmaximum resolutions and subsampling.","domainHref":"tot/SystemInfo/","href":"#type-ImageDecodeAcceleratorCapability"}]},"systeminfo.gpuinfo":{"keyword":"SystemInfo.GPUInfo","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Provides information about the GPU(s) on the system.","domainHref":"tot/SystemInfo/","href":"#type-GPUInfo"}]},"systeminfo.processinfo":{"keyword":"SystemInfo.ProcessInfo","pageReferences":[{"domain":"SystemInfo","type":"3","description":"Represents process info.","domainHref":"tot/SystemInfo/","href":"#type-ProcessInfo"}]},"target":{"keyword":"Target","pageReferences":[{"domain":"Target","type":"0","description":"Supports additional targets discovery and allows to attach to them.","domainHref":"tot/Target/"}]},"target.activatetarget":{"keyword":"Target.activateTarget","pageReferences":[{"domain":"Target","type":"4","description":"Activates (focuses) the target.","domainHref":"tot/Target/","href":"#method-activateTarget"}]},"target.attachtotarget":{"keyword":"Target.attachToTarget","pageReferences":[{"domain":"Target","type":"4","description":"Attaches to the target with given id.","domainHref":"tot/Target/","href":"#method-attachToTarget"}]},"target.attachtobrowsertarget":{"keyword":"Target.attachToBrowserTarget","pageReferences":[{"domain":"Target","type":"4","description":"Attaches to the browser target, only uses flat sessionId mode.","domainHref":"tot/Target/","href":"#method-attachToBrowserTarget"}]},"target.closetarget":{"keyword":"Target.closeTarget","pageReferences":[{"domain":"Target","type":"4","description":"Closes the target. If the target is a page that gets closed too.","domainHref":"tot/Target/","href":"#method-closeTarget"}]},"target.exposedevtoolsprotocol":{"keyword":"Target.exposeDevToolsProtocol","pageReferences":[{"domain":"Target","type":"4","description":"Inject object to the target's main frame that provides a communication\nchannel with browser target.\n\nInjected object will be available as `window[bindingName]`.\n\nThe object has the following API:\n- `b...","domainHref":"tot/Target/","href":"#method-exposeDevToolsProtocol"}]},"target.createbrowsercontext":{"keyword":"Target.createBrowserContext","pageReferences":[{"domain":"Target","type":"4","description":"Creates a new empty BrowserContext. Similar to an incognito profile but you can have more than\none.","domainHref":"tot/Target/","href":"#method-createBrowserContext"}]},"target.getbrowsercontexts":{"keyword":"Target.getBrowserContexts","pageReferences":[{"domain":"Target","type":"4","description":"Returns all browser contexts created with `Target.createBrowserContext` method.","domainHref":"tot/Target/","href":"#method-getBrowserContexts"}]},"target.createtarget":{"keyword":"Target.createTarget","pageReferences":[{"domain":"Target","type":"4","description":"Creates a new page.","domainHref":"tot/Target/","href":"#method-createTarget"}]},"target.detachfromtarget":{"keyword":"Target.detachFromTarget","pageReferences":[{"domain":"Target","type":"4","description":"Detaches session with given id.","domainHref":"tot/Target/","href":"#method-detachFromTarget"}]},"target.disposebrowsercontext":{"keyword":"Target.disposeBrowserContext","pageReferences":[{"domain":"Target","type":"4","description":"Deletes a BrowserContext. All the belonging pages will be closed without calling their\nbeforeunload hooks.","domainHref":"tot/Target/","href":"#method-disposeBrowserContext"}]},"target.gettargetinfo":{"keyword":"Target.getTargetInfo","pageReferences":[{"domain":"Target","type":"4","description":"Returns information about a target.","domainHref":"tot/Target/","href":"#method-getTargetInfo"}]},"target.gettargets":{"keyword":"Target.getTargets","pageReferences":[{"domain":"Target","type":"4","description":"Retrieves a list of available targets.","domainHref":"tot/Target/","href":"#method-getTargets"}]},"target.sendmessagetotarget":{"keyword":"Target.sendMessageToTarget","pageReferences":[{"domain":"Target","type":"4","description":"Sends protocol message over session with given id.\nConsider using flat mode instead; see commands attachToTarget, setAutoAttach,\nand crbug.com/991325.","domainHref":"tot/Target/","href":"#method-sendMessageToTarget"}]},"target.setautoattach":{"keyword":"Target.setAutoAttach","pageReferences":[{"domain":"Target","type":"4","description":"Controls whether to automatically attach to new targets which are considered\nto be directly related to this one (for example, iframes or workers).\nWhen turned on, attaches to all existing related targ...","domainHref":"tot/Target/","href":"#method-setAutoAttach"}]},"target.autoattachrelated":{"keyword":"Target.autoAttachRelated","pageReferences":[{"domain":"Target","type":"4","description":"Adds the specified target to the list of targets that will be monitored for any related target\ncreation (such as child frames, child workers and new versions of service worker) and reported\nthrough `a...","domainHref":"tot/Target/","href":"#method-autoAttachRelated"}]},"target.setdiscovertargets":{"keyword":"Target.setDiscoverTargets","pageReferences":[{"domain":"Target","type":"4","description":"Controls whether to discover available targets and notify via\n`targetCreated/targetInfoChanged/targetDestroyed` events.","domainHref":"tot/Target/","href":"#method-setDiscoverTargets"}]},"target.setremotelocations":{"keyword":"Target.setRemoteLocations","pageReferences":[{"domain":"Target","type":"4","description":"Enables target discovery for the specified locations, when `setDiscoverTargets` was set to\n`true`.","domainHref":"tot/Target/","href":"#method-setRemoteLocations"}]},"target.attachedtotarget":{"keyword":"Target.attachedToTarget","pageReferences":[{"domain":"Target","type":"1","description":"Issued when attached to target because of auto-attach or `attachToTarget` command.","domainHref":"tot/Target/","href":"#event-attachedToTarget"}]},"target.detachedfromtarget":{"keyword":"Target.detachedFromTarget","pageReferences":[{"domain":"Target","type":"1","description":"Issued when detached from target for any reason (including `detachFromTarget` command). Can be\nissued multiple times per target if multiple sessions have been attached to it.","domainHref":"tot/Target/","href":"#event-detachedFromTarget"}]},"target.receivedmessagefromtarget":{"keyword":"Target.receivedMessageFromTarget","pageReferences":[{"domain":"Target","type":"1","description":"Notifies about a new protocol message received from the session (as reported in\n`attachedToTarget` event).","domainHref":"tot/Target/","href":"#event-receivedMessageFromTarget"}]},"target.targetcreated":{"keyword":"Target.targetCreated","pageReferences":[{"domain":"Target","type":"1","description":"Issued when a possible inspection target is created.","domainHref":"tot/Target/","href":"#event-targetCreated"}]},"target.targetdestroyed":{"keyword":"Target.targetDestroyed","pageReferences":[{"domain":"Target","type":"1","description":"Issued when a target is destroyed.","domainHref":"tot/Target/","href":"#event-targetDestroyed"}]},"target.targetcrashed":{"keyword":"Target.targetCrashed","pageReferences":[{"domain":"Target","type":"1","description":"Issued when a target has crashed.","domainHref":"tot/Target/","href":"#event-targetCrashed"}]},"target.targetinfochanged":{"keyword":"Target.targetInfoChanged","pageReferences":[{"domain":"Target","type":"1","description":"Issued when some information about a target has changed. This only happens between\n`targetCreated` and `targetDestroyed`.","domainHref":"tot/Target/","href":"#event-targetInfoChanged"}]},"target.targetid":{"keyword":"Target.TargetID","pageReferences":[{"domain":"Target","type":"3","domainHref":"tot/Target/","href":"#type-TargetID"}]},"target.sessionid":{"keyword":"Target.SessionID","pageReferences":[{"domain":"Target","type":"3","description":"Unique identifier of attached debugging session.","domainHref":"tot/Target/","href":"#type-SessionID"}]},"target.targetinfo":{"keyword":"Target.TargetInfo","pageReferences":[{"domain":"Target","type":"3","domainHref":"tot/Target/","href":"#type-TargetInfo"}]},"target.filterentry":{"keyword":"Target.FilterEntry","pageReferences":[{"domain":"Target","type":"3","description":"A filter used by target query/discovery/auto-attach operations.","domainHref":"tot/Target/","href":"#type-FilterEntry"}]},"target.targetfilter":{"keyword":"Target.TargetFilter","pageReferences":[{"domain":"Target","type":"3","description":"The entries in TargetFilter are matched sequentially against targets and\nthe first entry that matches determines if the target is included or not,\ndepending on the value of `exclude` field in the entr...","domainHref":"tot/Target/","href":"#type-TargetFilter"}]},"target.remotelocation":{"keyword":"Target.RemoteLocation","pageReferences":[{"domain":"Target","type":"3","domainHref":"tot/Target/","href":"#type-RemoteLocation"}]},"target.windowstate":{"keyword":"Target.WindowState","pageReferences":[{"domain":"Target","type":"3","description":"The state of the target window.","domainHref":"tot/Target/","href":"#type-WindowState"}]},"tethering":{"keyword":"Tethering","pageReferences":[{"domain":"Tethering","type":"0","description":"The Tethering domain defines methods and events for browser port binding.","domainHref":"tot/Tethering/"}]},"tethering.bind":{"keyword":"Tethering.bind","pageReferences":[{"domain":"Tethering","type":"4","description":"Request browser port binding.","domainHref":"tot/Tethering/","href":"#method-bind"}]},"tethering.unbind":{"keyword":"Tethering.unbind","pageReferences":[{"domain":"Tethering","type":"4","description":"Request browser port unbinding.","domainHref":"tot/Tethering/","href":"#method-unbind"}]},"tethering.accepted":{"keyword":"Tethering.accepted","pageReferences":[{"domain":"Tethering","type":"1","description":"Informs that port was successfully bound and got a specified connection id.","domainHref":"tot/Tethering/","href":"#event-accepted"}]},"tracing":{"keyword":"Tracing","pageReferences":[{"domain":"Tracing","type":"0","domainHref":"tot/Tracing/"}]},"tracing.end":{"keyword":"Tracing.end","pageReferences":[{"domain":"Tracing","type":"4","description":"Stop trace events collection.","domainHref":"tot/Tracing/","href":"#method-end"}]},"tracing.getcategories":{"keyword":"Tracing.getCategories","pageReferences":[{"domain":"Tracing","type":"4","description":"Gets supported tracing categories.","domainHref":"tot/Tracing/","href":"#method-getCategories"}]},"tracing.recordclocksyncmarker":{"keyword":"Tracing.recordClockSyncMarker","pageReferences":[{"domain":"Tracing","type":"4","description":"Record a clock sync marker in the trace.","domainHref":"tot/Tracing/","href":"#method-recordClockSyncMarker"}]},"tracing.requestmemorydump":{"keyword":"Tracing.requestMemoryDump","pageReferences":[{"domain":"Tracing","type":"4","description":"Request a global memory dump.","domainHref":"tot/Tracing/","href":"#method-requestMemoryDump"}]},"tracing.start":{"keyword":"Tracing.start","pageReferences":[{"domain":"Tracing","type":"4","description":"Start trace events collection.","domainHref":"tot/Tracing/","href":"#method-start"}]},"tracing.bufferusage":{"keyword":"Tracing.bufferUsage","pageReferences":[{"domain":"Tracing","type":"1","domainHref":"tot/Tracing/","href":"#event-bufferUsage"}]},"tracing.datacollected":{"keyword":"Tracing.dataCollected","pageReferences":[{"domain":"Tracing","type":"1","description":"Contains a bucket of collected trace events. When tracing is stopped collected events will be\nsent as a sequence of dataCollected events followed by tracingComplete event.","domainHref":"tot/Tracing/","href":"#event-dataCollected"}]},"tracing.tracingcomplete":{"keyword":"Tracing.tracingComplete","pageReferences":[{"domain":"Tracing","type":"1","description":"Signals that tracing is stopped and there is no trace buffers pending flush, all data were\ndelivered via dataCollected events.","domainHref":"tot/Tracing/","href":"#event-tracingComplete"}]},"tracing.memorydumpconfig":{"keyword":"Tracing.MemoryDumpConfig","pageReferences":[{"domain":"Tracing","type":"3","description":"Configuration for memory dump. Used only when \"memory-infra\" category is enabled.","domainHref":"tot/Tracing/","href":"#type-MemoryDumpConfig"}]},"tracing.traceconfig":{"keyword":"Tracing.TraceConfig","pageReferences":[{"domain":"Tracing","type":"3","domainHref":"tot/Tracing/","href":"#type-TraceConfig"}]},"tracing.streamformat":{"keyword":"Tracing.StreamFormat","pageReferences":[{"domain":"Tracing","type":"3","description":"Data format of a trace. Can be either the legacy JSON format or the\nprotocol buffer format. Note that the JSON format will be deprecated soon.","domainHref":"tot/Tracing/","href":"#type-StreamFormat"}]},"tracing.streamcompression":{"keyword":"Tracing.StreamCompression","pageReferences":[{"domain":"Tracing","type":"3","description":"Compression type to use for traces returned via streams.","domainHref":"tot/Tracing/","href":"#type-StreamCompression"}]},"tracing.memorydumplevelofdetail":{"keyword":"Tracing.MemoryDumpLevelOfDetail","pageReferences":[{"domain":"Tracing","type":"3","description":"Details exposed when memory request explicitly declared.\nKeep consistent with memory_dump_request_args.h and\nmemory_instrumentation.mojom","domainHref":"tot/Tracing/","href":"#type-MemoryDumpLevelOfDetail"}]},"tracing.tracingbackend":{"keyword":"Tracing.TracingBackend","pageReferences":[{"domain":"Tracing","type":"3","description":"Backend type to use for tracing. `chrome` uses the Chrome-integrated\ntracing service and is supported on all platforms. `system` is only\nsupported on Chrome OS and uses the Perfetto system tracing ser...","domainHref":"tot/Tracing/","href":"#type-TracingBackend"}]},"fetch":{"keyword":"Fetch","pageReferences":[{"domain":"Fetch","type":"0","description":"A domain for letting clients substitute browser's network layer with client code.","domainHref":"tot/Fetch/"}]},"fetch.disable":{"keyword":"Fetch.disable","pageReferences":[{"domain":"Fetch","type":"4","description":"Disables the fetch domain.","domainHref":"tot/Fetch/","href":"#method-disable"}]},"fetch.enable":{"keyword":"Fetch.enable","pageReferences":[{"domain":"Fetch","type":"4","description":"Enables issuing of requestPaused events. A request will be paused until client\ncalls one of failRequest, fulfillRequest or continueRequest/continueWithAuth.","domainHref":"tot/Fetch/","href":"#method-enable"}]},"fetch.failrequest":{"keyword":"Fetch.failRequest","pageReferences":[{"domain":"Fetch","type":"4","description":"Causes the request to fail with specified reason.","domainHref":"tot/Fetch/","href":"#method-failRequest"}]},"fetch.fulfillrequest":{"keyword":"Fetch.fulfillRequest","pageReferences":[{"domain":"Fetch","type":"4","description":"Provides response to the request.","domainHref":"tot/Fetch/","href":"#method-fulfillRequest"}]},"fetch.continuerequest":{"keyword":"Fetch.continueRequest","pageReferences":[{"domain":"Fetch","type":"4","description":"Continues the request, optionally modifying some of its parameters.","domainHref":"tot/Fetch/","href":"#method-continueRequest"}]},"fetch.continuewithauth":{"keyword":"Fetch.continueWithAuth","pageReferences":[{"domain":"Fetch","type":"4","description":"Continues a request supplying authChallengeResponse following authRequired event.","domainHref":"tot/Fetch/","href":"#method-continueWithAuth"}]},"fetch.continueresponse":{"keyword":"Fetch.continueResponse","pageReferences":[{"domain":"Fetch","type":"4","description":"Continues loading of the paused response, optionally modifying the\nresponse headers. If either responseCode or headers are modified, all of them\nmust be present.","domainHref":"tot/Fetch/","href":"#method-continueResponse"}]},"fetch.getresponsebody":{"keyword":"Fetch.getResponseBody","pageReferences":[{"domain":"Fetch","type":"4","description":"Causes the body of the response to be received from the server and\nreturned as a single string. May only be issued for a request that\nis paused in the Response stage and is mutually exclusive with\ntak...","domainHref":"tot/Fetch/","href":"#method-getResponseBody"}]},"fetch.takeresponsebodyasstream":{"keyword":"Fetch.takeResponseBodyAsStream","pageReferences":[{"domain":"Fetch","type":"4","description":"Returns a handle to the stream representing the response body.\nThe request must be paused in the HeadersReceived stage.\nNote that after this command the request can't be continued\nas is -- client eith...","domainHref":"tot/Fetch/","href":"#method-takeResponseBodyAsStream"}]},"fetch.requestpaused":{"keyword":"Fetch.requestPaused","pageReferences":[{"domain":"Fetch","type":"1","description":"Issued when the domain is enabled and the request URL matches the\nspecified filter. The request is paused until the client responds\nwith one of continueRequest, failRequest or fulfillRequest.\nThe stag...","domainHref":"tot/Fetch/","href":"#event-requestPaused"}]},"fetch.authrequired":{"keyword":"Fetch.authRequired","pageReferences":[{"domain":"Fetch","type":"1","description":"Issued when the domain is enabled with handleAuthRequests set to true.\nThe request is paused until client responds with continueWithAuth.","domainHref":"tot/Fetch/","href":"#event-authRequired"}]},"fetch.requestid":{"keyword":"Fetch.RequestId","pageReferences":[{"domain":"Fetch","type":"3","description":"Unique request identifier.\nNote that this does not identify individual HTTP requests that are part of\na network request.","domainHref":"tot/Fetch/","href":"#type-RequestId"}]},"fetch.requeststage":{"keyword":"Fetch.RequestStage","pageReferences":[{"domain":"Fetch","type":"3","description":"Stages of the request to handle. Request will intercept before the request is\nsent. Response will intercept after the response is received (but before response\nbody is received).","domainHref":"tot/Fetch/","href":"#type-RequestStage"}]},"fetch.requestpattern":{"keyword":"Fetch.RequestPattern","pageReferences":[{"domain":"Fetch","type":"3","domainHref":"tot/Fetch/","href":"#type-RequestPattern"}]},"fetch.headerentry":{"keyword":"Fetch.HeaderEntry","pageReferences":[{"domain":"Fetch","type":"3","description":"Response HTTP header entry","domainHref":"tot/Fetch/","href":"#type-HeaderEntry"}]},"fetch.authchallenge":{"keyword":"Fetch.AuthChallenge","pageReferences":[{"domain":"Fetch","type":"3","description":"Authorization challenge for HTTP status code 401 or 407.","domainHref":"tot/Fetch/","href":"#type-AuthChallenge"}]},"fetch.authchallengeresponse":{"keyword":"Fetch.AuthChallengeResponse","pageReferences":[{"domain":"Fetch","type":"3","description":"Response to an AuthChallenge.","domainHref":"tot/Fetch/","href":"#type-AuthChallengeResponse"}]},"webaudio":{"keyword":"WebAudio","pageReferences":[{"domain":"WebAudio","type":"0","description":"This domain allows inspection of Web Audio API.\nhttps://webaudio.github.io/web-audio-api/","domainHref":"tot/WebAudio/"}]},"webaudio.enable":{"keyword":"WebAudio.enable","pageReferences":[{"domain":"WebAudio","type":"4","description":"Enables the WebAudio domain and starts sending context lifetime events.","domainHref":"tot/WebAudio/","href":"#method-enable"}]},"webaudio.disable":{"keyword":"WebAudio.disable","pageReferences":[{"domain":"WebAudio","type":"4","description":"Disables the WebAudio domain.","domainHref":"tot/WebAudio/","href":"#method-disable"}]},"webaudio.getrealtimedata":{"keyword":"WebAudio.getRealtimeData","pageReferences":[{"domain":"WebAudio","type":"4","description":"Fetch the realtime data from the registered contexts.","domainHref":"tot/WebAudio/","href":"#method-getRealtimeData"}]},"webaudio.contextcreated":{"keyword":"WebAudio.contextCreated","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that a new BaseAudioContext has been created.","domainHref":"tot/WebAudio/","href":"#event-contextCreated"}]},"webaudio.contextwillbedestroyed":{"keyword":"WebAudio.contextWillBeDestroyed","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that an existing BaseAudioContext will be destroyed.","domainHref":"tot/WebAudio/","href":"#event-contextWillBeDestroyed"}]},"webaudio.contextchanged":{"keyword":"WebAudio.contextChanged","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that existing BaseAudioContext has changed some properties (id stays the same)..","domainHref":"tot/WebAudio/","href":"#event-contextChanged"}]},"webaudio.audiolistenercreated":{"keyword":"WebAudio.audioListenerCreated","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that the construction of an AudioListener has finished.","domainHref":"tot/WebAudio/","href":"#event-audioListenerCreated"}]},"webaudio.audiolistenerwillbedestroyed":{"keyword":"WebAudio.audioListenerWillBeDestroyed","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that a new AudioListener has been created.","domainHref":"tot/WebAudio/","href":"#event-audioListenerWillBeDestroyed"}]},"webaudio.audionodecreated":{"keyword":"WebAudio.audioNodeCreated","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that a new AudioNode has been created.","domainHref":"tot/WebAudio/","href":"#event-audioNodeCreated"}]},"webaudio.audionodewillbedestroyed":{"keyword":"WebAudio.audioNodeWillBeDestroyed","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that an existing AudioNode has been destroyed.","domainHref":"tot/WebAudio/","href":"#event-audioNodeWillBeDestroyed"}]},"webaudio.audioparamcreated":{"keyword":"WebAudio.audioParamCreated","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that a new AudioParam has been created.","domainHref":"tot/WebAudio/","href":"#event-audioParamCreated"}]},"webaudio.audioparamwillbedestroyed":{"keyword":"WebAudio.audioParamWillBeDestroyed","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that an existing AudioParam has been destroyed.","domainHref":"tot/WebAudio/","href":"#event-audioParamWillBeDestroyed"}]},"webaudio.nodesconnected":{"keyword":"WebAudio.nodesConnected","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that two AudioNodes are connected.","domainHref":"tot/WebAudio/","href":"#event-nodesConnected"}]},"webaudio.nodesdisconnected":{"keyword":"WebAudio.nodesDisconnected","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that AudioNodes are disconnected. The destination can be null, and it means all the outgoing connections from the source are disconnected.","domainHref":"tot/WebAudio/","href":"#event-nodesDisconnected"}]},"webaudio.nodeparamconnected":{"keyword":"WebAudio.nodeParamConnected","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that an AudioNode is connected to an AudioParam.","domainHref":"tot/WebAudio/","href":"#event-nodeParamConnected"}]},"webaudio.nodeparamdisconnected":{"keyword":"WebAudio.nodeParamDisconnected","pageReferences":[{"domain":"WebAudio","type":"1","description":"Notifies that an AudioNode is disconnected to an AudioParam.","domainHref":"tot/WebAudio/","href":"#event-nodeParamDisconnected"}]},"webaudio.graphobjectid":{"keyword":"WebAudio.GraphObjectId","pageReferences":[{"domain":"WebAudio","type":"3","description":"An unique ID for a graph object (AudioContext, AudioNode, AudioParam) in Web Audio API","domainHref":"tot/WebAudio/","href":"#type-GraphObjectId"}]},"webaudio.contexttype":{"keyword":"WebAudio.ContextType","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of BaseAudioContext types","domainHref":"tot/WebAudio/","href":"#type-ContextType"}]},"webaudio.contextstate":{"keyword":"WebAudio.ContextState","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of AudioContextState from the spec","domainHref":"tot/WebAudio/","href":"#type-ContextState"}]},"webaudio.nodetype":{"keyword":"WebAudio.NodeType","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of AudioNode types","domainHref":"tot/WebAudio/","href":"#type-NodeType"}]},"webaudio.channelcountmode":{"keyword":"WebAudio.ChannelCountMode","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of AudioNode::ChannelCountMode from the spec","domainHref":"tot/WebAudio/","href":"#type-ChannelCountMode"}]},"webaudio.channelinterpretation":{"keyword":"WebAudio.ChannelInterpretation","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of AudioNode::ChannelInterpretation from the spec","domainHref":"tot/WebAudio/","href":"#type-ChannelInterpretation"}]},"webaudio.paramtype":{"keyword":"WebAudio.ParamType","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of AudioParam types","domainHref":"tot/WebAudio/","href":"#type-ParamType"}]},"webaudio.automationrate":{"keyword":"WebAudio.AutomationRate","pageReferences":[{"domain":"WebAudio","type":"3","description":"Enum of AudioParam::AutomationRate from the spec","domainHref":"tot/WebAudio/","href":"#type-AutomationRate"}]},"webaudio.contextrealtimedata":{"keyword":"WebAudio.ContextRealtimeData","pageReferences":[{"domain":"WebAudio","type":"3","description":"Fields in AudioContext that change in real-time.","domainHref":"tot/WebAudio/","href":"#type-ContextRealtimeData"}]},"webaudio.baseaudiocontext":{"keyword":"WebAudio.BaseAudioContext","pageReferences":[{"domain":"WebAudio","type":"3","description":"Protocol object for BaseAudioContext","domainHref":"tot/WebAudio/","href":"#type-BaseAudioContext"}]},"webaudio.audiolistener":{"keyword":"WebAudio.AudioListener","pageReferences":[{"domain":"WebAudio","type":"3","description":"Protocol object for AudioListener","domainHref":"tot/WebAudio/","href":"#type-AudioListener"}]},"webaudio.audionode":{"keyword":"WebAudio.AudioNode","pageReferences":[{"domain":"WebAudio","type":"3","description":"Protocol object for AudioNode","domainHref":"tot/WebAudio/","href":"#type-AudioNode"}]},"webaudio.audioparam":{"keyword":"WebAudio.AudioParam","pageReferences":[{"domain":"WebAudio","type":"3","description":"Protocol object for AudioParam","domainHref":"tot/WebAudio/","href":"#type-AudioParam"}]},"webauthn":{"keyword":"WebAuthn","pageReferences":[{"domain":"WebAuthn","type":"0","description":"This domain allows configuring virtual authenticators to test the WebAuthn\nAPI.","domainHref":"tot/WebAuthn/"}]},"webauthn.enable":{"keyword":"WebAuthn.enable","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Enable the WebAuthn domain and start intercepting credential storage and\nretrieval with a virtual authenticator.","domainHref":"tot/WebAuthn/","href":"#method-enable"}]},"webauthn.disable":{"keyword":"WebAuthn.disable","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Disable the WebAuthn domain.","domainHref":"tot/WebAuthn/","href":"#method-disable"}]},"webauthn.addvirtualauthenticator":{"keyword":"WebAuthn.addVirtualAuthenticator","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Creates and adds a virtual authenticator.","domainHref":"tot/WebAuthn/","href":"#method-addVirtualAuthenticator"}]},"webauthn.setresponseoverridebits":{"keyword":"WebAuthn.setResponseOverrideBits","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Resets parameters isBogusSignature, isBadUV, isBadUP to false if they are not present.","domainHref":"tot/WebAuthn/","href":"#method-setResponseOverrideBits"}]},"webauthn.removevirtualauthenticator":{"keyword":"WebAuthn.removeVirtualAuthenticator","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Removes the given authenticator.","domainHref":"tot/WebAuthn/","href":"#method-removeVirtualAuthenticator"}]},"webauthn.addcredential":{"keyword":"WebAuthn.addCredential","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Adds the credential to the specified authenticator.","domainHref":"tot/WebAuthn/","href":"#method-addCredential"}]},"webauthn.getcredential":{"keyword":"WebAuthn.getCredential","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Returns a single credential stored in the given virtual authenticator that\nmatches the credential ID.","domainHref":"tot/WebAuthn/","href":"#method-getCredential"}]},"webauthn.getcredentials":{"keyword":"WebAuthn.getCredentials","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Returns all the credentials stored in the given virtual authenticator.","domainHref":"tot/WebAuthn/","href":"#method-getCredentials"}]},"webauthn.removecredential":{"keyword":"WebAuthn.removeCredential","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Removes a credential from the authenticator.","domainHref":"tot/WebAuthn/","href":"#method-removeCredential"}]},"webauthn.clearcredentials":{"keyword":"WebAuthn.clearCredentials","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Clears all the credentials from the specified device.","domainHref":"tot/WebAuthn/","href":"#method-clearCredentials"}]},"webauthn.setuserverified":{"keyword":"WebAuthn.setUserVerified","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Sets whether User Verification succeeds or fails for an authenticator.\nThe default is true.","domainHref":"tot/WebAuthn/","href":"#method-setUserVerified"}]},"webauthn.setautomaticpresencesimulation":{"keyword":"WebAuthn.setAutomaticPresenceSimulation","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Sets whether tests of user presence will succeed immediately (if true) or fail to resolve (if false) for an authenticator.\nThe default is true.","domainHref":"tot/WebAuthn/","href":"#method-setAutomaticPresenceSimulation"}]},"webauthn.setcredentialproperties":{"keyword":"WebAuthn.setCredentialProperties","pageReferences":[{"domain":"WebAuthn","type":"4","description":"Allows setting credential properties.\nhttps://w3c.github.io/webauthn/#sctn-automation-set-credential-properties","domainHref":"tot/WebAuthn/","href":"#method-setCredentialProperties"}]},"webauthn.credentialadded":{"keyword":"WebAuthn.credentialAdded","pageReferences":[{"domain":"WebAuthn","type":"1","description":"Triggered when a credential is added to an authenticator.","domainHref":"tot/WebAuthn/","href":"#event-credentialAdded"}]},"webauthn.credentialdeleted":{"keyword":"WebAuthn.credentialDeleted","pageReferences":[{"domain":"WebAuthn","type":"1","description":"Triggered when a credential is deleted, e.g. through\nPublicKeyCredential.signalUnknownCredential().","domainHref":"tot/WebAuthn/","href":"#event-credentialDeleted"}]},"webauthn.credentialupdated":{"keyword":"WebAuthn.credentialUpdated","pageReferences":[{"domain":"WebAuthn","type":"1","description":"Triggered when a credential is updated, e.g. through\nPublicKeyCredential.signalCurrentUserDetails().","domainHref":"tot/WebAuthn/","href":"#event-credentialUpdated"}]},"webauthn.credentialasserted":{"keyword":"WebAuthn.credentialAsserted","pageReferences":[{"domain":"WebAuthn","type":"1","description":"Triggered when a credential is used in a webauthn assertion.","domainHref":"tot/WebAuthn/","href":"#event-credentialAsserted"}]},"webauthn.authenticatorid":{"keyword":"WebAuthn.AuthenticatorId","pageReferences":[{"domain":"WebAuthn","type":"3","domainHref":"tot/WebAuthn/","href":"#type-AuthenticatorId"}]},"webauthn.authenticatorprotocol":{"keyword":"WebAuthn.AuthenticatorProtocol","pageReferences":[{"domain":"WebAuthn","type":"3","domainHref":"tot/WebAuthn/","href":"#type-AuthenticatorProtocol"}]},"webauthn.ctap2version":{"keyword":"WebAuthn.Ctap2Version","pageReferences":[{"domain":"WebAuthn","type":"3","domainHref":"tot/WebAuthn/","href":"#type-Ctap2Version"}]},"webauthn.authenticatortransport":{"keyword":"WebAuthn.AuthenticatorTransport","pageReferences":[{"domain":"WebAuthn","type":"3","domainHref":"tot/WebAuthn/","href":"#type-AuthenticatorTransport"}]},"webauthn.virtualauthenticatoroptions":{"keyword":"WebAuthn.VirtualAuthenticatorOptions","pageReferences":[{"domain":"WebAuthn","type":"3","domainHref":"tot/WebAuthn/","href":"#type-VirtualAuthenticatorOptions"}]},"webauthn.credential":{"keyword":"WebAuthn.Credential","pageReferences":[{"domain":"WebAuthn","type":"3","domainHref":"tot/WebAuthn/","href":"#type-Credential"}]},"media":{"keyword":"Media","pageReferences":[{"domain":"Media","type":"0","description":"This domain allows detailed inspection of media elements","domainHref":"tot/Media/"}]},"media.enable":{"keyword":"Media.enable","pageReferences":[{"domain":"Media","type":"4","description":"Enables the Media domain","domainHref":"tot/Media/","href":"#method-enable"}]},"media.disable":{"keyword":"Media.disable","pageReferences":[{"domain":"Media","type":"4","description":"Disables the Media domain.","domainHref":"tot/Media/","href":"#method-disable"}]},"media.playerpropertieschanged":{"keyword":"Media.playerPropertiesChanged","pageReferences":[{"domain":"Media","type":"1","description":"This can be called multiple times, and can be used to set / override /\nremove player properties. A null propValue indicates removal.","domainHref":"tot/Media/","href":"#event-playerPropertiesChanged"}]},"media.playereventsadded":{"keyword":"Media.playerEventsAdded","pageReferences":[{"domain":"Media","type":"1","description":"Send events as a list, allowing them to be batched on the browser for less\ncongestion. If batched, events must ALWAYS be in chronological order.","domainHref":"tot/Media/","href":"#event-playerEventsAdded"}]},"media.playermessageslogged":{"keyword":"Media.playerMessagesLogged","pageReferences":[{"domain":"Media","type":"1","description":"Send a list of any messages that need to be delivered.","domainHref":"tot/Media/","href":"#event-playerMessagesLogged"}]},"media.playererrorsraised":{"keyword":"Media.playerErrorsRaised","pageReferences":[{"domain":"Media","type":"1","description":"Send a list of any errors that need to be delivered.","domainHref":"tot/Media/","href":"#event-playerErrorsRaised"}]},"media.playerscreated":{"keyword":"Media.playersCreated","pageReferences":[{"domain":"Media","type":"1","description":"Called whenever a player is created, or when a new agent joins and receives\na list of active players. If an agent is restored, it will receive the full\nlist of player ids and all events again.","domainHref":"tot/Media/","href":"#event-playersCreated"}]},"media.playerid":{"keyword":"Media.PlayerId","pageReferences":[{"domain":"Media","type":"3","description":"Players will get an ID that is unique within the agent context.","domainHref":"tot/Media/","href":"#type-PlayerId"}]},"media.timestamp":{"keyword":"Media.Timestamp","pageReferences":[{"domain":"Media","type":"3","domainHref":"tot/Media/","href":"#type-Timestamp"}]},"media.playermessage":{"keyword":"Media.PlayerMessage","pageReferences":[{"domain":"Media","type":"3","description":"Have one type per entry in MediaLogRecord::Type\nCorresponds to kMessage","domainHref":"tot/Media/","href":"#type-PlayerMessage"}]},"media.playerproperty":{"keyword":"Media.PlayerProperty","pageReferences":[{"domain":"Media","type":"3","description":"Corresponds to kMediaPropertyChange","domainHref":"tot/Media/","href":"#type-PlayerProperty"}]},"media.playerevent":{"keyword":"Media.PlayerEvent","pageReferences":[{"domain":"Media","type":"3","description":"Corresponds to kMediaEventTriggered","domainHref":"tot/Media/","href":"#type-PlayerEvent"}]},"media.playererrorsourcelocation":{"keyword":"Media.PlayerErrorSourceLocation","pageReferences":[{"domain":"Media","type":"3","description":"Represents logged source line numbers reported in an error.\nNOTE: file and line are from chromium c++ implementation code, not js.","domainHref":"tot/Media/","href":"#type-PlayerErrorSourceLocation"}]},"media.playererror":{"keyword":"Media.PlayerError","pageReferences":[{"domain":"Media","type":"3","description":"Corresponds to kMediaError","domainHref":"tot/Media/","href":"#type-PlayerError"}]},"deviceaccess":{"keyword":"DeviceAccess","pageReferences":[{"domain":"DeviceAccess","type":"0","domainHref":"tot/DeviceAccess/"}]},"deviceaccess.enable":{"keyword":"DeviceAccess.enable","pageReferences":[{"domain":"DeviceAccess","type":"4","description":"Enable events in this domain.","domainHref":"tot/DeviceAccess/","href":"#method-enable"}]},"deviceaccess.disable":{"keyword":"DeviceAccess.disable","pageReferences":[{"domain":"DeviceAccess","type":"4","description":"Disable events in this domain.","domainHref":"tot/DeviceAccess/","href":"#method-disable"}]},"deviceaccess.selectprompt":{"keyword":"DeviceAccess.selectPrompt","pageReferences":[{"domain":"DeviceAccess","type":"4","description":"Select a device in response to a DeviceAccess.deviceRequestPrompted event.","domainHref":"tot/DeviceAccess/","href":"#method-selectPrompt"}]},"deviceaccess.cancelprompt":{"keyword":"DeviceAccess.cancelPrompt","pageReferences":[{"domain":"DeviceAccess","type":"4","description":"Cancel a prompt in response to a DeviceAccess.deviceRequestPrompted event.","domainHref":"tot/DeviceAccess/","href":"#method-cancelPrompt"}]},"deviceaccess.devicerequestprompted":{"keyword":"DeviceAccess.deviceRequestPrompted","pageReferences":[{"domain":"DeviceAccess","type":"1","description":"A device request opened a user prompt to select a device. Respond with the\nselectPrompt or cancelPrompt command.","domainHref":"tot/DeviceAccess/","href":"#event-deviceRequestPrompted"}]},"deviceaccess.requestid":{"keyword":"DeviceAccess.RequestId","pageReferences":[{"domain":"DeviceAccess","type":"3","description":"Device request id.","domainHref":"tot/DeviceAccess/","href":"#type-RequestId"}]},"deviceaccess.deviceid":{"keyword":"DeviceAccess.DeviceId","pageReferences":[{"domain":"DeviceAccess","type":"3","description":"A device id.","domainHref":"tot/DeviceAccess/","href":"#type-DeviceId"}]},"deviceaccess.promptdevice":{"keyword":"DeviceAccess.PromptDevice","pageReferences":[{"domain":"DeviceAccess","type":"3","description":"Device information displayed in a user prompt to select a device.","domainHref":"tot/DeviceAccess/","href":"#type-PromptDevice"}]},"preload":{"keyword":"Preload","pageReferences":[{"domain":"Preload","type":"0","domainHref":"tot/Preload/"}]},"preload.enable":{"keyword":"Preload.enable","pageReferences":[{"domain":"Preload","type":"4","domainHref":"tot/Preload/","href":"#method-enable"}]},"preload.disable":{"keyword":"Preload.disable","pageReferences":[{"domain":"Preload","type":"4","domainHref":"tot/Preload/","href":"#method-disable"}]},"preload.rulesetupdated":{"keyword":"Preload.ruleSetUpdated","pageReferences":[{"domain":"Preload","type":"1","description":"Upsert. Currently, it is only emitted when a rule set added.","domainHref":"tot/Preload/","href":"#event-ruleSetUpdated"}]},"preload.rulesetremoved":{"keyword":"Preload.ruleSetRemoved","pageReferences":[{"domain":"Preload","type":"1","domainHref":"tot/Preload/","href":"#event-ruleSetRemoved"}]},"preload.preloadenabledstateupdated":{"keyword":"Preload.preloadEnabledStateUpdated","pageReferences":[{"domain":"Preload","type":"1","description":"Fired when a preload enabled state is updated.","domainHref":"tot/Preload/","href":"#event-preloadEnabledStateUpdated"}]},"preload.prefetchstatusupdated":{"keyword":"Preload.prefetchStatusUpdated","pageReferences":[{"domain":"Preload","type":"1","description":"Fired when a prefetch attempt is updated.","domainHref":"tot/Preload/","href":"#event-prefetchStatusUpdated"}]},"preload.prerenderstatusupdated":{"keyword":"Preload.prerenderStatusUpdated","pageReferences":[{"domain":"Preload","type":"1","description":"Fired when a prerender attempt is updated.","domainHref":"tot/Preload/","href":"#event-prerenderStatusUpdated"}]},"preload.preloadingattemptsourcesupdated":{"keyword":"Preload.preloadingAttemptSourcesUpdated","pageReferences":[{"domain":"Preload","type":"1","description":"Send a list of sources for all preloading attempts in a document.","domainHref":"tot/Preload/","href":"#event-preloadingAttemptSourcesUpdated"}]},"preload.rulesetid":{"keyword":"Preload.RuleSetId","pageReferences":[{"domain":"Preload","type":"3","description":"Unique id","domainHref":"tot/Preload/","href":"#type-RuleSetId"}]},"preload.ruleset":{"keyword":"Preload.RuleSet","pageReferences":[{"domain":"Preload","type":"3","description":"Corresponds to SpeculationRuleSet","domainHref":"tot/Preload/","href":"#type-RuleSet"}]},"preload.ruleseterrortype":{"keyword":"Preload.RuleSetErrorType","pageReferences":[{"domain":"Preload","type":"3","domainHref":"tot/Preload/","href":"#type-RuleSetErrorType"}]},"preload.speculationaction":{"keyword":"Preload.SpeculationAction","pageReferences":[{"domain":"Preload","type":"3","description":"The type of preloading attempted. It corresponds to\nmojom::SpeculationAction (although PrefetchWithSubresources is omitted as it\nisn't being used by clients).","domainHref":"tot/Preload/","href":"#type-SpeculationAction"}]},"preload.speculationtargethint":{"keyword":"Preload.SpeculationTargetHint","pageReferences":[{"domain":"Preload","type":"3","description":"Corresponds to mojom::SpeculationTargetHint.\nSee https://github.com/WICG/nav-speculation/blob/main/triggers.md#window-name-targeting-hints","domainHref":"tot/Preload/","href":"#type-SpeculationTargetHint"}]},"preload.preloadingattemptkey":{"keyword":"Preload.PreloadingAttemptKey","pageReferences":[{"domain":"Preload","type":"3","description":"A key that identifies a preloading attempt.\n\nThe url used is the url specified by the trigger (i.e. the initial URL), and\nnot the final url that is navigated to. For example, prerendering allows\nsame-...","domainHref":"tot/Preload/","href":"#type-PreloadingAttemptKey"}]},"preload.preloadingattemptsource":{"keyword":"Preload.PreloadingAttemptSource","pageReferences":[{"domain":"Preload","type":"3","description":"Lists sources for a preloading attempt, specifically the ids of rule sets\nthat had a speculation rule that triggered the attempt, and the\nBackendNodeIds of or elements that trigge...","domainHref":"tot/Preload/","href":"#type-PreloadingAttemptSource"}]},"preload.preloadpipelineid":{"keyword":"Preload.PreloadPipelineId","pageReferences":[{"domain":"Preload","type":"3","description":"Chrome manages different types of preloads together using a\nconcept of preloading pipeline. For example, if a site uses a\nSpeculationRules for prerender, Chrome first starts a prefetch and\nthen upgrad...","domainHref":"tot/Preload/","href":"#type-PreloadPipelineId"}]},"preload.prerenderfinalstatus":{"keyword":"Preload.PrerenderFinalStatus","pageReferences":[{"domain":"Preload","type":"3","description":"List of FinalStatus reasons for Prerender2.","domainHref":"tot/Preload/","href":"#type-PrerenderFinalStatus"}]},"preload.preloadingstatus":{"keyword":"Preload.PreloadingStatus","pageReferences":[{"domain":"Preload","type":"3","description":"Preloading status values, see also PreloadingTriggeringOutcome. This\nstatus is shared by prefetchStatusUpdated and prerenderStatusUpdated.","domainHref":"tot/Preload/","href":"#type-PreloadingStatus"}]},"preload.prefetchstatus":{"keyword":"Preload.PrefetchStatus","pageReferences":[{"domain":"Preload","type":"3","description":"TODO(https://crbug.com/1384419): revisit the list of PrefetchStatus and\nfilter out the ones that aren't necessary to the developers.","domainHref":"tot/Preload/","href":"#type-PrefetchStatus"}]},"preload.prerendermismatchedheaders":{"keyword":"Preload.PrerenderMismatchedHeaders","pageReferences":[{"domain":"Preload","type":"3","description":"Information of headers to be displayed when the header mismatch occurred.","domainHref":"tot/Preload/","href":"#type-PrerenderMismatchedHeaders"}]},"fedcm":{"keyword":"FedCm","pageReferences":[{"domain":"FedCm","type":"0","description":"This domain allows interacting with the FedCM dialog.","domainHref":"tot/FedCm/"}]},"fedcm.enable":{"keyword":"FedCm.enable","pageReferences":[{"domain":"FedCm","type":"4","domainHref":"tot/FedCm/","href":"#method-enable"}]},"fedcm.disable":{"keyword":"FedCm.disable","pageReferences":[{"domain":"FedCm","type":"4","domainHref":"tot/FedCm/","href":"#method-disable"}]},"fedcm.selectaccount":{"keyword":"FedCm.selectAccount","pageReferences":[{"domain":"FedCm","type":"4","domainHref":"tot/FedCm/","href":"#method-selectAccount"}]},"fedcm.clickdialogbutton":{"keyword":"FedCm.clickDialogButton","pageReferences":[{"domain":"FedCm","type":"4","domainHref":"tot/FedCm/","href":"#method-clickDialogButton"}]},"fedcm.openurl":{"keyword":"FedCm.openUrl","pageReferences":[{"domain":"FedCm","type":"4","domainHref":"tot/FedCm/","href":"#method-openUrl"}]},"fedcm.dismissdialog":{"keyword":"FedCm.dismissDialog","pageReferences":[{"domain":"FedCm","type":"4","domainHref":"tot/FedCm/","href":"#method-dismissDialog"}]},"fedcm.resetcooldown":{"keyword":"FedCm.resetCooldown","pageReferences":[{"domain":"FedCm","type":"4","description":"Resets the cooldown time, if any, to allow the next FedCM call to show\na dialog even if one was recently dismissed by the user.","domainHref":"tot/FedCm/","href":"#method-resetCooldown"}]},"fedcm.dialogshown":{"keyword":"FedCm.dialogShown","pageReferences":[{"domain":"FedCm","type":"1","domainHref":"tot/FedCm/","href":"#event-dialogShown"}]},"fedcm.dialogclosed":{"keyword":"FedCm.dialogClosed","pageReferences":[{"domain":"FedCm","type":"1","description":"Triggered when a dialog is closed, either by user action, JS abort,\nor a command below.","domainHref":"tot/FedCm/","href":"#event-dialogClosed"}]},"fedcm.loginstate":{"keyword":"FedCm.LoginState","pageReferences":[{"domain":"FedCm","type":"3","description":"Whether this is a sign-up or sign-in action for this account, i.e.\nwhether this account has ever been used to sign in to this RP before.","domainHref":"tot/FedCm/","href":"#type-LoginState"}]},"fedcm.dialogtype":{"keyword":"FedCm.DialogType","pageReferences":[{"domain":"FedCm","type":"3","description":"The types of FedCM dialogs.","domainHref":"tot/FedCm/","href":"#type-DialogType"}]},"fedcm.dialogbutton":{"keyword":"FedCm.DialogButton","pageReferences":[{"domain":"FedCm","type":"3","description":"The buttons on the FedCM dialog.","domainHref":"tot/FedCm/","href":"#type-DialogButton"}]},"fedcm.accounturltype":{"keyword":"FedCm.AccountUrlType","pageReferences":[{"domain":"FedCm","type":"3","description":"The URLs that each account has","domainHref":"tot/FedCm/","href":"#type-AccountUrlType"}]},"fedcm.account":{"keyword":"FedCm.Account","pageReferences":[{"domain":"FedCm","type":"3","description":"Corresponds to IdentityRequestAccount","domainHref":"tot/FedCm/","href":"#type-Account"}]},"pwa":{"keyword":"PWA","pageReferences":[{"domain":"PWA","type":"0","description":"This domain allows interacting with the browser to control PWAs.","domainHref":"tot/PWA/"}]},"pwa.getosappstate":{"keyword":"PWA.getOsAppState","pageReferences":[{"domain":"PWA","type":"4","description":"Returns the following OS state for the given manifest id.","domainHref":"tot/PWA/","href":"#method-getOsAppState"}]},"pwa.install":{"keyword":"PWA.install","pageReferences":[{"domain":"PWA","type":"4","description":"Installs the given manifest identity, optionally using the given installUrlOrBundleUrl\n\nIWA-specific install description:\nmanifestId corresponds to isolated-app:// + web_package::SignedWebBundleId\n\nFi...","domainHref":"tot/PWA/","href":"#method-install"}]},"pwa.uninstall":{"keyword":"PWA.uninstall","pageReferences":[{"domain":"PWA","type":"4","description":"Uninstalls the given manifest_id and closes any opened app windows.","domainHref":"tot/PWA/","href":"#method-uninstall"}]},"pwa.launch":{"keyword":"PWA.launch","pageReferences":[{"domain":"PWA","type":"4","description":"Launches the installed web app, or an url in the same web app instead of the\ndefault start url if it is provided. Returns a page Target.TargetID which\ncan be used to attach to via Target.attachToTarge...","domainHref":"tot/PWA/","href":"#method-launch"}]},"pwa.launchfilesinapp":{"keyword":"PWA.launchFilesInApp","pageReferences":[{"domain":"PWA","type":"4","description":"Opens one or more local files from an installed web app identified by its\nmanifestId. The web app needs to have file handlers registered to process\nthe files. The API returns one or more page Target.T...","domainHref":"tot/PWA/","href":"#method-launchFilesInApp"}]},"pwa.opencurrentpageinapp":{"keyword":"PWA.openCurrentPageInApp","pageReferences":[{"domain":"PWA","type":"4","description":"Opens the current page in its web app identified by the manifest id, needs\nto be called on a page target. This function returns immediately without\nwaiting for the app to finish loading.","domainHref":"tot/PWA/","href":"#method-openCurrentPageInApp"}]},"pwa.changeappusersettings":{"keyword":"PWA.changeAppUserSettings","pageReferences":[{"domain":"PWA","type":"4","description":"Changes user settings of the web app identified by its manifestId. If the\napp was not installed, this command returns an error. Unset parameters will\nbe ignored; unrecognized values will cause an erro...","domainHref":"tot/PWA/","href":"#method-changeAppUserSettings"}]},"pwa.filehandleraccept":{"keyword":"PWA.FileHandlerAccept","pageReferences":[{"domain":"PWA","type":"3","description":"The following types are the replica of\nhttps://crsrc.org/c/chrome/browser/web_applications/proto/web_app_os_integration_state.proto;drc=9910d3be894c8f142c977ba1023f30a656bc13fc;l=67","domainHref":"tot/PWA/","href":"#type-FileHandlerAccept"}]},"pwa.filehandler":{"keyword":"PWA.FileHandler","pageReferences":[{"domain":"PWA","type":"3","domainHref":"tot/PWA/","href":"#type-FileHandler"}]},"pwa.displaymode":{"keyword":"PWA.DisplayMode","pageReferences":[{"domain":"PWA","type":"3","description":"If user prefers opening the app in browser or an app window.","domainHref":"tot/PWA/","href":"#type-DisplayMode"}]},"bluetoothemulation":{"keyword":"BluetoothEmulation","pageReferences":[{"domain":"BluetoothEmulation","type":"0","description":"This domain allows configuring virtual Bluetooth devices to test\nthe web-bluetooth API.","domainHref":"tot/BluetoothEmulation/"}]},"bluetoothemulation.enable":{"keyword":"BluetoothEmulation.enable","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Enable the BluetoothEmulation domain.","domainHref":"tot/BluetoothEmulation/","href":"#method-enable"}]},"bluetoothemulation.setsimulatedcentralstate":{"keyword":"BluetoothEmulation.setSimulatedCentralState","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Set the state of the simulated central.","domainHref":"tot/BluetoothEmulation/","href":"#method-setSimulatedCentralState"}]},"bluetoothemulation.disable":{"keyword":"BluetoothEmulation.disable","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Disable the BluetoothEmulation domain.","domainHref":"tot/BluetoothEmulation/","href":"#method-disable"}]},"bluetoothemulation.simulatepreconnectedperipheral":{"keyword":"BluetoothEmulation.simulatePreconnectedPeripheral","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Simulates a peripheral with |address|, |name| and |knownServiceUuids|\nthat has already been connected to the system.","domainHref":"tot/BluetoothEmulation/","href":"#method-simulatePreconnectedPeripheral"}]},"bluetoothemulation.simulateadvertisement":{"keyword":"BluetoothEmulation.simulateAdvertisement","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Simulates an advertisement packet described in |entry| being received by\nthe central.","domainHref":"tot/BluetoothEmulation/","href":"#method-simulateAdvertisement"}]},"bluetoothemulation.simulategattoperationresponse":{"keyword":"BluetoothEmulation.simulateGATTOperationResponse","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Simulates the response code from the peripheral with |address| for a\nGATT operation of |type|. The |code| value follows the HCI Error Codes from\nBluetooth Core Specification Vol 2 Part D 1.3 List Of E...","domainHref":"tot/BluetoothEmulation/","href":"#method-simulateGATTOperationResponse"}]},"bluetoothemulation.simulatecharacteristicoperationresponse":{"keyword":"BluetoothEmulation.simulateCharacteristicOperationResponse","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Simulates the response from the characteristic with |characteristicId| for a\ncharacteristic operation of |type|. The |code| value follows the Error\nCodes from Bluetooth Core Specification Vol 3 Part F...","domainHref":"tot/BluetoothEmulation/","href":"#method-simulateCharacteristicOperationResponse"}]},"bluetoothemulation.simulatedescriptoroperationresponse":{"keyword":"BluetoothEmulation.simulateDescriptorOperationResponse","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Simulates the response from the descriptor with |descriptorId| for a\ndescriptor operation of |type|. The |code| value follows the Error\nCodes from Bluetooth Core Specification Vol 3 Part F 3.4.1.1 Err...","domainHref":"tot/BluetoothEmulation/","href":"#method-simulateDescriptorOperationResponse"}]},"bluetoothemulation.addservice":{"keyword":"BluetoothEmulation.addService","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Adds a service with |serviceUuid| to the peripheral with |address|.","domainHref":"tot/BluetoothEmulation/","href":"#method-addService"}]},"bluetoothemulation.removeservice":{"keyword":"BluetoothEmulation.removeService","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Removes the service respresented by |serviceId| from the simulated central.","domainHref":"tot/BluetoothEmulation/","href":"#method-removeService"}]},"bluetoothemulation.addcharacteristic":{"keyword":"BluetoothEmulation.addCharacteristic","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Adds a characteristic with |characteristicUuid| and |properties| to the\nservice represented by |serviceId|.","domainHref":"tot/BluetoothEmulation/","href":"#method-addCharacteristic"}]},"bluetoothemulation.removecharacteristic":{"keyword":"BluetoothEmulation.removeCharacteristic","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Removes the characteristic respresented by |characteristicId| from the\nsimulated central.","domainHref":"tot/BluetoothEmulation/","href":"#method-removeCharacteristic"}]},"bluetoothemulation.adddescriptor":{"keyword":"BluetoothEmulation.addDescriptor","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Adds a descriptor with |descriptorUuid| to the characteristic respresented\nby |characteristicId|.","domainHref":"tot/BluetoothEmulation/","href":"#method-addDescriptor"}]},"bluetoothemulation.removedescriptor":{"keyword":"BluetoothEmulation.removeDescriptor","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Removes the descriptor with |descriptorId| from the simulated central.","domainHref":"tot/BluetoothEmulation/","href":"#method-removeDescriptor"}]},"bluetoothemulation.simulategattdisconnection":{"keyword":"BluetoothEmulation.simulateGATTDisconnection","pageReferences":[{"domain":"BluetoothEmulation","type":"4","description":"Simulates a GATT disconnection from the peripheral with |address|.","domainHref":"tot/BluetoothEmulation/","href":"#method-simulateGATTDisconnection"}]},"bluetoothemulation.gattoperationreceived":{"keyword":"BluetoothEmulation.gattOperationReceived","pageReferences":[{"domain":"BluetoothEmulation","type":"1","description":"Event for when a GATT operation of |type| to the peripheral with |address|\nhappened.","domainHref":"tot/BluetoothEmulation/","href":"#event-gattOperationReceived"}]},"bluetoothemulation.characteristicoperationreceived":{"keyword":"BluetoothEmulation.characteristicOperationReceived","pageReferences":[{"domain":"BluetoothEmulation","type":"1","description":"Event for when a characteristic operation of |type| to the characteristic\nrespresented by |characteristicId| happened. |data| and |writeType| is\nexpected to exist when |type| is write.","domainHref":"tot/BluetoothEmulation/","href":"#event-characteristicOperationReceived"}]},"bluetoothemulation.descriptoroperationreceived":{"keyword":"BluetoothEmulation.descriptorOperationReceived","pageReferences":[{"domain":"BluetoothEmulation","type":"1","description":"Event for when a descriptor operation of |type| to the descriptor\nrespresented by |descriptorId| happened. |data| is expected to exist when\n|type| is write.","domainHref":"tot/BluetoothEmulation/","href":"#event-descriptorOperationReceived"}]},"bluetoothemulation.centralstate":{"keyword":"BluetoothEmulation.CentralState","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Indicates the various states of Central.","domainHref":"tot/BluetoothEmulation/","href":"#type-CentralState"}]},"bluetoothemulation.gattoperationtype":{"keyword":"BluetoothEmulation.GATTOperationType","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Indicates the various types of GATT event.","domainHref":"tot/BluetoothEmulation/","href":"#type-GATTOperationType"}]},"bluetoothemulation.characteristicwritetype":{"keyword":"BluetoothEmulation.CharacteristicWriteType","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Indicates the various types of characteristic write.","domainHref":"tot/BluetoothEmulation/","href":"#type-CharacteristicWriteType"}]},"bluetoothemulation.characteristicoperationtype":{"keyword":"BluetoothEmulation.CharacteristicOperationType","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Indicates the various types of characteristic operation.","domainHref":"tot/BluetoothEmulation/","href":"#type-CharacteristicOperationType"}]},"bluetoothemulation.descriptoroperationtype":{"keyword":"BluetoothEmulation.DescriptorOperationType","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Indicates the various types of descriptor operation.","domainHref":"tot/BluetoothEmulation/","href":"#type-DescriptorOperationType"}]},"bluetoothemulation.manufacturerdata":{"keyword":"BluetoothEmulation.ManufacturerData","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Stores the manufacturer data","domainHref":"tot/BluetoothEmulation/","href":"#type-ManufacturerData"}]},"bluetoothemulation.scanrecord":{"keyword":"BluetoothEmulation.ScanRecord","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Stores the byte data of the advertisement packet sent by a Bluetooth device.","domainHref":"tot/BluetoothEmulation/","href":"#type-ScanRecord"}]},"bluetoothemulation.scanentry":{"keyword":"BluetoothEmulation.ScanEntry","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Stores the advertisement packet information that is sent by a Bluetooth device.","domainHref":"tot/BluetoothEmulation/","href":"#type-ScanEntry"}]},"bluetoothemulation.characteristicproperties":{"keyword":"BluetoothEmulation.CharacteristicProperties","pageReferences":[{"domain":"BluetoothEmulation","type":"3","description":"Describes the properties of a characteristic. This follows Bluetooth Core\nSpecification BT 4.2 Vol 3 Part G 3.3.1. Characteristic Properties.","domainHref":"tot/BluetoothEmulation/","href":"#type-CharacteristicProperties"}]},"console":{"keyword":"Console","pageReferences":[{"domain":"Console","type":"0","description":"This domain is deprecated - use Runtime or Log instead.","domainHref":"tot/Console/"}]},"console.clearmessages":{"keyword":"Console.clearMessages","pageReferences":[{"domain":"Console","type":"4","description":"Does nothing.","domainHref":"tot/Console/","href":"#method-clearMessages"}]},"console.disable":{"keyword":"Console.disable","pageReferences":[{"domain":"Console","type":"4","description":"Disables console domain, prevents further console messages from being reported to the client.","domainHref":"tot/Console/","href":"#method-disable"}]},"console.enable":{"keyword":"Console.enable","pageReferences":[{"domain":"Console","type":"4","description":"Enables console domain, sends the messages collected so far to the client by means of the\n`messageAdded` notification.","domainHref":"tot/Console/","href":"#method-enable"}]},"console.messageadded":{"keyword":"Console.messageAdded","pageReferences":[{"domain":"Console","type":"1","description":"Issued when new console message is added.","domainHref":"tot/Console/","href":"#event-messageAdded"}]},"console.consolemessage":{"keyword":"Console.ConsoleMessage","pageReferences":[{"domain":"Console","type":"3","description":"Console message.","domainHref":"tot/Console/","href":"#type-ConsoleMessage"}]},"debugger":{"keyword":"Debugger","pageReferences":[{"domain":"Debugger","type":"0","description":"Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing\nbreakpoints, stepping through execution, exploring stack traces, etc.","domainHref":"tot/Debugger/"}]},"debugger.continuetolocation":{"keyword":"Debugger.continueToLocation","pageReferences":[{"domain":"Debugger","type":"4","description":"Continues execution until specific location is reached.","domainHref":"tot/Debugger/","href":"#method-continueToLocation"}]},"debugger.disable":{"keyword":"Debugger.disable","pageReferences":[{"domain":"Debugger","type":"4","description":"Disables debugger for given page.","domainHref":"tot/Debugger/","href":"#method-disable"}]},"debugger.enable":{"keyword":"Debugger.enable","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables debugger for the given page. Clients should not assume that the debugging has been\nenabled until the result for this command is received.","domainHref":"tot/Debugger/","href":"#method-enable"}]},"debugger.evaluateoncallframe":{"keyword":"Debugger.evaluateOnCallFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Evaluates expression on a given call frame.","domainHref":"tot/Debugger/","href":"#method-evaluateOnCallFrame"}]},"debugger.getpossiblebreakpoints":{"keyword":"Debugger.getPossibleBreakpoints","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns possible locations for breakpoint. scriptId in start and end range locations should be\nthe same.","domainHref":"tot/Debugger/","href":"#method-getPossibleBreakpoints"}]},"debugger.getscriptsource":{"keyword":"Debugger.getScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns source for the script with given id.","domainHref":"tot/Debugger/","href":"#method-getScriptSource"}]},"debugger.disassemblewasmmodule":{"keyword":"Debugger.disassembleWasmModule","pageReferences":[{"domain":"Debugger","type":"4","domainHref":"tot/Debugger/","href":"#method-disassembleWasmModule"}]},"debugger.nextwasmdisassemblychunk":{"keyword":"Debugger.nextWasmDisassemblyChunk","pageReferences":[{"domain":"Debugger","type":"4","description":"Disassemble the next chunk of lines for the module corresponding to the\nstream. If disassembly is complete, this API will invalidate the streamId\nand return an empty chunk. Any subsequent calls for th...","domainHref":"tot/Debugger/","href":"#method-nextWasmDisassemblyChunk"}]},"debugger.getwasmbytecode":{"keyword":"Debugger.getWasmBytecode","pageReferences":[{"domain":"Debugger","type":"4","description":"This command is deprecated. Use getScriptSource instead.","domainHref":"tot/Debugger/","href":"#method-getWasmBytecode"}]},"debugger.getstacktrace":{"keyword":"Debugger.getStackTrace","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns stack trace with given `stackTraceId`.","domainHref":"tot/Debugger/","href":"#method-getStackTrace"}]},"debugger.pause":{"keyword":"Debugger.pause","pageReferences":[{"domain":"Debugger","type":"4","description":"Stops on the next JavaScript statement.","domainHref":"tot/Debugger/","href":"#method-pause"}]},"debugger.pauseonasynccall":{"keyword":"Debugger.pauseOnAsyncCall","pageReferences":[{"domain":"Debugger","type":"4","domainHref":"tot/Debugger/","href":"#method-pauseOnAsyncCall"}]},"debugger.removebreakpoint":{"keyword":"Debugger.removeBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Removes JavaScript breakpoint.","domainHref":"tot/Debugger/","href":"#method-removeBreakpoint"}]},"debugger.restartframe":{"keyword":"Debugger.restartFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Restarts particular call frame from the beginning. The old, deprecated\nbehavior of `restartFrame` is to stay paused and allow further CDP commands\nafter a restart was scheduled. This can cause problem...","domainHref":"tot/Debugger/","href":"#method-restartFrame"}]},"debugger.resume":{"keyword":"Debugger.resume","pageReferences":[{"domain":"Debugger","type":"4","description":"Resumes JavaScript execution.","domainHref":"tot/Debugger/","href":"#method-resume"}]},"debugger.searchincontent":{"keyword":"Debugger.searchInContent","pageReferences":[{"domain":"Debugger","type":"4","description":"Searches for given string in script content.","domainHref":"tot/Debugger/","href":"#method-searchInContent"}]},"debugger.setasynccallstackdepth":{"keyword":"Debugger.setAsyncCallStackDepth","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"tot/Debugger/","href":"#method-setAsyncCallStackDepth"}]},"debugger.setblackboxexecutioncontexts":{"keyword":"Debugger.setBlackboxExecutionContexts","pageReferences":[{"domain":"Debugger","type":"4","description":"Replace previous blackbox execution contexts with passed ones. Forces backend to skip\nstepping/pausing in scripts in these execution contexts. VM will try to leave blackboxed script by\nperforming 'ste...","domainHref":"tot/Debugger/","href":"#method-setBlackboxExecutionContexts"}]},"debugger.setblackboxpatterns":{"keyword":"Debugger.setBlackboxPatterns","pageReferences":[{"domain":"Debugger","type":"4","description":"Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in\nscripts with url matching one of the patterns. VM will try to leave blackboxed script by\nperforming 'ste...","domainHref":"tot/Debugger/","href":"#method-setBlackboxPatterns"}]},"debugger.setblackboxedranges":{"keyword":"Debugger.setBlackboxedRanges","pageReferences":[{"domain":"Debugger","type":"4","description":"Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted\nscripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.\nPositions arr...","domainHref":"tot/Debugger/","href":"#method-setBlackboxedRanges"}]},"debugger.setbreakpoint":{"keyword":"Debugger.setBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at a given location.","domainHref":"tot/Debugger/","href":"#method-setBreakpoint"}]},"debugger.setinstrumentationbreakpoint":{"keyword":"Debugger.setInstrumentationBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets instrumentation breakpoint.","domainHref":"tot/Debugger/","href":"#method-setInstrumentationBreakpoint"}]},"debugger.setbreakpointbyurl":{"keyword":"Debugger.setBreakpointByUrl","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this\ncommand is issued, all existing parsed scripts will have breakpoints resolved and returned in\n`locations` p...","domainHref":"tot/Debugger/","href":"#method-setBreakpointByUrl"}]},"debugger.setbreakpointonfunctioncall":{"keyword":"Debugger.setBreakpointOnFunctionCall","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint before each call to the given function.\nIf another function was created from the same source as a given one,\ncalling it will also trigger the breakpoint.","domainHref":"tot/Debugger/","href":"#method-setBreakpointOnFunctionCall"}]},"debugger.setbreakpointsactive":{"keyword":"Debugger.setBreakpointsActive","pageReferences":[{"domain":"Debugger","type":"4","description":"Activates / deactivates all breakpoints on the page.","domainHref":"tot/Debugger/","href":"#method-setBreakpointsActive"}]},"debugger.setpauseonexceptions":{"keyword":"Debugger.setPauseOnExceptions","pageReferences":[{"domain":"Debugger","type":"4","description":"Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions,\nor caught exceptions, no exceptions. Initial pause on exceptions state is `none`.","domainHref":"tot/Debugger/","href":"#method-setPauseOnExceptions"}]},"debugger.setreturnvalue":{"keyword":"Debugger.setReturnValue","pageReferences":[{"domain":"Debugger","type":"4","description":"Changes return value in top frame. Available only at return break position.","domainHref":"tot/Debugger/","href":"#method-setReturnValue"}]},"debugger.setscriptsource":{"keyword":"Debugger.setScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Edits JavaScript source live.\n\nIn general, functions that are currently on the stack can not be edited with\na single exception: If the edited function is the top-most stack frame and\nthat is the only ...","domainHref":"tot/Debugger/","href":"#method-setScriptSource"}]},"debugger.setskipallpauses":{"keyword":"Debugger.setSkipAllPauses","pageReferences":[{"domain":"Debugger","type":"4","description":"Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).","domainHref":"tot/Debugger/","href":"#method-setSkipAllPauses"}]},"debugger.setvariablevalue":{"keyword":"Debugger.setVariableValue","pageReferences":[{"domain":"Debugger","type":"4","description":"Changes value of variable in a callframe. Object-based scopes are not supported and must be\nmutated manually.","domainHref":"tot/Debugger/","href":"#method-setVariableValue"}]},"debugger.stepinto":{"keyword":"Debugger.stepInto","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps into the function call.","domainHref":"tot/Debugger/","href":"#method-stepInto"}]},"debugger.stepout":{"keyword":"Debugger.stepOut","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps out of the function call.","domainHref":"tot/Debugger/","href":"#method-stepOut"}]},"debugger.stepover":{"keyword":"Debugger.stepOver","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps over the statement.","domainHref":"tot/Debugger/","href":"#method-stepOver"}]},"debugger.breakpointresolved":{"keyword":"Debugger.breakpointResolved","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when breakpoint is resolved to an actual script and location.\nDeprecated in favor of `resolvedBreakpoints` in the `scriptParsed` event.","domainHref":"tot/Debugger/","href":"#event-breakpointResolved"}]},"debugger.paused":{"keyword":"Debugger.paused","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.","domainHref":"tot/Debugger/","href":"#event-paused"}]},"debugger.resumed":{"keyword":"Debugger.resumed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine resumed execution.","domainHref":"tot/Debugger/","href":"#event-resumed"}]},"debugger.scriptfailedtoparse":{"keyword":"Debugger.scriptFailedToParse","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine fails to parse the script.","domainHref":"tot/Debugger/","href":"#event-scriptFailedToParse"}]},"debugger.scriptparsed":{"keyword":"Debugger.scriptParsed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine parses script. This event is also fired for all known and uncollected\nscripts upon enabling debugger.","domainHref":"tot/Debugger/","href":"#event-scriptParsed"}]},"debugger.breakpointid":{"keyword":"Debugger.BreakpointId","pageReferences":[{"domain":"Debugger","type":"3","description":"Breakpoint identifier.","domainHref":"tot/Debugger/","href":"#type-BreakpointId"}]},"debugger.callframeid":{"keyword":"Debugger.CallFrameId","pageReferences":[{"domain":"Debugger","type":"3","description":"Call frame identifier.","domainHref":"tot/Debugger/","href":"#type-CallFrameId"}]},"debugger.location":{"keyword":"Debugger.Location","pageReferences":[{"domain":"Debugger","type":"3","description":"Location in the source code.","domainHref":"tot/Debugger/","href":"#type-Location"}]},"debugger.scriptposition":{"keyword":"Debugger.ScriptPosition","pageReferences":[{"domain":"Debugger","type":"3","description":"Location in the source code.","domainHref":"tot/Debugger/","href":"#type-ScriptPosition"}]},"debugger.locationrange":{"keyword":"Debugger.LocationRange","pageReferences":[{"domain":"Debugger","type":"3","description":"Location range within one script.","domainHref":"tot/Debugger/","href":"#type-LocationRange"}]},"debugger.callframe":{"keyword":"Debugger.CallFrame","pageReferences":[{"domain":"Debugger","type":"3","description":"JavaScript call frame. Array of call frames form the call stack.","domainHref":"tot/Debugger/","href":"#type-CallFrame"}]},"debugger.scope":{"keyword":"Debugger.Scope","pageReferences":[{"domain":"Debugger","type":"3","description":"Scope description.","domainHref":"tot/Debugger/","href":"#type-Scope"}]},"debugger.searchmatch":{"keyword":"Debugger.SearchMatch","pageReferences":[{"domain":"Debugger","type":"3","description":"Search match for resource.","domainHref":"tot/Debugger/","href":"#type-SearchMatch"}]},"debugger.breaklocation":{"keyword":"Debugger.BreakLocation","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"tot/Debugger/","href":"#type-BreakLocation"}]},"debugger.wasmdisassemblychunk":{"keyword":"Debugger.WasmDisassemblyChunk","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"tot/Debugger/","href":"#type-WasmDisassemblyChunk"}]},"debugger.scriptlanguage":{"keyword":"Debugger.ScriptLanguage","pageReferences":[{"domain":"Debugger","type":"3","description":"Enum of possible script languages.","domainHref":"tot/Debugger/","href":"#type-ScriptLanguage"}]},"debugger.debugsymbols":{"keyword":"Debugger.DebugSymbols","pageReferences":[{"domain":"Debugger","type":"3","description":"Debug symbols available for a wasm script.","domainHref":"tot/Debugger/","href":"#type-DebugSymbols"}]},"debugger.resolvedbreakpoint":{"keyword":"Debugger.ResolvedBreakpoint","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"tot/Debugger/","href":"#type-ResolvedBreakpoint"}]},"heapprofiler":{"keyword":"HeapProfiler","pageReferences":[{"domain":"HeapProfiler","type":"0","domainHref":"tot/HeapProfiler/"}]},"heapprofiler.addinspectedheapobject":{"keyword":"HeapProfiler.addInspectedHeapObject","pageReferences":[{"domain":"HeapProfiler","type":"4","description":"Enables console to refer to the node with given id via $x (see Command Line API for more details\n$x functions).","domainHref":"tot/HeapProfiler/","href":"#method-addInspectedHeapObject"}]},"heapprofiler.collectgarbage":{"keyword":"HeapProfiler.collectGarbage","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-collectGarbage"}]},"heapprofiler.disable":{"keyword":"HeapProfiler.disable","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-disable"}]},"heapprofiler.enable":{"keyword":"HeapProfiler.enable","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-enable"}]},"heapprofiler.getheapobjectid":{"keyword":"HeapProfiler.getHeapObjectId","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-getHeapObjectId"}]},"heapprofiler.getobjectbyheapobjectid":{"keyword":"HeapProfiler.getObjectByHeapObjectId","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-getObjectByHeapObjectId"}]},"heapprofiler.getsamplingprofile":{"keyword":"HeapProfiler.getSamplingProfile","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-getSamplingProfile"}]},"heapprofiler.startsampling":{"keyword":"HeapProfiler.startSampling","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-startSampling"}]},"heapprofiler.starttrackingheapobjects":{"keyword":"HeapProfiler.startTrackingHeapObjects","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-startTrackingHeapObjects"}]},"heapprofiler.stopsampling":{"keyword":"HeapProfiler.stopSampling","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-stopSampling"}]},"heapprofiler.stoptrackingheapobjects":{"keyword":"HeapProfiler.stopTrackingHeapObjects","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-stopTrackingHeapObjects"}]},"heapprofiler.takeheapsnapshot":{"keyword":"HeapProfiler.takeHeapSnapshot","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"tot/HeapProfiler/","href":"#method-takeHeapSnapshot"}]},"heapprofiler.addheapsnapshotchunk":{"keyword":"HeapProfiler.addHeapSnapshotChunk","pageReferences":[{"domain":"HeapProfiler","type":"1","domainHref":"tot/HeapProfiler/","href":"#event-addHeapSnapshotChunk"}]},"heapprofiler.heapstatsupdate":{"keyword":"HeapProfiler.heapStatsUpdate","pageReferences":[{"domain":"HeapProfiler","type":"1","description":"If heap objects tracking has been started then backend may send update for one or more fragments","domainHref":"tot/HeapProfiler/","href":"#event-heapStatsUpdate"}]},"heapprofiler.lastseenobjectid":{"keyword":"HeapProfiler.lastSeenObjectId","pageReferences":[{"domain":"HeapProfiler","type":"1","description":"If heap objects tracking has been started then backend regularly sends a current value for last\nseen object id and corresponding timestamp. If the were changes in the heap since last event\nthen one or...","domainHref":"tot/HeapProfiler/","href":"#event-lastSeenObjectId"}]},"heapprofiler.reportheapsnapshotprogress":{"keyword":"HeapProfiler.reportHeapSnapshotProgress","pageReferences":[{"domain":"HeapProfiler","type":"1","domainHref":"tot/HeapProfiler/","href":"#event-reportHeapSnapshotProgress"}]},"heapprofiler.resetprofiles":{"keyword":"HeapProfiler.resetProfiles","pageReferences":[{"domain":"HeapProfiler","type":"1","domainHref":"tot/HeapProfiler/","href":"#event-resetProfiles"}]},"heapprofiler.heapsnapshotobjectid":{"keyword":"HeapProfiler.HeapSnapshotObjectId","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"Heap snapshot object id.","domainHref":"tot/HeapProfiler/","href":"#type-HeapSnapshotObjectId"}]},"heapprofiler.samplingheapprofilenode":{"keyword":"HeapProfiler.SamplingHeapProfileNode","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.","domainHref":"tot/HeapProfiler/","href":"#type-SamplingHeapProfileNode"}]},"heapprofiler.samplingheapprofilesample":{"keyword":"HeapProfiler.SamplingHeapProfileSample","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"A single sample from a sampling profile.","domainHref":"tot/HeapProfiler/","href":"#type-SamplingHeapProfileSample"}]},"heapprofiler.samplingheapprofile":{"keyword":"HeapProfiler.SamplingHeapProfile","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"Sampling profile.","domainHref":"tot/HeapProfiler/","href":"#type-SamplingHeapProfile"}]},"profiler":{"keyword":"Profiler","pageReferences":[{"domain":"Profiler","type":"0","domainHref":"tot/Profiler/"}]},"profiler.disable":{"keyword":"Profiler.disable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"tot/Profiler/","href":"#method-disable"}]},"profiler.enable":{"keyword":"Profiler.enable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"tot/Profiler/","href":"#method-enable"}]},"profiler.getbesteffortcoverage":{"keyword":"Profiler.getBestEffortCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Collect coverage data for the current isolate. The coverage data may be incomplete due to\ngarbage collection.","domainHref":"tot/Profiler/","href":"#method-getBestEffortCoverage"}]},"profiler.setsamplinginterval":{"keyword":"Profiler.setSamplingInterval","pageReferences":[{"domain":"Profiler","type":"4","description":"Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.","domainHref":"tot/Profiler/","href":"#method-setSamplingInterval"}]},"profiler.start":{"keyword":"Profiler.start","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"tot/Profiler/","href":"#method-start"}]},"profiler.startprecisecoverage":{"keyword":"Profiler.startPreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code\ncoverage may be incomplete. Enabling prevents running optimized code and resets execution\ncounters.","domainHref":"tot/Profiler/","href":"#method-startPreciseCoverage"}]},"profiler.stop":{"keyword":"Profiler.stop","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"tot/Profiler/","href":"#method-stop"}]},"profiler.stopprecisecoverage":{"keyword":"Profiler.stopPreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Disable precise code coverage. Disabling releases unnecessary execution count records and allows\nexecuting optimized code.","domainHref":"tot/Profiler/","href":"#method-stopPreciseCoverage"}]},"profiler.takeprecisecoverage":{"keyword":"Profiler.takePreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Collect coverage data for the current isolate, and resets execution counters. Precise code\ncoverage needs to have started.","domainHref":"tot/Profiler/","href":"#method-takePreciseCoverage"}]},"profiler.consoleprofilefinished":{"keyword":"Profiler.consoleProfileFinished","pageReferences":[{"domain":"Profiler","type":"1","domainHref":"tot/Profiler/","href":"#event-consoleProfileFinished"}]},"profiler.consoleprofilestarted":{"keyword":"Profiler.consoleProfileStarted","pageReferences":[{"domain":"Profiler","type":"1","description":"Sent when new profile recording is started using console.profile() call.","domainHref":"tot/Profiler/","href":"#event-consoleProfileStarted"}]},"profiler.precisecoveragedeltaupdate":{"keyword":"Profiler.preciseCoverageDeltaUpdate","pageReferences":[{"domain":"Profiler","type":"1","description":"Reports coverage delta since the last poll (either from an event like this, or from\n`takePreciseCoverage` for the current isolate. May only be sent if precise code\ncoverage has been started. This even...","domainHref":"tot/Profiler/","href":"#event-preciseCoverageDeltaUpdate"}]},"profiler.profilenode":{"keyword":"Profiler.ProfileNode","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile node. Holds callsite information, execution statistics and child nodes.","domainHref":"tot/Profiler/","href":"#type-ProfileNode"}]},"profiler.profile":{"keyword":"Profiler.Profile","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile.","domainHref":"tot/Profiler/","href":"#type-Profile"}]},"profiler.positiontickinfo":{"keyword":"Profiler.PositionTickInfo","pageReferences":[{"domain":"Profiler","type":"3","description":"Specifies a number of samples attributed to a certain source position.","domainHref":"tot/Profiler/","href":"#type-PositionTickInfo"}]},"profiler.coveragerange":{"keyword":"Profiler.CoverageRange","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a source range.","domainHref":"tot/Profiler/","href":"#type-CoverageRange"}]},"profiler.functioncoverage":{"keyword":"Profiler.FunctionCoverage","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a JavaScript function.","domainHref":"tot/Profiler/","href":"#type-FunctionCoverage"}]},"profiler.scriptcoverage":{"keyword":"Profiler.ScriptCoverage","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a JavaScript script.","domainHref":"tot/Profiler/","href":"#type-ScriptCoverage"}]},"runtime":{"keyword":"Runtime","pageReferences":[{"domain":"Runtime","type":"0","description":"Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects.\nEvaluation results are returned as mirror object that expose object type, string representation\nand unique i...","domainHref":"tot/Runtime/"}]},"runtime.awaitpromise":{"keyword":"Runtime.awaitPromise","pageReferences":[{"domain":"Runtime","type":"4","description":"Add handler to promise with given promise object id.","domainHref":"tot/Runtime/","href":"#method-awaitPromise"}]},"runtime.callfunctionon":{"keyword":"Runtime.callFunctionOn","pageReferences":[{"domain":"Runtime","type":"4","description":"Calls function with given declaration on the given object. Object group of the result is\ninherited from the target object.","domainHref":"tot/Runtime/","href":"#method-callFunctionOn"}]},"runtime.compilescript":{"keyword":"Runtime.compileScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Compiles expression.","domainHref":"tot/Runtime/","href":"#method-compileScript"}]},"runtime.disable":{"keyword":"Runtime.disable","pageReferences":[{"domain":"Runtime","type":"4","description":"Disables reporting of execution contexts creation.","domainHref":"tot/Runtime/","href":"#method-disable"}]},"runtime.discardconsoleentries":{"keyword":"Runtime.discardConsoleEntries","pageReferences":[{"domain":"Runtime","type":"4","description":"Discards collected exceptions and console API calls.","domainHref":"tot/Runtime/","href":"#method-discardConsoleEntries"}]},"runtime.enable":{"keyword":"Runtime.enable","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables reporting of execution contexts creation by means of `executionContextCreated` event.\nWhen the reporting gets enabled the event will be sent immediately for each existing execution\ncontext.","domainHref":"tot/Runtime/","href":"#method-enable"}]},"runtime.evaluate":{"keyword":"Runtime.evaluate","pageReferences":[{"domain":"Runtime","type":"4","description":"Evaluates expression on global object.","domainHref":"tot/Runtime/","href":"#method-evaluate"}]},"runtime.getisolateid":{"keyword":"Runtime.getIsolateId","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns the isolate id.","domainHref":"tot/Runtime/","href":"#method-getIsolateId"}]},"runtime.getheapusage":{"keyword":"Runtime.getHeapUsage","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns the JavaScript heap usage.\nIt is the total usage of the corresponding isolate not scoped to a particular Runtime.","domainHref":"tot/Runtime/","href":"#method-getHeapUsage"}]},"runtime.getproperties":{"keyword":"Runtime.getProperties","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns properties of a given object. Object group of the result is inherited from the target\nobject.","domainHref":"tot/Runtime/","href":"#method-getProperties"}]},"runtime.globallexicalscopenames":{"keyword":"Runtime.globalLexicalScopeNames","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns all let, const and class variables from global scope.","domainHref":"tot/Runtime/","href":"#method-globalLexicalScopeNames"}]},"runtime.queryobjects":{"keyword":"Runtime.queryObjects","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"tot/Runtime/","href":"#method-queryObjects"}]},"runtime.releaseobject":{"keyword":"Runtime.releaseObject","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases remote object with given id.","domainHref":"tot/Runtime/","href":"#method-releaseObject"}]},"runtime.releaseobjectgroup":{"keyword":"Runtime.releaseObjectGroup","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases all remote objects that belong to a given group.","domainHref":"tot/Runtime/","href":"#method-releaseObjectGroup"}]},"runtime.runifwaitingfordebugger":{"keyword":"Runtime.runIfWaitingForDebugger","pageReferences":[{"domain":"Runtime","type":"4","description":"Tells inspected instance to run if it was waiting for debugger to attach.","domainHref":"tot/Runtime/","href":"#method-runIfWaitingForDebugger"}]},"runtime.runscript":{"keyword":"Runtime.runScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Runs script with given id in a given context.","domainHref":"tot/Runtime/","href":"#method-runScript"}]},"runtime.setasynccallstackdepth":{"keyword":"Runtime.setAsyncCallStackDepth","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"tot/Runtime/","href":"#method-setAsyncCallStackDepth"}]},"runtime.setcustomobjectformatterenabled":{"keyword":"Runtime.setCustomObjectFormatterEnabled","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"tot/Runtime/","href":"#method-setCustomObjectFormatterEnabled"}]},"runtime.setmaxcallstacksizetocapture":{"keyword":"Runtime.setMaxCallStackSizeToCapture","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"tot/Runtime/","href":"#method-setMaxCallStackSizeToCapture"}]},"runtime.terminateexecution":{"keyword":"Runtime.terminateExecution","pageReferences":[{"domain":"Runtime","type":"4","description":"Terminate current or next JavaScript execution.\nWill cancel the termination when the outer-most script execution ends.","domainHref":"tot/Runtime/","href":"#method-terminateExecution"}]},"runtime.addbinding":{"keyword":"Runtime.addBinding","pageReferences":[{"domain":"Runtime","type":"4","description":"If executionContextId is empty, adds binding with the given name on the\nglobal objects of all inspected contexts, including those created later,\nbindings survive reloads.\nBinding function takes exactl...","domainHref":"tot/Runtime/","href":"#method-addBinding"}]},"runtime.removebinding":{"keyword":"Runtime.removeBinding","pageReferences":[{"domain":"Runtime","type":"4","description":"This method does not remove binding function from global object but\nunsubscribes current runtime agent from Runtime.bindingCalled notifications.","domainHref":"tot/Runtime/","href":"#method-removeBinding"}]},"runtime.getexceptiondetails":{"keyword":"Runtime.getExceptionDetails","pageReferences":[{"domain":"Runtime","type":"4","description":"This method tries to lookup and populate exception details for a\nJavaScript Error object.\nNote that the stackTrace portion of the resulting exceptionDetails will\nonly be populated if the Runtime domai...","domainHref":"tot/Runtime/","href":"#method-getExceptionDetails"}]},"runtime.bindingcalled":{"keyword":"Runtime.bindingCalled","pageReferences":[{"domain":"Runtime","type":"1","description":"Notification is issued every time when binding is called.","domainHref":"tot/Runtime/","href":"#event-bindingCalled"}]},"runtime.consoleapicalled":{"keyword":"Runtime.consoleAPICalled","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when console API was called.","domainHref":"tot/Runtime/","href":"#event-consoleAPICalled"}]},"runtime.exceptionrevoked":{"keyword":"Runtime.exceptionRevoked","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when unhandled exception was revoked.","domainHref":"tot/Runtime/","href":"#event-exceptionRevoked"}]},"runtime.exceptionthrown":{"keyword":"Runtime.exceptionThrown","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when exception was thrown and unhandled.","domainHref":"tot/Runtime/","href":"#event-exceptionThrown"}]},"runtime.executioncontextcreated":{"keyword":"Runtime.executionContextCreated","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when new execution context is created.","domainHref":"tot/Runtime/","href":"#event-executionContextCreated"}]},"runtime.executioncontextdestroyed":{"keyword":"Runtime.executionContextDestroyed","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when execution context is destroyed.","domainHref":"tot/Runtime/","href":"#event-executionContextDestroyed"}]},"runtime.executioncontextscleared":{"keyword":"Runtime.executionContextsCleared","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when all executionContexts were cleared in browser","domainHref":"tot/Runtime/","href":"#event-executionContextsCleared"}]},"runtime.inspectrequested":{"keyword":"Runtime.inspectRequested","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when object should be inspected (for example, as a result of inspect() command line API\ncall).","domainHref":"tot/Runtime/","href":"#event-inspectRequested"}]},"runtime.scriptid":{"keyword":"Runtime.ScriptId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique script identifier.","domainHref":"tot/Runtime/","href":"#type-ScriptId"}]},"runtime.serializationoptions":{"keyword":"Runtime.SerializationOptions","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents options for serialization. Overrides `generatePreview` and `returnByValue`.","domainHref":"tot/Runtime/","href":"#type-SerializationOptions"}]},"runtime.deepserializedvalue":{"keyword":"Runtime.DeepSerializedValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents deep serialized value.","domainHref":"tot/Runtime/","href":"#type-DeepSerializedValue"}]},"runtime.remoteobjectid":{"keyword":"Runtime.RemoteObjectId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique object identifier.","domainHref":"tot/Runtime/","href":"#type-RemoteObjectId"}]},"runtime.unserializablevalue":{"keyword":"Runtime.UnserializableValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,\n`-Infinity`, and bigint literals.","domainHref":"tot/Runtime/","href":"#type-UnserializableValue"}]},"runtime.remoteobject":{"keyword":"Runtime.RemoteObject","pageReferences":[{"domain":"Runtime","type":"3","description":"Mirror object referencing original JavaScript object.","domainHref":"tot/Runtime/","href":"#type-RemoteObject"}]},"runtime.custompreview":{"keyword":"Runtime.CustomPreview","pageReferences":[{"domain":"Runtime","type":"3","domainHref":"tot/Runtime/","href":"#type-CustomPreview"}]},"runtime.objectpreview":{"keyword":"Runtime.ObjectPreview","pageReferences":[{"domain":"Runtime","type":"3","description":"Object containing abbreviated remote object value.","domainHref":"tot/Runtime/","href":"#type-ObjectPreview"}]},"runtime.propertypreview":{"keyword":"Runtime.PropertyPreview","pageReferences":[{"domain":"Runtime","type":"3","domainHref":"tot/Runtime/","href":"#type-PropertyPreview"}]},"runtime.entrypreview":{"keyword":"Runtime.EntryPreview","pageReferences":[{"domain":"Runtime","type":"3","domainHref":"tot/Runtime/","href":"#type-EntryPreview"}]},"runtime.propertydescriptor":{"keyword":"Runtime.PropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object property descriptor.","domainHref":"tot/Runtime/","href":"#type-PropertyDescriptor"}]},"runtime.internalpropertydescriptor":{"keyword":"Runtime.InternalPropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object internal property descriptor. This property isn't normally visible in JavaScript code.","domainHref":"tot/Runtime/","href":"#type-InternalPropertyDescriptor"}]},"runtime.privatepropertydescriptor":{"keyword":"Runtime.PrivatePropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object private field descriptor.","domainHref":"tot/Runtime/","href":"#type-PrivatePropertyDescriptor"}]},"runtime.callargument":{"keyword":"Runtime.CallArgument","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents function call argument. Either remote object id `objectId`, primitive `value`,\nunserializable primitive value or neither of (for undefined) them should be specified.","domainHref":"tot/Runtime/","href":"#type-CallArgument"}]},"runtime.executioncontextid":{"keyword":"Runtime.ExecutionContextId","pageReferences":[{"domain":"Runtime","type":"3","description":"Id of an execution context.","domainHref":"tot/Runtime/","href":"#type-ExecutionContextId"}]},"runtime.executioncontextdescription":{"keyword":"Runtime.ExecutionContextDescription","pageReferences":[{"domain":"Runtime","type":"3","description":"Description of an isolated world.","domainHref":"tot/Runtime/","href":"#type-ExecutionContextDescription"}]},"runtime.exceptiondetails":{"keyword":"Runtime.ExceptionDetails","pageReferences":[{"domain":"Runtime","type":"3","description":"Detailed information about exception (or error) that was thrown during script compilation or\nexecution.","domainHref":"tot/Runtime/","href":"#type-ExceptionDetails"}]},"runtime.timestamp":{"keyword":"Runtime.Timestamp","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds since epoch.","domainHref":"tot/Runtime/","href":"#type-Timestamp"}]},"runtime.timedelta":{"keyword":"Runtime.TimeDelta","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds.","domainHref":"tot/Runtime/","href":"#type-TimeDelta"}]},"runtime.callframe":{"keyword":"Runtime.CallFrame","pageReferences":[{"domain":"Runtime","type":"3","description":"Stack entry for runtime errors and assertions.","domainHref":"tot/Runtime/","href":"#type-CallFrame"}]},"runtime.stacktrace":{"keyword":"Runtime.StackTrace","pageReferences":[{"domain":"Runtime","type":"3","description":"Call frames for assertions or error messages.","domainHref":"tot/Runtime/","href":"#type-StackTrace"}]},"runtime.uniquedebuggerid":{"keyword":"Runtime.UniqueDebuggerId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique identifier of current debugger.","domainHref":"tot/Runtime/","href":"#type-UniqueDebuggerId"}]},"runtime.stacktraceid":{"keyword":"Runtime.StackTraceId","pageReferences":[{"domain":"Runtime","type":"3","description":"If `debuggerId` is set stack trace comes from another debugger and can be resolved there. This\nallows to track cross-debugger calls. See `Runtime.StackTrace` and `Debugger.paused` for usages.","domainHref":"tot/Runtime/","href":"#type-StackTraceId"}]},"schema":{"keyword":"Schema","pageReferences":[{"domain":"Schema","type":"0","description":"This domain is deprecated.","domainHref":"tot/Schema/"}]},"schema.getdomains":{"keyword":"Schema.getDomains","pageReferences":[{"domain":"Schema","type":"4","description":"Returns supported domains.","domainHref":"tot/Schema/","href":"#method-getDomains"}]},"schema.domain":{"keyword":"Schema.Domain","pageReferences":[{"domain":"Schema","type":"3","description":"Description of the protocol domain.","domainHref":"tot/Schema/","href":"#type-Domain"}]}} \ No newline at end of file diff --git a/search_index/v8.json b/search_index/v8.json deleted file mode 100644 index cd19b7b43d..0000000000 --- a/search_index/v8.json +++ /dev/null @@ -1 +0,0 @@ -{"console":{"keyword":"Console","pageReferences":[{"domain":"Console","type":"0","description":"This domain is deprecated - use Runtime or Log instead.","domainHref":"v8/Console/"}]},"console.clearmessages":{"keyword":"Console.clearMessages","pageReferences":[{"domain":"Console","type":"4","description":"Does nothing.","domainHref":"v8/Console/","href":"#method-clearMessages"}]},"console.disable":{"keyword":"Console.disable","pageReferences":[{"domain":"Console","type":"4","description":"Disables console domain, prevents further console messages from being reported to the client.","domainHref":"v8/Console/","href":"#method-disable"}]},"console.enable":{"keyword":"Console.enable","pageReferences":[{"domain":"Console","type":"4","description":"Enables console domain, sends the messages collected so far to the client by means of the\n`messageAdded` notification.","domainHref":"v8/Console/","href":"#method-enable"}]},"console.messageadded":{"keyword":"Console.messageAdded","pageReferences":[{"domain":"Console","type":"1","description":"Issued when new console message is added.","domainHref":"v8/Console/","href":"#event-messageAdded"}]},"console.consolemessage":{"keyword":"Console.ConsoleMessage","pageReferences":[{"domain":"Console","type":"3","description":"Console message.","domainHref":"v8/Console/","href":"#type-ConsoleMessage"}]},"debugger":{"keyword":"Debugger","pageReferences":[{"domain":"Debugger","type":"0","description":"Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing\nbreakpoints, stepping through execution, exploring stack traces, etc.","domainHref":"v8/Debugger/"}]},"debugger.continuetolocation":{"keyword":"Debugger.continueToLocation","pageReferences":[{"domain":"Debugger","type":"4","description":"Continues execution until specific location is reached.","domainHref":"v8/Debugger/","href":"#method-continueToLocation"}]},"debugger.disable":{"keyword":"Debugger.disable","pageReferences":[{"domain":"Debugger","type":"4","description":"Disables debugger for given page.","domainHref":"v8/Debugger/","href":"#method-disable"}]},"debugger.enable":{"keyword":"Debugger.enable","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables debugger for the given page. Clients should not assume that the debugging has been\nenabled until the result for this command is received.","domainHref":"v8/Debugger/","href":"#method-enable"}]},"debugger.evaluateoncallframe":{"keyword":"Debugger.evaluateOnCallFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Evaluates expression on a given call frame.","domainHref":"v8/Debugger/","href":"#method-evaluateOnCallFrame"}]},"debugger.getpossiblebreakpoints":{"keyword":"Debugger.getPossibleBreakpoints","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns possible locations for breakpoint. scriptId in start and end range locations should be\nthe same.","domainHref":"v8/Debugger/","href":"#method-getPossibleBreakpoints"}]},"debugger.getscriptsource":{"keyword":"Debugger.getScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns source for the script with given id.","domainHref":"v8/Debugger/","href":"#method-getScriptSource"}]},"debugger.disassemblewasmmodule":{"keyword":"Debugger.disassembleWasmModule","pageReferences":[{"domain":"Debugger","type":"4","domainHref":"v8/Debugger/","href":"#method-disassembleWasmModule"}]},"debugger.nextwasmdisassemblychunk":{"keyword":"Debugger.nextWasmDisassemblyChunk","pageReferences":[{"domain":"Debugger","type":"4","description":"Disassemble the next chunk of lines for the module corresponding to the\nstream. If disassembly is complete, this API will invalidate the streamId\nand return an empty chunk. Any subsequent calls for th...","domainHref":"v8/Debugger/","href":"#method-nextWasmDisassemblyChunk"}]},"debugger.getwasmbytecode":{"keyword":"Debugger.getWasmBytecode","pageReferences":[{"domain":"Debugger","type":"4","description":"This command is deprecated. Use getScriptSource instead.","domainHref":"v8/Debugger/","href":"#method-getWasmBytecode"}]},"debugger.getstacktrace":{"keyword":"Debugger.getStackTrace","pageReferences":[{"domain":"Debugger","type":"4","description":"Returns stack trace with given `stackTraceId`.","domainHref":"v8/Debugger/","href":"#method-getStackTrace"}]},"debugger.pause":{"keyword":"Debugger.pause","pageReferences":[{"domain":"Debugger","type":"4","description":"Stops on the next JavaScript statement.","domainHref":"v8/Debugger/","href":"#method-pause"}]},"debugger.pauseonasynccall":{"keyword":"Debugger.pauseOnAsyncCall","pageReferences":[{"domain":"Debugger","type":"4","domainHref":"v8/Debugger/","href":"#method-pauseOnAsyncCall"}]},"debugger.removebreakpoint":{"keyword":"Debugger.removeBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Removes JavaScript breakpoint.","domainHref":"v8/Debugger/","href":"#method-removeBreakpoint"}]},"debugger.restartframe":{"keyword":"Debugger.restartFrame","pageReferences":[{"domain":"Debugger","type":"4","description":"Restarts particular call frame from the beginning. The old, deprecated\nbehavior of `restartFrame` is to stay paused and allow further CDP commands\nafter a restart was scheduled. This can cause problem...","domainHref":"v8/Debugger/","href":"#method-restartFrame"}]},"debugger.resume":{"keyword":"Debugger.resume","pageReferences":[{"domain":"Debugger","type":"4","description":"Resumes JavaScript execution.","domainHref":"v8/Debugger/","href":"#method-resume"}]},"debugger.searchincontent":{"keyword":"Debugger.searchInContent","pageReferences":[{"domain":"Debugger","type":"4","description":"Searches for given string in script content.","domainHref":"v8/Debugger/","href":"#method-searchInContent"}]},"debugger.setasynccallstackdepth":{"keyword":"Debugger.setAsyncCallStackDepth","pageReferences":[{"domain":"Debugger","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"v8/Debugger/","href":"#method-setAsyncCallStackDepth"}]},"debugger.setblackboxexecutioncontexts":{"keyword":"Debugger.setBlackboxExecutionContexts","pageReferences":[{"domain":"Debugger","type":"4","description":"Replace previous blackbox execution contexts with passed ones. Forces backend to skip\nstepping/pausing in scripts in these execution contexts. VM will try to leave blackboxed script by\nperforming 'ste...","domainHref":"v8/Debugger/","href":"#method-setBlackboxExecutionContexts"}]},"debugger.setblackboxpatterns":{"keyword":"Debugger.setBlackboxPatterns","pageReferences":[{"domain":"Debugger","type":"4","description":"Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in\nscripts with url matching one of the patterns. VM will try to leave blackboxed script by\nperforming 'ste...","domainHref":"v8/Debugger/","href":"#method-setBlackboxPatterns"}]},"debugger.setblackboxedranges":{"keyword":"Debugger.setBlackboxedRanges","pageReferences":[{"domain":"Debugger","type":"4","description":"Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted\nscripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.\nPositions arr...","domainHref":"v8/Debugger/","href":"#method-setBlackboxedRanges"}]},"debugger.setbreakpoint":{"keyword":"Debugger.setBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at a given location.","domainHref":"v8/Debugger/","href":"#method-setBreakpoint"}]},"debugger.setinstrumentationbreakpoint":{"keyword":"Debugger.setInstrumentationBreakpoint","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets instrumentation breakpoint.","domainHref":"v8/Debugger/","href":"#method-setInstrumentationBreakpoint"}]},"debugger.setbreakpointbyurl":{"keyword":"Debugger.setBreakpointByUrl","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this\ncommand is issued, all existing parsed scripts will have breakpoints resolved and returned in\n`locations` p...","domainHref":"v8/Debugger/","href":"#method-setBreakpointByUrl"}]},"debugger.setbreakpointonfunctioncall":{"keyword":"Debugger.setBreakpointOnFunctionCall","pageReferences":[{"domain":"Debugger","type":"4","description":"Sets JavaScript breakpoint before each call to the given function.\nIf another function was created from the same source as a given one,\ncalling it will also trigger the breakpoint.","domainHref":"v8/Debugger/","href":"#method-setBreakpointOnFunctionCall"}]},"debugger.setbreakpointsactive":{"keyword":"Debugger.setBreakpointsActive","pageReferences":[{"domain":"Debugger","type":"4","description":"Activates / deactivates all breakpoints on the page.","domainHref":"v8/Debugger/","href":"#method-setBreakpointsActive"}]},"debugger.setpauseonexceptions":{"keyword":"Debugger.setPauseOnExceptions","pageReferences":[{"domain":"Debugger","type":"4","description":"Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions,\nor caught exceptions, no exceptions. Initial pause on exceptions state is `none`.","domainHref":"v8/Debugger/","href":"#method-setPauseOnExceptions"}]},"debugger.setreturnvalue":{"keyword":"Debugger.setReturnValue","pageReferences":[{"domain":"Debugger","type":"4","description":"Changes return value in top frame. Available only at return break position.","domainHref":"v8/Debugger/","href":"#method-setReturnValue"}]},"debugger.setscriptsource":{"keyword":"Debugger.setScriptSource","pageReferences":[{"domain":"Debugger","type":"4","description":"Edits JavaScript source live.\n\nIn general, functions that are currently on the stack can not be edited with\na single exception: If the edited function is the top-most stack frame and\nthat is the only ...","domainHref":"v8/Debugger/","href":"#method-setScriptSource"}]},"debugger.setskipallpauses":{"keyword":"Debugger.setSkipAllPauses","pageReferences":[{"domain":"Debugger","type":"4","description":"Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).","domainHref":"v8/Debugger/","href":"#method-setSkipAllPauses"}]},"debugger.setvariablevalue":{"keyword":"Debugger.setVariableValue","pageReferences":[{"domain":"Debugger","type":"4","description":"Changes value of variable in a callframe. Object-based scopes are not supported and must be\nmutated manually.","domainHref":"v8/Debugger/","href":"#method-setVariableValue"}]},"debugger.stepinto":{"keyword":"Debugger.stepInto","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps into the function call.","domainHref":"v8/Debugger/","href":"#method-stepInto"}]},"debugger.stepout":{"keyword":"Debugger.stepOut","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps out of the function call.","domainHref":"v8/Debugger/","href":"#method-stepOut"}]},"debugger.stepover":{"keyword":"Debugger.stepOver","pageReferences":[{"domain":"Debugger","type":"4","description":"Steps over the statement.","domainHref":"v8/Debugger/","href":"#method-stepOver"}]},"debugger.breakpointresolved":{"keyword":"Debugger.breakpointResolved","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when breakpoint is resolved to an actual script and location.\nDeprecated in favor of `resolvedBreakpoints` in the `scriptParsed` event.","domainHref":"v8/Debugger/","href":"#event-breakpointResolved"}]},"debugger.paused":{"keyword":"Debugger.paused","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.","domainHref":"v8/Debugger/","href":"#event-paused"}]},"debugger.resumed":{"keyword":"Debugger.resumed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when the virtual machine resumed execution.","domainHref":"v8/Debugger/","href":"#event-resumed"}]},"debugger.scriptfailedtoparse":{"keyword":"Debugger.scriptFailedToParse","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine fails to parse the script.","domainHref":"v8/Debugger/","href":"#event-scriptFailedToParse"}]},"debugger.scriptparsed":{"keyword":"Debugger.scriptParsed","pageReferences":[{"domain":"Debugger","type":"1","description":"Fired when virtual machine parses script. This event is also fired for all known and uncollected\nscripts upon enabling debugger.","domainHref":"v8/Debugger/","href":"#event-scriptParsed"}]},"debugger.breakpointid":{"keyword":"Debugger.BreakpointId","pageReferences":[{"domain":"Debugger","type":"3","description":"Breakpoint identifier.","domainHref":"v8/Debugger/","href":"#type-BreakpointId"}]},"debugger.callframeid":{"keyword":"Debugger.CallFrameId","pageReferences":[{"domain":"Debugger","type":"3","description":"Call frame identifier.","domainHref":"v8/Debugger/","href":"#type-CallFrameId"}]},"debugger.location":{"keyword":"Debugger.Location","pageReferences":[{"domain":"Debugger","type":"3","description":"Location in the source code.","domainHref":"v8/Debugger/","href":"#type-Location"}]},"debugger.scriptposition":{"keyword":"Debugger.ScriptPosition","pageReferences":[{"domain":"Debugger","type":"3","description":"Location in the source code.","domainHref":"v8/Debugger/","href":"#type-ScriptPosition"}]},"debugger.locationrange":{"keyword":"Debugger.LocationRange","pageReferences":[{"domain":"Debugger","type":"3","description":"Location range within one script.","domainHref":"v8/Debugger/","href":"#type-LocationRange"}]},"debugger.callframe":{"keyword":"Debugger.CallFrame","pageReferences":[{"domain":"Debugger","type":"3","description":"JavaScript call frame. Array of call frames form the call stack.","domainHref":"v8/Debugger/","href":"#type-CallFrame"}]},"debugger.scope":{"keyword":"Debugger.Scope","pageReferences":[{"domain":"Debugger","type":"3","description":"Scope description.","domainHref":"v8/Debugger/","href":"#type-Scope"}]},"debugger.searchmatch":{"keyword":"Debugger.SearchMatch","pageReferences":[{"domain":"Debugger","type":"3","description":"Search match for resource.","domainHref":"v8/Debugger/","href":"#type-SearchMatch"}]},"debugger.breaklocation":{"keyword":"Debugger.BreakLocation","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"v8/Debugger/","href":"#type-BreakLocation"}]},"debugger.wasmdisassemblychunk":{"keyword":"Debugger.WasmDisassemblyChunk","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"v8/Debugger/","href":"#type-WasmDisassemblyChunk"}]},"debugger.scriptlanguage":{"keyword":"Debugger.ScriptLanguage","pageReferences":[{"domain":"Debugger","type":"3","description":"Enum of possible script languages.","domainHref":"v8/Debugger/","href":"#type-ScriptLanguage"}]},"debugger.debugsymbols":{"keyword":"Debugger.DebugSymbols","pageReferences":[{"domain":"Debugger","type":"3","description":"Debug symbols available for a wasm script.","domainHref":"v8/Debugger/","href":"#type-DebugSymbols"}]},"debugger.resolvedbreakpoint":{"keyword":"Debugger.ResolvedBreakpoint","pageReferences":[{"domain":"Debugger","type":"3","domainHref":"v8/Debugger/","href":"#type-ResolvedBreakpoint"}]},"heapprofiler":{"keyword":"HeapProfiler","pageReferences":[{"domain":"HeapProfiler","type":"0","domainHref":"v8/HeapProfiler/"}]},"heapprofiler.addinspectedheapobject":{"keyword":"HeapProfiler.addInspectedHeapObject","pageReferences":[{"domain":"HeapProfiler","type":"4","description":"Enables console to refer to the node with given id via $x (see Command Line API for more details\n$x functions).","domainHref":"v8/HeapProfiler/","href":"#method-addInspectedHeapObject"}]},"heapprofiler.collectgarbage":{"keyword":"HeapProfiler.collectGarbage","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-collectGarbage"}]},"heapprofiler.disable":{"keyword":"HeapProfiler.disable","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-disable"}]},"heapprofiler.enable":{"keyword":"HeapProfiler.enable","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-enable"}]},"heapprofiler.getheapobjectid":{"keyword":"HeapProfiler.getHeapObjectId","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-getHeapObjectId"}]},"heapprofiler.getobjectbyheapobjectid":{"keyword":"HeapProfiler.getObjectByHeapObjectId","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-getObjectByHeapObjectId"}]},"heapprofiler.getsamplingprofile":{"keyword":"HeapProfiler.getSamplingProfile","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-getSamplingProfile"}]},"heapprofiler.startsampling":{"keyword":"HeapProfiler.startSampling","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-startSampling"}]},"heapprofiler.starttrackingheapobjects":{"keyword":"HeapProfiler.startTrackingHeapObjects","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-startTrackingHeapObjects"}]},"heapprofiler.stopsampling":{"keyword":"HeapProfiler.stopSampling","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-stopSampling"}]},"heapprofiler.stoptrackingheapobjects":{"keyword":"HeapProfiler.stopTrackingHeapObjects","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-stopTrackingHeapObjects"}]},"heapprofiler.takeheapsnapshot":{"keyword":"HeapProfiler.takeHeapSnapshot","pageReferences":[{"domain":"HeapProfiler","type":"4","domainHref":"v8/HeapProfiler/","href":"#method-takeHeapSnapshot"}]},"heapprofiler.addheapsnapshotchunk":{"keyword":"HeapProfiler.addHeapSnapshotChunk","pageReferences":[{"domain":"HeapProfiler","type":"1","domainHref":"v8/HeapProfiler/","href":"#event-addHeapSnapshotChunk"}]},"heapprofiler.heapstatsupdate":{"keyword":"HeapProfiler.heapStatsUpdate","pageReferences":[{"domain":"HeapProfiler","type":"1","description":"If heap objects tracking has been started then backend may send update for one or more fragments","domainHref":"v8/HeapProfiler/","href":"#event-heapStatsUpdate"}]},"heapprofiler.lastseenobjectid":{"keyword":"HeapProfiler.lastSeenObjectId","pageReferences":[{"domain":"HeapProfiler","type":"1","description":"If heap objects tracking has been started then backend regularly sends a current value for last\nseen object id and corresponding timestamp. If the were changes in the heap since last event\nthen one or...","domainHref":"v8/HeapProfiler/","href":"#event-lastSeenObjectId"}]},"heapprofiler.reportheapsnapshotprogress":{"keyword":"HeapProfiler.reportHeapSnapshotProgress","pageReferences":[{"domain":"HeapProfiler","type":"1","domainHref":"v8/HeapProfiler/","href":"#event-reportHeapSnapshotProgress"}]},"heapprofiler.resetprofiles":{"keyword":"HeapProfiler.resetProfiles","pageReferences":[{"domain":"HeapProfiler","type":"1","domainHref":"v8/HeapProfiler/","href":"#event-resetProfiles"}]},"heapprofiler.heapsnapshotobjectid":{"keyword":"HeapProfiler.HeapSnapshotObjectId","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"Heap snapshot object id.","domainHref":"v8/HeapProfiler/","href":"#type-HeapSnapshotObjectId"}]},"heapprofiler.samplingheapprofilenode":{"keyword":"HeapProfiler.SamplingHeapProfileNode","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.","domainHref":"v8/HeapProfiler/","href":"#type-SamplingHeapProfileNode"}]},"heapprofiler.samplingheapprofilesample":{"keyword":"HeapProfiler.SamplingHeapProfileSample","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"A single sample from a sampling profile.","domainHref":"v8/HeapProfiler/","href":"#type-SamplingHeapProfileSample"}]},"heapprofiler.samplingheapprofile":{"keyword":"HeapProfiler.SamplingHeapProfile","pageReferences":[{"domain":"HeapProfiler","type":"3","description":"Sampling profile.","domainHref":"v8/HeapProfiler/","href":"#type-SamplingHeapProfile"}]},"profiler":{"keyword":"Profiler","pageReferences":[{"domain":"Profiler","type":"0","domainHref":"v8/Profiler/"}]},"profiler.disable":{"keyword":"Profiler.disable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"v8/Profiler/","href":"#method-disable"}]},"profiler.enable":{"keyword":"Profiler.enable","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"v8/Profiler/","href":"#method-enable"}]},"profiler.getbesteffortcoverage":{"keyword":"Profiler.getBestEffortCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Collect coverage data for the current isolate. The coverage data may be incomplete due to\ngarbage collection.","domainHref":"v8/Profiler/","href":"#method-getBestEffortCoverage"}]},"profiler.setsamplinginterval":{"keyword":"Profiler.setSamplingInterval","pageReferences":[{"domain":"Profiler","type":"4","description":"Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.","domainHref":"v8/Profiler/","href":"#method-setSamplingInterval"}]},"profiler.start":{"keyword":"Profiler.start","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"v8/Profiler/","href":"#method-start"}]},"profiler.startprecisecoverage":{"keyword":"Profiler.startPreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code\ncoverage may be incomplete. Enabling prevents running optimized code and resets execution\ncounters.","domainHref":"v8/Profiler/","href":"#method-startPreciseCoverage"}]},"profiler.stop":{"keyword":"Profiler.stop","pageReferences":[{"domain":"Profiler","type":"4","domainHref":"v8/Profiler/","href":"#method-stop"}]},"profiler.stopprecisecoverage":{"keyword":"Profiler.stopPreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Disable precise code coverage. Disabling releases unnecessary execution count records and allows\nexecuting optimized code.","domainHref":"v8/Profiler/","href":"#method-stopPreciseCoverage"}]},"profiler.takeprecisecoverage":{"keyword":"Profiler.takePreciseCoverage","pageReferences":[{"domain":"Profiler","type":"4","description":"Collect coverage data for the current isolate, and resets execution counters. Precise code\ncoverage needs to have started.","domainHref":"v8/Profiler/","href":"#method-takePreciseCoverage"}]},"profiler.consoleprofilefinished":{"keyword":"Profiler.consoleProfileFinished","pageReferences":[{"domain":"Profiler","type":"1","domainHref":"v8/Profiler/","href":"#event-consoleProfileFinished"}]},"profiler.consoleprofilestarted":{"keyword":"Profiler.consoleProfileStarted","pageReferences":[{"domain":"Profiler","type":"1","description":"Sent when new profile recording is started using console.profile() call.","domainHref":"v8/Profiler/","href":"#event-consoleProfileStarted"}]},"profiler.precisecoveragedeltaupdate":{"keyword":"Profiler.preciseCoverageDeltaUpdate","pageReferences":[{"domain":"Profiler","type":"1","description":"Reports coverage delta since the last poll (either from an event like this, or from\n`takePreciseCoverage` for the current isolate. May only be sent if precise code\ncoverage has been started. This even...","domainHref":"v8/Profiler/","href":"#event-preciseCoverageDeltaUpdate"}]},"profiler.profilenode":{"keyword":"Profiler.ProfileNode","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile node. Holds callsite information, execution statistics and child nodes.","domainHref":"v8/Profiler/","href":"#type-ProfileNode"}]},"profiler.profile":{"keyword":"Profiler.Profile","pageReferences":[{"domain":"Profiler","type":"3","description":"Profile.","domainHref":"v8/Profiler/","href":"#type-Profile"}]},"profiler.positiontickinfo":{"keyword":"Profiler.PositionTickInfo","pageReferences":[{"domain":"Profiler","type":"3","description":"Specifies a number of samples attributed to a certain source position.","domainHref":"v8/Profiler/","href":"#type-PositionTickInfo"}]},"profiler.coveragerange":{"keyword":"Profiler.CoverageRange","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a source range.","domainHref":"v8/Profiler/","href":"#type-CoverageRange"}]},"profiler.functioncoverage":{"keyword":"Profiler.FunctionCoverage","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a JavaScript function.","domainHref":"v8/Profiler/","href":"#type-FunctionCoverage"}]},"profiler.scriptcoverage":{"keyword":"Profiler.ScriptCoverage","pageReferences":[{"domain":"Profiler","type":"3","description":"Coverage data for a JavaScript script.","domainHref":"v8/Profiler/","href":"#type-ScriptCoverage"}]},"runtime":{"keyword":"Runtime","pageReferences":[{"domain":"Runtime","type":"0","description":"Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects.\nEvaluation results are returned as mirror object that expose object type, string representation\nand unique i...","domainHref":"v8/Runtime/"}]},"runtime.awaitpromise":{"keyword":"Runtime.awaitPromise","pageReferences":[{"domain":"Runtime","type":"4","description":"Add handler to promise with given promise object id.","domainHref":"v8/Runtime/","href":"#method-awaitPromise"}]},"runtime.callfunctionon":{"keyword":"Runtime.callFunctionOn","pageReferences":[{"domain":"Runtime","type":"4","description":"Calls function with given declaration on the given object. Object group of the result is\ninherited from the target object.","domainHref":"v8/Runtime/","href":"#method-callFunctionOn"}]},"runtime.compilescript":{"keyword":"Runtime.compileScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Compiles expression.","domainHref":"v8/Runtime/","href":"#method-compileScript"}]},"runtime.disable":{"keyword":"Runtime.disable","pageReferences":[{"domain":"Runtime","type":"4","description":"Disables reporting of execution contexts creation.","domainHref":"v8/Runtime/","href":"#method-disable"}]},"runtime.discardconsoleentries":{"keyword":"Runtime.discardConsoleEntries","pageReferences":[{"domain":"Runtime","type":"4","description":"Discards collected exceptions and console API calls.","domainHref":"v8/Runtime/","href":"#method-discardConsoleEntries"}]},"runtime.enable":{"keyword":"Runtime.enable","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables reporting of execution contexts creation by means of `executionContextCreated` event.\nWhen the reporting gets enabled the event will be sent immediately for each existing execution\ncontext.","domainHref":"v8/Runtime/","href":"#method-enable"}]},"runtime.evaluate":{"keyword":"Runtime.evaluate","pageReferences":[{"domain":"Runtime","type":"4","description":"Evaluates expression on global object.","domainHref":"v8/Runtime/","href":"#method-evaluate"}]},"runtime.getisolateid":{"keyword":"Runtime.getIsolateId","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns the isolate id.","domainHref":"v8/Runtime/","href":"#method-getIsolateId"}]},"runtime.getheapusage":{"keyword":"Runtime.getHeapUsage","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns the JavaScript heap usage.\nIt is the total usage of the corresponding isolate not scoped to a particular Runtime.","domainHref":"v8/Runtime/","href":"#method-getHeapUsage"}]},"runtime.getproperties":{"keyword":"Runtime.getProperties","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns properties of a given object. Object group of the result is inherited from the target\nobject.","domainHref":"v8/Runtime/","href":"#method-getProperties"}]},"runtime.globallexicalscopenames":{"keyword":"Runtime.globalLexicalScopeNames","pageReferences":[{"domain":"Runtime","type":"4","description":"Returns all let, const and class variables from global scope.","domainHref":"v8/Runtime/","href":"#method-globalLexicalScopeNames"}]},"runtime.queryobjects":{"keyword":"Runtime.queryObjects","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"v8/Runtime/","href":"#method-queryObjects"}]},"runtime.releaseobject":{"keyword":"Runtime.releaseObject","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases remote object with given id.","domainHref":"v8/Runtime/","href":"#method-releaseObject"}]},"runtime.releaseobjectgroup":{"keyword":"Runtime.releaseObjectGroup","pageReferences":[{"domain":"Runtime","type":"4","description":"Releases all remote objects that belong to a given group.","domainHref":"v8/Runtime/","href":"#method-releaseObjectGroup"}]},"runtime.runifwaitingfordebugger":{"keyword":"Runtime.runIfWaitingForDebugger","pageReferences":[{"domain":"Runtime","type":"4","description":"Tells inspected instance to run if it was waiting for debugger to attach.","domainHref":"v8/Runtime/","href":"#method-runIfWaitingForDebugger"}]},"runtime.runscript":{"keyword":"Runtime.runScript","pageReferences":[{"domain":"Runtime","type":"4","description":"Runs script with given id in a given context.","domainHref":"v8/Runtime/","href":"#method-runScript"}]},"runtime.setasynccallstackdepth":{"keyword":"Runtime.setAsyncCallStackDepth","pageReferences":[{"domain":"Runtime","type":"4","description":"Enables or disables async call stacks tracking.","domainHref":"v8/Runtime/","href":"#method-setAsyncCallStackDepth"}]},"runtime.setcustomobjectformatterenabled":{"keyword":"Runtime.setCustomObjectFormatterEnabled","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"v8/Runtime/","href":"#method-setCustomObjectFormatterEnabled"}]},"runtime.setmaxcallstacksizetocapture":{"keyword":"Runtime.setMaxCallStackSizeToCapture","pageReferences":[{"domain":"Runtime","type":"4","domainHref":"v8/Runtime/","href":"#method-setMaxCallStackSizeToCapture"}]},"runtime.terminateexecution":{"keyword":"Runtime.terminateExecution","pageReferences":[{"domain":"Runtime","type":"4","description":"Terminate current or next JavaScript execution.\nWill cancel the termination when the outer-most script execution ends.","domainHref":"v8/Runtime/","href":"#method-terminateExecution"}]},"runtime.addbinding":{"keyword":"Runtime.addBinding","pageReferences":[{"domain":"Runtime","type":"4","description":"If executionContextId is empty, adds binding with the given name on the\nglobal objects of all inspected contexts, including those created later,\nbindings survive reloads.\nBinding function takes exactl...","domainHref":"v8/Runtime/","href":"#method-addBinding"}]},"runtime.removebinding":{"keyword":"Runtime.removeBinding","pageReferences":[{"domain":"Runtime","type":"4","description":"This method does not remove binding function from global object but\nunsubscribes current runtime agent from Runtime.bindingCalled notifications.","domainHref":"v8/Runtime/","href":"#method-removeBinding"}]},"runtime.getexceptiondetails":{"keyword":"Runtime.getExceptionDetails","pageReferences":[{"domain":"Runtime","type":"4","description":"This method tries to lookup and populate exception details for a\nJavaScript Error object.\nNote that the stackTrace portion of the resulting exceptionDetails will\nonly be populated if the Runtime domai...","domainHref":"v8/Runtime/","href":"#method-getExceptionDetails"}]},"runtime.bindingcalled":{"keyword":"Runtime.bindingCalled","pageReferences":[{"domain":"Runtime","type":"1","description":"Notification is issued every time when binding is called.","domainHref":"v8/Runtime/","href":"#event-bindingCalled"}]},"runtime.consoleapicalled":{"keyword":"Runtime.consoleAPICalled","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when console API was called.","domainHref":"v8/Runtime/","href":"#event-consoleAPICalled"}]},"runtime.exceptionrevoked":{"keyword":"Runtime.exceptionRevoked","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when unhandled exception was revoked.","domainHref":"v8/Runtime/","href":"#event-exceptionRevoked"}]},"runtime.exceptionthrown":{"keyword":"Runtime.exceptionThrown","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when exception was thrown and unhandled.","domainHref":"v8/Runtime/","href":"#event-exceptionThrown"}]},"runtime.executioncontextcreated":{"keyword":"Runtime.executionContextCreated","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when new execution context is created.","domainHref":"v8/Runtime/","href":"#event-executionContextCreated"}]},"runtime.executioncontextdestroyed":{"keyword":"Runtime.executionContextDestroyed","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when execution context is destroyed.","domainHref":"v8/Runtime/","href":"#event-executionContextDestroyed"}]},"runtime.executioncontextscleared":{"keyword":"Runtime.executionContextsCleared","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when all executionContexts were cleared in browser","domainHref":"v8/Runtime/","href":"#event-executionContextsCleared"}]},"runtime.inspectrequested":{"keyword":"Runtime.inspectRequested","pageReferences":[{"domain":"Runtime","type":"1","description":"Issued when object should be inspected (for example, as a result of inspect() command line API\ncall).","domainHref":"v8/Runtime/","href":"#event-inspectRequested"}]},"runtime.scriptid":{"keyword":"Runtime.ScriptId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique script identifier.","domainHref":"v8/Runtime/","href":"#type-ScriptId"}]},"runtime.serializationoptions":{"keyword":"Runtime.SerializationOptions","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents options for serialization. Overrides `generatePreview` and `returnByValue`.","domainHref":"v8/Runtime/","href":"#type-SerializationOptions"}]},"runtime.deepserializedvalue":{"keyword":"Runtime.DeepSerializedValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents deep serialized value.","domainHref":"v8/Runtime/","href":"#type-DeepSerializedValue"}]},"runtime.remoteobjectid":{"keyword":"Runtime.RemoteObjectId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique object identifier.","domainHref":"v8/Runtime/","href":"#type-RemoteObjectId"}]},"runtime.unserializablevalue":{"keyword":"Runtime.UnserializableValue","pageReferences":[{"domain":"Runtime","type":"3","description":"Primitive value which cannot be JSON-stringified. Includes values `-0`, `NaN`, `Infinity`,\n`-Infinity`, and bigint literals.","domainHref":"v8/Runtime/","href":"#type-UnserializableValue"}]},"runtime.remoteobject":{"keyword":"Runtime.RemoteObject","pageReferences":[{"domain":"Runtime","type":"3","description":"Mirror object referencing original JavaScript object.","domainHref":"v8/Runtime/","href":"#type-RemoteObject"}]},"runtime.custompreview":{"keyword":"Runtime.CustomPreview","pageReferences":[{"domain":"Runtime","type":"3","domainHref":"v8/Runtime/","href":"#type-CustomPreview"}]},"runtime.objectpreview":{"keyword":"Runtime.ObjectPreview","pageReferences":[{"domain":"Runtime","type":"3","description":"Object containing abbreviated remote object value.","domainHref":"v8/Runtime/","href":"#type-ObjectPreview"}]},"runtime.propertypreview":{"keyword":"Runtime.PropertyPreview","pageReferences":[{"domain":"Runtime","type":"3","domainHref":"v8/Runtime/","href":"#type-PropertyPreview"}]},"runtime.entrypreview":{"keyword":"Runtime.EntryPreview","pageReferences":[{"domain":"Runtime","type":"3","domainHref":"v8/Runtime/","href":"#type-EntryPreview"}]},"runtime.propertydescriptor":{"keyword":"Runtime.PropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object property descriptor.","domainHref":"v8/Runtime/","href":"#type-PropertyDescriptor"}]},"runtime.internalpropertydescriptor":{"keyword":"Runtime.InternalPropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object internal property descriptor. This property isn't normally visible in JavaScript code.","domainHref":"v8/Runtime/","href":"#type-InternalPropertyDescriptor"}]},"runtime.privatepropertydescriptor":{"keyword":"Runtime.PrivatePropertyDescriptor","pageReferences":[{"domain":"Runtime","type":"3","description":"Object private field descriptor.","domainHref":"v8/Runtime/","href":"#type-PrivatePropertyDescriptor"}]},"runtime.callargument":{"keyword":"Runtime.CallArgument","pageReferences":[{"domain":"Runtime","type":"3","description":"Represents function call argument. Either remote object id `objectId`, primitive `value`,\nunserializable primitive value or neither of (for undefined) them should be specified.","domainHref":"v8/Runtime/","href":"#type-CallArgument"}]},"runtime.executioncontextid":{"keyword":"Runtime.ExecutionContextId","pageReferences":[{"domain":"Runtime","type":"3","description":"Id of an execution context.","domainHref":"v8/Runtime/","href":"#type-ExecutionContextId"}]},"runtime.executioncontextdescription":{"keyword":"Runtime.ExecutionContextDescription","pageReferences":[{"domain":"Runtime","type":"3","description":"Description of an isolated world.","domainHref":"v8/Runtime/","href":"#type-ExecutionContextDescription"}]},"runtime.exceptiondetails":{"keyword":"Runtime.ExceptionDetails","pageReferences":[{"domain":"Runtime","type":"3","description":"Detailed information about exception (or error) that was thrown during script compilation or\nexecution.","domainHref":"v8/Runtime/","href":"#type-ExceptionDetails"}]},"runtime.timestamp":{"keyword":"Runtime.Timestamp","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds since epoch.","domainHref":"v8/Runtime/","href":"#type-Timestamp"}]},"runtime.timedelta":{"keyword":"Runtime.TimeDelta","pageReferences":[{"domain":"Runtime","type":"3","description":"Number of milliseconds.","domainHref":"v8/Runtime/","href":"#type-TimeDelta"}]},"runtime.callframe":{"keyword":"Runtime.CallFrame","pageReferences":[{"domain":"Runtime","type":"3","description":"Stack entry for runtime errors and assertions.","domainHref":"v8/Runtime/","href":"#type-CallFrame"}]},"runtime.stacktrace":{"keyword":"Runtime.StackTrace","pageReferences":[{"domain":"Runtime","type":"3","description":"Call frames for assertions or error messages.","domainHref":"v8/Runtime/","href":"#type-StackTrace"}]},"runtime.uniquedebuggerid":{"keyword":"Runtime.UniqueDebuggerId","pageReferences":[{"domain":"Runtime","type":"3","description":"Unique identifier of current debugger.","domainHref":"v8/Runtime/","href":"#type-UniqueDebuggerId"}]},"runtime.stacktraceid":{"keyword":"Runtime.StackTraceId","pageReferences":[{"domain":"Runtime","type":"3","description":"If `debuggerId` is set stack trace comes from another debugger and can be resolved there. This\nallows to track cross-debugger calls. See `Runtime.StackTrace` and `Debugger.paused` for usages.","domainHref":"v8/Runtime/","href":"#type-StackTraceId"}]},"schema":{"keyword":"Schema","pageReferences":[{"domain":"Schema","type":"0","description":"This domain is deprecated.","domainHref":"v8/Schema/"}]},"schema.getdomains":{"keyword":"Schema.getDomains","pageReferences":[{"domain":"Schema","type":"4","description":"Returns supported domains.","domainHref":"v8/Schema/","href":"#method-getDomains"}]},"schema.domain":{"keyword":"Schema.Domain","pageReferences":[{"domain":"Schema","type":"3","description":"Description of the protocol domain.","domainHref":"v8/Schema/","href":"#type-Domain"}]}} \ No newline at end of file diff --git a/service-worker.js b/service-worker.js deleted file mode 100644 index 30b7678dd5..0000000000 --- a/service-worker.js +++ /dev/null @@ -1 +0,0 @@ -console.log('ServiceWorker disabled in development mode.'); diff --git a/src/404.html b/src/404.html new file mode 100644 index 0000000000..f7aa8f6ddb --- /dev/null +++ b/src/404.html @@ -0,0 +1,133 @@ + + + + + Redirecting to Chrome DevTools Protocol... + + + + +

    Redirecting to Chrome DevTools Protocol...

    +

    + If you are not redirected automatically within a few seconds, please follow + this link. +

    + + + diff --git a/src/bling.js b/src/bling.js new file mode 100644 index 0000000000..8fe4a88663 --- /dev/null +++ b/src/bling.js @@ -0,0 +1,76 @@ +/** + * @fileoverview Bling JS: Syntactic sugar for DOM queries. + * Defines global $ and $$ helpers and element-scoped equivalents. + * With automagic qSA types. + * + * Inspired by my original Bling.js Gist (2015): https://gist.github.com/paulirish/12fb951a8b893a454b32 + * But.. it's different. and upgraded. + */ + +/** @import { ParseSelector } from '../types/bling.d.ts' */ + +/** + * querySelector that throws if nothing matches. Return type is inferred from the selector literal via ParseSelector. + * @template {string} T + * @param {T} query + * @param {ParentNode} [context] + * @returns {ParseSelector} + */ +export function $(query, context) { + const result = (context ?? document).querySelector(query); + if (result === null) throw new Error(`querySelector('${query}') not found`); + return /** @type {ParseSelector} */ (result); +} + +/** + * querySelectorAll that returns an Array. Return type is inferred from the selector literal via ParseSelector. + * @template {string} T + * @param {T} query + * @param {ParentNode} [context] + * @returns {ParseSelector[]} + */ +export function $$(query, context) { + return /** @type {ParseSelector[]} */ ( + Array.from((context ?? document).querySelectorAll(query)) + ); +} + +if (typeof Element !== 'undefined') { + for (const Ctor of [Element, Document, DocumentFragment]) { + Object.defineProperties(Ctor.prototype, { + $: { + /** + * @template {string} T + * @this {ParentNode} + * @param {T} query + * @returns {ParseSelector} + */ + value: function (query) { + return $(query, this); + }, + writable: true, + configurable: true, + enumerable: false, + }, + $$: { + /** + * @template {string} T + * @this {ParentNode} + * @param {T} query + * @returns {ParseSelector[]} + */ + value: function (query) { + return $$(query, this); + }, + writable: true, + configurable: true, + enumerable: false, + }, + }); + } +} + +if (typeof window !== 'undefined') { + window.$ = $; + window.$$ = $$; +} diff --git a/src/favicons/android-chrome-192x192.png b/src/favicons/android-chrome-192x192.png new file mode 100644 index 0000000000..aebc9d7169 Binary files /dev/null and b/src/favicons/android-chrome-192x192.png differ diff --git a/src/favicons/android-chrome-384x384.png b/src/favicons/android-chrome-384x384.png new file mode 100644 index 0000000000..9b1433e5e0 Binary files /dev/null and b/src/favicons/android-chrome-384x384.png differ diff --git a/src/favicons/apple-touch-icon.png b/src/favicons/apple-touch-icon.png new file mode 100644 index 0000000000..c6b90ad045 Binary files /dev/null and b/src/favicons/apple-touch-icon.png differ diff --git a/src/favicons/browserconfig.xml b/src/favicons/browserconfig.xml new file mode 100644 index 0000000000..e762b1cf15 --- /dev/null +++ b/src/favicons/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/src/favicons/favicon-16x16.png b/src/favicons/favicon-16x16.png new file mode 100644 index 0000000000..a51b6c7621 Binary files /dev/null and b/src/favicons/favicon-16x16.png differ diff --git a/src/favicons/favicon-32x32.png b/src/favicons/favicon-32x32.png new file mode 100644 index 0000000000..999361cd0c Binary files /dev/null and b/src/favicons/favicon-32x32.png differ diff --git a/src/favicons/favicon.ico b/src/favicons/favicon.ico new file mode 100644 index 0000000000..1b4889b63e Binary files /dev/null and b/src/favicons/favicon.ico differ diff --git a/src/favicons/mstile-150x150.png b/src/favicons/mstile-150x150.png new file mode 100644 index 0000000000..cbe3e81953 Binary files /dev/null and b/src/favicons/mstile-150x150.png differ diff --git a/src/favicons/site.webmanifest b/src/favicons/site.webmanifest new file mode 100644 index 0000000000..d884bbbb85 --- /dev/null +++ b/src/favicons/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/src/fuzzy_search.js b/src/fuzzy_search.js new file mode 100644 index 0000000000..1313e95843 --- /dev/null +++ b/src/fuzzy_search.js @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +const REGEX_SPECIAL_CHARACTERS = '^[]{}()\\.^$*+?|-,'; + +/** + * @unrestricted + */ +export class FuzzySearch { + /** + * @param {string} query + */ + constructor(query) { + this._filterRegex = FuzzySearch._createFilterRegex(query); + this._query = query; + this._queryUpperCase = query.toUpperCase(); + this._score = new Int32Array(20 * 100); + this._sequence = new Int32Array(20 * 100); + this._dataUpperCase = ''; + } + + /** + * @return {string} + */ + query() { + return this._query; + } + + /** + * @param {string} data + * @param {?Array} matchIndexes + * @return {number} + */ + score(data, matchIndexes) { + if (!data || !this._query || !this._filterRegex.test(data)) return 0; + var n = this._query.length; + var m = data.length; + if (!this._score || this._score.length < n * m) { + this._score = new Int32Array(n * m * 2); + this._sequence = new Int32Array(n * m * 2); + } + var score = this._score; + var sequence = /** @type {!Int32Array} */ (this._sequence); + this._dataUpperCase = data.toUpperCase(); + for (var i = 0; i < n; ++i) { + for (var j = 0; j < m; ++j) { + var skipCharScore = j === 0 ? 0 : score[i * m + j - 1]; + var prevCharScore = i === 0 || j === 0 ? 0 : score[(i - 1) * m + j - 1]; + var consecutiveMatch = i === 0 || j === 0 ? 0 : sequence[(i - 1) * m + j - 1]; + var pickCharScore = this._match(this._query, data, i, j, consecutiveMatch); + if (pickCharScore && prevCharScore + pickCharScore >= skipCharScore) { + sequence[i * m + j] = consecutiveMatch + 1; + score[i * m + j] = prevCharScore + pickCharScore; + } else { + sequence[i * m + j] = 0; + score[i * m + j] = skipCharScore; + } + } + } + if (matchIndexes) this._restoreMatchIndexes(sequence, n, m, matchIndexes); + return score[n * m - 1]; + } + + /** + * @param {!Int32Array} sequence + * @param {number} n + * @param {number} m + * @param {!Array} out + */ + _restoreMatchIndexes(sequence, n, m, out) { + var i = n - 1, + j = m - 1; + while (i >= 0 && j >= 0) { + switch (sequence[i * m + j]) { + case 0: + --j; + break; + default: + out.push(j); + --i; + --j; + break; + } + } + out.reverse(); + } + + /** + * @param {string} query + * @param {string} data + * @param {number} i + * @param {number} j + * @param {number} consecutiveMatch + * @return {number} + */ + _match(query, data, i, j, consecutiveMatch) { + if (this._queryUpperCase[i] !== this._dataUpperCase[j]) return 0; + + var isCapsMatch = query[i] === data[j] && query[i] === this._queryUpperCase[i]; + var score = 10; + if (isCapsMatch) score += 6; + score += consecutiveMatch * 4; + return score; + } + + /** + * @param {string} query + * @return {!RegExp} + */ + static _createFilterRegex(query) { + const toEscape = REGEX_SPECIAL_CHARACTERS; + let regexString = ''; + for (let i = 0; i < query.length; ++i) { + let c = query.charAt(i); + if (toEscape.indexOf(c) !== -1) c = '\\' + c; + if (i) regexString += '[^\\0' + c + ']*'; + regexString += c; + } + return new RegExp(regexString, 'i'); + } +} diff --git a/pages/images/cdp-editor.png b/src/images/cdp-editor.png similarity index 100% rename from pages/images/cdp-editor.png rename to src/images/cdp-editor.png diff --git a/src/images/github.png b/src/images/github.png new file mode 100644 index 0000000000..628da97c70 Binary files /dev/null and b/src/images/github.png differ diff --git a/pages/images/logo.png b/src/images/logo.png similarity index 100% rename from pages/images/logo.png rename to src/images/logo.png diff --git a/pages/images/protocol-monitor.png b/src/images/protocol-monitor.png similarity index 100% rename from pages/images/protocol-monitor.png rename to src/images/protocol-monitor.png diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000000..2703fb13bc --- /dev/null +++ b/src/index.html @@ -0,0 +1,766 @@ + + + + + DevTools Protocol Viewer + + + + + + + + + + + + + + + + + +
    + + +
    + +
    + +
    + + GitHub + +
    +
    + + + + + +
    +
    + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000000..2c3b97c7c8 --- /dev/null +++ b/src/main.js @@ -0,0 +1,499 @@ +/** + * @fileoverview Main Application Controller for Chrome DevTools Protocol Viewer. + */ + +/** @import { ProtocolDomain, NormalizedProtocolDomain, ProtocolRoot, TargetKind, RouteInfo } from '../types/types.d.ts' */ +import { + normalizeProtocol, + stabilize, + computeBackReferences, + parseRoute, + formatRoute, + normalizeTarget, +} from './protocol-model.js'; +import { $ } from './bling.js'; +import { ProtocolRenderer } from './protocol_renderer.js'; +import { Search } from './search.js'; + +const PROTOCOL_URLS = { + browser: + 'https://cdn.jsdelivr.net/gh/ChromeDevTools/devtools-protocol@master/json/browser_protocol.json', + js: 'https://cdn.jsdelivr.net/gh/ChromeDevTools/devtools-protocol@master/json/js_protocol.json', +}; + +document.addEventListener('DOMContentLoaded', () => { + const sidebarElement = $('#sidebar'); + const domainListElement = $('#domain-list'); + const contentElement = $('#content'); + const searchElement = $('#search'); + const searchResultsElement = $('#sresults'); + const targetSelector = /** @type {HTMLSelectElement} */ ($('#target-selector')); + const drawerToggle = $('#drawer-toggle'); + const drawerBackdrop = $('#drawer-backdrop'); + + window.app = new App({ + sidebarElement, + domainListElement, + contentElement, + searchElement, + searchResultsElement, + targetSelector, + drawerToggle, + drawerBackdrop, + }); +}); + +/** + * @typedef {Object} AppElements + * @property {HTMLElement} sidebarElement + * @property {HTMLElement} domainListElement + * @property {HTMLElement} contentElement + * @property {HTMLElement} searchElement + * @property {HTMLElement} searchResultsElement + * @property {HTMLSelectElement} targetSelector + * @property {HTMLElement} drawerToggle + * @property {HTMLElement} drawerBackdrop + */ + +export class App { + /** + * @param {AppElements} elements + */ + constructor({ + sidebarElement, + domainListElement, + contentElement, + searchElement, + searchResultsElement, + targetSelector, + drawerToggle, + drawerBackdrop, + }) { + this._sidebarElement = sidebarElement; + this._domainListElement = domainListElement; + this._contentElement = contentElement; + this._targetSelector = targetSelector; + this._drawerToggle = drawerToggle; + this._drawerBackdrop = drawerBackdrop; + + /** @type {TargetKind} */ + this._currentTarget = 'tot'; + /** @type {string|null} */ + this._currentDomain = null; + + /** @type {Map} */ + this._activeDomains = new Map(); + + /** @type {Record>} */ + this._targetStore = { + tot: new Map(), + stable: new Map(), + v8: new Map(), + }; + + this.formatRef = this.formatRef.bind(this); + this._search = new Search(searchElement, searchResultsElement, this); + + this._setupDrawerEvents(); + this._setupSidebarEvents(); + this._setupLinkInterception(); + this._setupRoutingEvents(); + + this.init(); + } + + /** + * @param {string} ref + * @returns {string} + */ + formatRef(ref) { + return formatRoute({ target: this._currentTarget, domain: ref }); + } + + focusContent() { + this._contentElement.focus(); + } + + /** + * @param {string} route + */ + navigate(route) { + const cleanRoute = formatRoute(parseRoute(route)); + if (window.location.hash !== cleanRoute) { + window.location.hash = cleanRoute; + } else { + this._onRoute(); + } + } + + /** + * Fetches JSON protocol specification with fallback. + * @param {string} url + * @returns {Promise} + */ + async _fetchProtocolJson(url) { + try { + const res = await fetch(url); + if (!res.ok) throw new Error(`HTTP ${res.status}: ${res.statusText}`); + return await res.json(); + } catch (e) { + // Fallback: local protocol files served by the app + let localFallback = 'data/tot.json'; + if (url.includes('js_protocol')) { + localFallback = 'data/v8.json'; + } + const localRes = await fetch(localFallback); + if (!localRes.ok) + throw new Error(`Fallback failed (${localFallback}): HTTP ${localRes.status}`); + return await localRes.json(); + } + } + + async init() { + try { + const [browserProto, jsProto] = await Promise.all([ + this._fetchProtocolJson(PROTOCOL_URLS.browser), + this._fetchProtocolJson(PROTOCOL_URLS.js), + ]); + + this._prepareDatasets(browserProto, jsProto); + this._onRoute(); + } catch (error) { + this._contentElement.textContent = ''; + const message = error instanceof Error ? error.message : String(error); + this._contentElement.appendChild(renderError(`Initialization failed: ${message}`)); + } + } + + /** + * Prepares protocol datasets for tot, stable, and v8. + * @param {ProtocolRoot} browserProto + * @param {ProtocolRoot} jsProto + */ + _prepareDatasets(browserProto, jsProto) { + // 1. Tip-of-Tree (Tot) + const combinedTotDomains = [...(browserProto.domains || []), ...(jsProto.domains || [])]; + const totDomains = normalizeProtocol({ domains: combinedTotDomains }).domains; + computeBackReferences(totDomains); + for (const d of totDomains) { + this._targetStore.tot.set(d.domain, d); + } + + // 2. Stable Protocol + const stableTotDomains = stabilize(totDomains.filter((d) => !d.experimental)); + computeBackReferences(stableTotDomains); + for (const d of stableTotDomains) { + this._targetStore.stable.set(d.domain, d); + } + + // 3. V8 Inspector + const v8Domains = normalizeProtocol({ domains: jsProto.domains || [] }).domains; + computeBackReferences(v8Domains); + for (const d of v8Domains) { + this._targetStore.v8.set(d.domain, d); + } + } + + _setupDrawerEvents() { + if (this._drawerToggle) { + this._drawerToggle.addEventListener('click', () => this._toggleDrawer()); + } + if (this._drawerBackdrop) { + this._drawerBackdrop.addEventListener('click', () => this._closeDrawer()); + } + document.addEventListener('keydown', (event) => { + if (event.key === 'Escape' && document.body.classList.contains('drawer-open')) { + this._closeDrawer(); + } + }); + } + + _toggleDrawer() { + const isOpen = document.body.classList.toggle('drawer-open'); + if (this._drawerToggle) { + this._drawerToggle.setAttribute('aria-expanded', String(isOpen)); + } + if (this._contentElement) { + this._contentElement.inert = isOpen; + } + } + + _closeDrawer() { + document.body.classList.remove('drawer-open'); + if (this._drawerToggle) { + this._drawerToggle.setAttribute('aria-expanded', 'false'); + } + if (this._contentElement) { + this._contentElement.inert = false; + } + } + + _setupSidebarEvents() { + // Target selector dropdown + if (this._targetSelector) { + this._targetSelector.addEventListener('change', () => { + const nextTarget = normalizeTarget(this._targetSelector.value); + if (nextTarget === this._currentTarget) return; + + this._currentTarget = nextTarget; + const targetStore = this._targetStore[this._currentTarget] || this._targetStore.tot; + const domainExistsInTarget = this._currentDomain && targetStore.has(this._currentDomain); + const domain = domainExistsInTarget ? this._currentDomain : null; + + const newRoute = formatRoute({ + target: this._currentTarget, + domain, + member: null, + }); + this.navigate(newRoute); + }); + } + } + + _setupLinkInterception() { + document.body.addEventListener( + 'click', + (event) => { + const target = /** @type {HTMLElement|null} */ (event.target); + if (!target) return; + const anchor = target.closest('a'); + if (!anchor) return; + if (anchor.target === '_blank') return; + if (anchor.hostname && anchor.hostname !== window.location.hostname) return; + + const href = anchor.getAttribute('href'); + if ( + anchor.classList.contains('section-jump-pill') || + href === '#methods' || + href === '#events' || + href === '#types' + ) { + return; + } + if (href && (href.startsWith('#') || href.startsWith('?'))) { + event.preventDefault(); + this._closeDrawer(); + this.navigate(href); + } + }, + false, + ); + } + + _setupRoutingEvents() { + window.addEventListener('hashchange', () => this._onRoute()); + window.addEventListener('popstate', () => this._onRoute()); + } + + _updateActiveDomains() { + this._activeDomains = this._targetStore[this._currentTarget] || this._targetStore.tot; + + this._search.setDomains(Array.from(this._activeDomains.values())); + this._renderSidebar(this._activeDomains); + } + + _onRoute() { + let rawRoute = window.location.hash; + if (window.location.search && !rawRoute) { + rawRoute = window.location.search; + } else if (!rawRoute || /^#(?:method|type|event)-/.test(rawRoute)) { + rawRoute = window.location.pathname + (rawRoute || ''); + } + + const route = parseRoute(rawRoute); + const prevTarget = this._currentTarget; + + if (route.target !== this._currentTarget) { + this._currentTarget = route.target; + } + if (this._targetSelector && this._targetSelector.value !== this._currentTarget) { + this._targetSelector.value = this._currentTarget; + } + + if (route.target !== prevTarget || this._activeDomains.size === 0) { + this._updateActiveDomains(); + } + + const domain = route.domain; + const member = route.member; + + if (!domain) { + this._currentDomain = null; + this._onNavigateHome(); + return; + } + + // In-page navigation: if domain is already rendered, scroll to member without DOM re-render + if (this._currentDomain === domain && this._contentElement.firstChild && member) { + const canonicalTitle = `${domain}.${member}`; + document.title = `${canonicalTitle} - DevTools Protocol`; + this._search.setDefaultValue(canonicalTitle); + const titleId = ProtocolRenderer.titleId(domain, member); + const elem = this._contentElement.querySelector('#' + titleId); + if (elem) { + elem.scrollIntoView(); + } + this.focusContent(); + return; + } + + this._currentDomain = domain; + this._onNavigateDomain(domain, member); + } + + /** + * @param {string} domain + * @param {string|null} member + */ + _onNavigateDomain(domain, member) { + const canonicalTitle = member ? `${domain}.${member}` : domain; + document.title = `${canonicalTitle} - DevTools Protocol`; + + const searchDefault = member ? `${domain}.${member}` : domain; + this._search.setDefaultValue(searchDefault); + this._search.cancelSearch(); + + this._contentElement.textContent = ''; + + // Update active link in sidebar + const active = this._domainListElement.querySelector('.active-link'); + if (active) { + active.classList.remove('active-link'); + } + + if (!this._activeDomains.has(domain)) { + const landingId = domain === 'http-endpoints' ? 'endpoints' : domain; + const landingTemplate = /** @type {HTMLTemplateElement|null} */ ($('#landing')); + if (landingTemplate && landingTemplate.content.querySelector('#' + landingId)) { + this._currentDomain = domain; + this._onNavigateHome(landingId); + return; + } + this._contentElement.appendChild(renderError(`Unknown domain: ${domain}.`)); + return; + } + + const currentLink = /** @type {HTMLElement|null} */ ( + this._domainListElement.querySelector(`[data-domain='${domain}']`) + ); + if (currentLink) { + currentLink.classList.add('active-link'); + if (typeof currentLink.scrollIntoViewIfNeeded === 'function') { + currentLink.scrollIntoViewIfNeeded(false); + } + } + + const domainObject = this._activeDomains.get(domain); + if (!domainObject) return; + const rendered = ProtocolRenderer.renderDomain(domainObject); + if (rendered) { + this._contentElement.appendChild(rendered); + if (member) { + const titleId = ProtocolRenderer.titleId(domain, member); + const elem = rendered.querySelector('#' + titleId); + if (elem) { + elem.scrollIntoView(); + } else { + this._contentElement.scrollTop = 0; + } + } else { + this._contentElement.scrollTop = 0; + } + } + + this.focusContent(); + } + + /** + * @param {string|null} [anchorId] + */ + _onNavigateHome(anchorId = null) { + document.title = 'DevTools Protocol Viewer'; + this._search.setDefaultValue(''); + this._search.cancelSearch(); + this._contentElement.textContent = ''; + + const active = this._domainListElement.querySelector('.active-link'); + if (active) { + active.classList.remove('active-link'); + } + + const template = /** @type {HTMLTemplateElement|null} */ ($('#landing')); + if (template) { + const clone = template.content.cloneNode(true); + this._contentElement.appendChild(clone); + + if (anchorId) { + const targetId = anchorId === 'http-endpoints' ? 'endpoints' : anchorId; + const targetElem = this._contentElement.querySelector('#' + targetId); + if (targetElem) { + targetElem.scrollIntoView(); + const activeLink = /** @type {HTMLElement|null} */ ( + this._domainListElement.querySelector( + `[data-domain='${anchorId}'], [data-domain='${targetId}']`, + ) + ); + if (activeLink) { + activeLink.classList.add('active-link'); + if (typeof activeLink.scrollIntoViewIfNeeded === 'function') { + activeLink.scrollIntoViewIfNeeded(false); + } + } + } + } + } + + this.focusContent(); + } + + /** + * @param {Map} domains + */ + _renderSidebar(domains) { + this._domainListElement.textContent = ''; + + for (const [name, domain] of domains) { + const link = document.createElement('a'); + link.href = this.formatRef(name); + link.className = 'domain-link'; + link.dataset.domain = name; + link.textContent = name; + + ProtocolRenderer.applyBackground(domain, link); + + this._domainListElement.appendChild(link); + } + + const divider = document.createElement('div'); + divider.className = 'sidebar-divider'; + this._domainListElement.appendChild(divider); + + const endpointsLink = document.createElement('a'); + endpointsLink.href = '#/endpoints'; + endpointsLink.className = 'domain-link sidebar-meta-link'; + endpointsLink.dataset.domain = 'endpoints'; + endpointsLink.textContent = 'HTTP Endpoints'; + if (this._currentDomain === 'endpoints' || this._currentDomain === 'http-endpoints') { + endpointsLink.classList.add('active-link'); + } + this._domainListElement.appendChild(endpointsLink); + } +} + +/** + * @param {string} error + * @returns {Element} + */ +function renderError(error) { + const main = document.createElement('div'); + main.className = 'box'; + const box = document.createElement('div'); + box.className = 'box-content'; + const h2 = document.createElement('h2'); + h2.textContent = 'Error'; + const p = document.createElement('p'); + p.textContent = error; + box.append(h2, p); + main.appendChild(box); + return main; +} diff --git a/src/protocol-model.js b/src/protocol-model.js new file mode 100644 index 0000000000..749d82a5df --- /dev/null +++ b/src/protocol-model.js @@ -0,0 +1,541 @@ +/** + * @fileoverview Protocol Model - Isomorphic pure functions for CDP protocols. + * Browser-agnostic, zero-DOM ES module. + */ + +/** @import { ProtocolDomain, NormalizedProtocolDomain, ProtocolRoot, NormalizedProtocolRoot, TargetKind, RouteInfo } from '../types/types.d.ts' */ + +/** @type {Map} */ +const TARGET_MAP = new Map([ + ['tot', 'tot'], + ['stable', 'stable'], + ['1-3', 'stable'], + ['1-2', 'stable'], + ['v8', 'v8'], +]); + +/** + * Normalizes a target string to one of: 'tot', 'stable', 'v8'. + * @param {string|null|undefined} target + * @returns {TargetKind} + */ +export function normalizeTarget(target) { + if (!target) return 'tot'; + return TARGET_MAP.get(target.toLowerCase()) || 'tot'; +} + +/** + * Resolves the identifier property name for sorting a CDP collection. + * @param {string} collectionName + * @returns {string|null} + */ +function nameProperty(collectionName) { + switch (collectionName) { + case 'domains': + return 'domain'; + case 'types': + return 'id'; + case 'commands': + case 'events': + case 'parameters': + case 'returns': + case 'properties': + return 'name'; + default: + return null; + } +} + +/** + * Deterministically sorts a collection in-place: + * 1. Standard (0) before Experimental (1) before Deprecated (2). + * 2. Required before optional. + * 3. Alphabetical by entity name. + * + * @param {Array} items + * @param {string|null} prop + */ +function sortCollection(items, prop) { + if (!prop) return; + items.sort((a, b) => { + // 1. Standard (0) before Experimental (1) before Deprecated (2) + const aRank = a.deprecated ? 2 : a.experimental ? 1 : 0; + const bRank = b.deprecated ? 2 : b.experimental ? 1 : 0; + if (aRank !== bRank) { + return aRank - bRank; + } + + // 2. Required before optional + const aOpt = a.optional ? 1 : 0; + const bOpt = b.optional ? 1 : 0; + if (aOpt !== bOpt) { + return aOpt - bOpt; + } + + // 3. Alphabetical by entity name/id + const aName = String(a[prop] || ''); + const bName = String(b[prop] || ''); + return aName.localeCompare(bName); + }); +} + +/** + * Recursively normalizes an arbitrary CDP node without mutating original input. + * @param {any} object + * @param {boolean} alreadyExperimental + * @returns {any} + */ +function normalizeNode(object, alreadyExperimental) { + if (!object || typeof object !== 'object') { + return object; + } + + if (Array.isArray(object)) { + return object.map((item) => normalizeNode(item, alreadyExperimental)); + } + + const result = /** @type {Record} */ ({}); + const isSelfExperimental = Boolean(object.experimental); + const childAlreadyExperimental = alreadyExperimental || isSelfExperimental; + + for (const [key, value] of Object.entries(object)) { + // Avoid redundant experimental flag on children without mutating input + if (key === 'experimental' && alreadyExperimental) { + continue; + } + + if (Array.isArray(value)) { + result[key] = value.map((item) => normalizeNode(item, childAlreadyExperimental)); + sortCollection(result[key], nameProperty(key)); + } else { + result[key] = normalizeNode(value, childAlreadyExperimental); + } + } + + return result; +} + +/** + * Normalizes protocol data by establishing empty array defaults and deterministic sorting. + * Pure function: does NOT mutate input protocol object. + * + * @param {ProtocolRoot | { domains?: any[] }} protocol + * @returns {NormalizedProtocolRoot} Normalized protocol clone + */ +export function normalizeProtocol(protocol) { + if (!protocol || typeof protocol !== 'object') { + return { domains: [] }; + } + + const normalized = normalizeNode(protocol, false); + normalized.domains = normalized.domains || []; + + for (const domain of normalized.domains) { + domain.commands = domain.commands || []; + domain.events = domain.events || []; + domain.types = domain.types || []; + + for (const event of domain.events) { + event.parameters = event.parameters || []; + } + for (const command of domain.commands) { + command.parameters = command.parameters || []; + command.returns = command.returns || []; + } + for (const type of domain.types) { + if (type.properties) { + type.properties = type.properties || []; + } + } + } + + return /** @type {NormalizedProtocolRoot} */ (normalized); +} + +/** + * Recursive, structurally unified deep clone filtering out anything with experimental === true. + * Guarantees fresh copy with no shared references. + * + * @template T + * @param {T} node + * @returns {T} Fresh copy stripped of experimental entities + */ +export function stabilize(node) { + if (typeof node !== 'object' || node === null) { + return node; + } + + if (Array.isArray(node)) { + return /** @type {any} */ ( + node + .filter((item) => !(item && typeof item === 'object' && item.experimental === true)) + .map((item) => stabilize(item)) + ); + } + + const result = /** @type {Record} */ ({}); + for (const [key, value] of Object.entries(node)) { + result[key] = stabilize(value); + } + + return /** @type {T} */ (result); +} + +/** + * Helper to extract referenced type id from parameter/property object. + * @param {string} domainName + * @param {any} parameter + * @returns {string|null} + */ +function getReferencedType(domainName, parameter) { + if (!parameter || typeof parameter !== 'object') { + return null; + } + if (parameter.$ref) { + return parameter.$ref.includes('.') ? parameter.$ref : `${domainName}.${parameter.$ref}`; + } + if (parameter.type === 'array' && parameter.items) { + return getReferencedType(domainName, parameter.items); + } + return null; +} + +/** + * Dynamically computes reverse references ("Used by") for every type across commands, + * events, and types (properties and array items $ref). + * Deduplicates and sorts references. + * + * @template {ProtocolDomain} D + * @param {Array} domains + * @returns {Array} The domains array with type.referencedBy populated + */ +export function computeBackReferences(domains) { + if (!Array.isArray(domains)) return []; + + const typeidToType = new Map(); + for (const domain of domains) { + for (const type of domain.types || []) { + type.referencedBy = []; + typeidToType.set(`${domain.domain}.${type.id}`, type); + } + } + + /** + * @param {string} domainName + * @param {any} arg + * @param {'command' | 'event' | 'type'} type + * @param {string} name + */ + const addRef = (domainName, arg, type, name) => { + const typeId = getReferencedType(domainName, arg); + const referencedType = typeidToType.get(typeId); + if (referencedType) { + referencedType.referencedBy.push({ type, name }); + } + }; + + for (const domain of domains) { + const domainName = domain.domain; + + for (const command of domain.commands || []) { + const args = [...(command.parameters || []), ...(command.returns || [])]; + for (const arg of args) { + addRef(domainName, arg, 'command', `${domainName}.${command.name}`); + } + } + + for (const event of domain.events || []) { + for (const arg of event.parameters || []) { + addRef(domainName, arg, 'event', `${domainName}.${event.name}`); + } + } + + for (const type of domain.types || []) { + for (const prop of type.properties || []) { + addRef(domainName, prop, 'type', `${domainName}.${type.id}`); + } + if (type.items) { + addRef(domainName, type.items, 'type', `${domainName}.${type.id}`); + } + } + } + + for (const type of typeidToType.values()) { + const map = new Map(); + for (const reference of type.referencedBy) { + map.set(reference.name, reference); + } + type.referencedBy = Array.from(map.values()); + type.referencedBy.sort((/** @type {{name: string}} */ a, /** @type {{name: string}} */ b) => + a.name.localeCompare(b.name), + ); + } + + return domains; +} + +const ROUTE_BASE_URL = 'https://cdp.internal'; + +const hasURLPattern = typeof URLPattern !== 'undefined'; + +const legacyAnchorPattern = hasURLPattern + ? new URLPattern({ hash: ':prefix(method|type|event)-:member' }) + : null; + +const legacyPathPattern = hasURLPattern + ? new URLPattern({ + pathname: + '{/:repo(devtools-protocol|debugger-protocol-viewer)}?/:target(tot|v8|1-3|1-2|stable)/:domain{/}*', + baseURL: ROUTE_BASE_URL, + }) + : null; + +const hashTargetMemberPattern = hasURLPattern + ? new URLPattern({ + hash: '#/:target(tot|v8|1-3|1-2|stable)/:domain.:member', + }) + : null; +const hashTargetDomainPattern = hasURLPattern + ? new URLPattern({ + hash: '#/:target(tot|v8|1-3|1-2|stable)/:domain{/}*', + }) + : null; +const hashTargetOnlyPattern = hasURLPattern + ? new URLPattern({ hash: '#/:target(tot|v8|1-3|1-2|stable){/}*' }) + : null; + +const hashMemberPattern = hasURLPattern ? new URLPattern({ hash: '#/:domain.:member' }) : null; +const hashDomainPattern = hasURLPattern ? new URLPattern({ hash: '#/:domain{/}*' }) : null; +const hashDirectPattern = hasURLPattern ? new URLPattern({ hash: '#:domain' }) : null; + +const queryMemberPattern = hasURLPattern ? new URLPattern({ search: '?:domain.:member' }) : null; +const queryDomainPattern = hasURLPattern ? new URLPattern({ search: '?:domain' }) : null; + +/** + * Parses any incoming route variant into a canonical RouteInfo object. + * Uses standard URLPattern when available, with a regex/string fallback. + * + * Supported route structures: + * - Modern hash routes: #/Page.navigate, #/Page, #/v8/Runtime.evaluate, #/stable/Network.getCookies + * - Legacy paths: /tot/Page/#method-navigate, /1-3/Page/#method-navigate, /1-2/Network/ + * - Base-path prefixed: /devtools-protocol/tot/Page/#method-navigate, /debugger-protocol-viewer/tot/Page/#method-navigate + * - Isolated legacy anchors: #method-navigate, #type-Node, #event-requestWillBeSent + * - Query format: ?Page.navigate, ?Network + * + * @param {string|null} [routeString] + * @returns {RouteInfo} + */ +export function parseRoute(routeString) { + if (!routeString || typeof routeString !== 'string') { + return { target: 'tot', domain: null, member: null }; + } + + const trimmed = routeString.trim(); + if (!trimmed || trimmed === '#' || trimmed === '#/' || trimmed === '/') { + return { target: 'tot', domain: null, member: null }; + } + + if (hasURLPattern && legacyAnchorPattern && legacyPathPattern) { + const url = + trimmed.startsWith('#') || trimmed.startsWith('?') || trimmed.startsWith('/') + ? new URL(trimmed, ROUTE_BASE_URL) + : new URL('/' + trimmed, ROUTE_BASE_URL); + + const legacyAnchorMatch = legacyAnchorPattern.exec(url); + const legacyMember = legacyAnchorMatch?.hash.groups.member ?? null; + + const legacyPathMatch = legacyPathPattern.exec(url); + if ( + legacyPathMatch?.pathname.groups.domain && + !legacyPathMatch.pathname.groups.domain.endsWith('.html') + ) { + return { + target: normalizeTarget(legacyPathMatch.pathname.groups.target), + domain: legacyPathMatch.pathname.groups.domain, + member: legacyMember, + }; + } + + if (legacyMember) { + return { target: 'tot', domain: null, member: legacyMember }; + } + + const htm = hashTargetMemberPattern?.exec(url); + if (htm?.hash.groups.domain && htm.hash.groups.member) { + return { + target: normalizeTarget(htm.hash.groups.target), + domain: htm.hash.groups.domain, + member: htm.hash.groups.member, + }; + } + + const htd = hashTargetDomainPattern?.exec(url); + if (htd?.hash.groups.domain) { + return { + target: normalizeTarget(htd.hash.groups.target), + domain: htd.hash.groups.domain, + member: null, + }; + } + + const hto = hashTargetOnlyPattern?.exec(url); + if (hto?.hash.groups.target) { + return { + target: normalizeTarget(hto.hash.groups.target), + domain: null, + member: null, + }; + } + + const hm = hashMemberPattern?.exec(url); + if (hm?.hash.groups.domain && hm.hash.groups.member) { + return { + target: 'tot', + domain: hm.hash.groups.domain, + member: hm.hash.groups.member, + }; + } + + const hd = hashDomainPattern?.exec(url); + if (hd?.hash.groups.domain) { + return { + target: 'tot', + domain: hd.hash.groups.domain, + member: null, + }; + } + + const hdir = hashDirectPattern?.exec(url); + if (hdir?.hash.groups.domain) { + return { + target: 'tot', + domain: hdir.hash.groups.domain, + member: null, + }; + } + + const qm = queryMemberPattern?.exec(url); + if (qm?.search.groups.domain && qm.search.groups.member) { + return { + target: 'tot', + domain: qm.search.groups.domain, + member: qm.search.groups.member, + }; + } + + const qd = queryDomainPattern?.exec(url); + if (qd?.search.groups.domain) { + return { + target: 'tot', + domain: qd.search.groups.domain, + member: null, + }; + } + + return { target: 'tot', domain: null, member: null }; + } + + // Fallback string/regex parser for environments without URLPattern + const isolatedLegacyMatch = trimmed.match(/^#(?:method|type|event)-([\w-]+)$/); + if (isolatedLegacyMatch) { + return { target: 'tot', domain: null, member: isolatedLegacyMatch[1] }; + } + + const hashIndex = trimmed.indexOf('#'); + let pathPart = ''; + let hashPart = ''; + + if (hashIndex !== -1) { + pathPart = trimmed.slice(0, hashIndex); + hashPart = trimmed.slice(hashIndex + 1); + } else if (trimmed.startsWith('?')) { + hashPart = trimmed.slice(1); + } else { + pathPart = trimmed; + } + + const legacyHashMatch = hashPart.match(/^(?:method|type|event)-([\w-]+)$/); + const legacyMember = legacyHashMatch ? legacyHashMatch[1] : null; + + const pathSegments = pathPart + .split('/') + .map((s) => s.trim()) + .filter((s) => Boolean(s) && !s.endsWith('.html')); + + if ( + pathSegments.length > 0 && + (pathSegments[0] === 'devtools-protocol' || pathSegments[0] === 'debugger-protocol-viewer') + ) { + pathSegments.shift(); + } + + if (pathSegments.length > 0) { + /** @type {TargetKind} */ + let target = 'tot'; + let domain = null; + + const targetIndex = pathSegments.findIndex((s) => TARGET_MAP.has(s.toLowerCase())); + if (targetIndex !== -1) { + target = normalizeTarget(pathSegments[targetIndex]); + if (pathSegments.length > targetIndex + 1) { + domain = pathSegments[targetIndex + 1]; + } + } else { + domain = pathSegments[0]; + } + + return { target, domain, member: legacyMember }; + } + + let cleanHash = hashPart; + if (cleanHash.startsWith('/')) cleanHash = cleanHash.slice(1); + if (!cleanHash) return { target: 'tot', domain: null, member: null }; + + /** @type {TargetKind} */ + let target = 'tot'; + let targetAndRest = cleanHash; + + const slashIndex = cleanHash.indexOf('/'); + if (slashIndex !== -1) { + const potentialTarget = cleanHash.slice(0, slashIndex).toLowerCase(); + if (TARGET_MAP.has(potentialTarget)) { + target = normalizeTarget(potentialTarget); + targetAndRest = cleanHash.slice(slashIndex + 1); + } + } else if (TARGET_MAP.has(cleanHash.toLowerCase())) { + target = normalizeTarget(cleanHash); + targetAndRest = ''; + } + + targetAndRest = targetAndRest.replace(/\/+$/, ''); + if (!targetAndRest) return { target, domain: null, member: null }; + + const dotIndex = targetAndRest.indexOf('.'); + if (dotIndex !== -1) { + return { + target, + domain: targetAndRest.slice(0, dotIndex), + member: targetAndRest.slice(dotIndex + 1) || null, + }; + } + + return { target, domain: targetAndRest, member: null }; +} + +/** + * Formats canonical hash route from components. + * @param {{ target?: string|null, domain?: string|null, member?: string|null }} [route] + * @returns {string} Canonical hash route, e.g. '#/Page.navigate' + */ +export function formatRoute({ target = 'tot', domain = null, member = null } = {}) { + const normTarget = normalizeTarget(target); + const targetPrefix = normTarget === 'tot' ? '' : `${normTarget}/`; + + if (!domain) { + return normTarget === 'tot' ? '#/' : `#/${targetPrefix}`; + } + if (member) { + return `#/${targetPrefix}${domain}.${member}`; + } + return `#/${targetPrefix}${domain}`; +} diff --git a/src/protocol_renderer.js b/src/protocol_renderer.js new file mode 100644 index 0000000000..c0543f22dc --- /dev/null +++ b/src/protocol_renderer.js @@ -0,0 +1,543 @@ +/** + * @fileoverview DOM Renderer for CDP Domains, Commands, Events, and Types. + */ + +/** @import { ProtocolDomain, NormalizedProtocolDomain, ProtocolType, ProtocolCommand, ProtocolEvent, ProtocolParameter, ProtocolBackReference } from '../types/types.d.ts' */ + +export class ProtocolRenderer { + /** + * @param {string} domainName + * @param {string} domainEntry + * @returns {string} + */ + static titleId(domainName, domainEntry) { + return domainName + '_' + domainEntry; + } + + /** + * @param {ProtocolDomain} domain + * @returns {HTMLElement} + */ + static renderDomain(domain) { + const main = document.createElement('div'); + main.className = 'domain'; + if (domain.experimental) { + main.classList.add('domain-experimental'); + } + if (domain.deprecated) { + main.classList.add('domain-deprecated'); + } + + const container = document.createElement('div'); + container.className = 'box'; + main.appendChild(container); + const header = document.createElement('div'); + header.className = 'box-content'; + container.appendChild(header); + + const title = document.createElement('h2'); + header.appendChild(title); + title.textContent = domain.domain; + ProtocolRenderer.applyMarks(domain, title, false); + + if (domain.description) { + ProtocolRenderer.renderDescription(domain.description, header); + } + + ProtocolRenderer.renderTableOfContents(domain, header); + + if (domain.commands && domain.commands.length) { + ProtocolRenderer._renderDomainSection('Methods', 'methods', domain.commands, main, (m) => + ProtocolRenderer.renderEventOrMethod(domain, m, false), + ); + } + if (domain.events && domain.events.length) { + ProtocolRenderer._renderDomainSection('Events', 'events', domain.events, main, (e) => + ProtocolRenderer.renderEventOrMethod(domain, e, true), + ); + } + if (domain.types && domain.types.length) { + ProtocolRenderer._renderDomainSection('Types', 'types', domain.types, main, (t) => + ProtocolRenderer.renderDomainType(domain, t), + ); + } + + return main; + } + + /** + * @template T + * @param {string} titleText + * @param {string} sectionId + * @param {T[]} items + * @param {HTMLElement} parent + * @param {(item: T) => HTMLElement} renderItem + */ + static _renderDomainSection(titleText, sectionId, items, parent, renderItem) { + const title = document.createElement('h3'); + title.id = sectionId; + title.textContent = titleText; + parent.appendChild(title); + const container = document.createElement('div'); + container.className = 'box'; + parent.appendChild(container); + for (const item of items) { + container.appendChild(renderItem(item)); + } + } + + /** + * @param {string} titleText + * @param {ProtocolParameter[] | undefined} items + * @param {ProtocolDomain} domain + * @param {HTMLElement} parent + */ + static renderParameterList(titleText, items, domain, parent) { + if (!items || !items.length) return; + const title = document.createElement('h5'); + title.textContent = titleText; + parent.appendChild(title); + const container = document.createElement('dl'); + container.className = 'parameter-list'; + parent.appendChild(container); + for (const item of items) { + container.appendChild(ProtocolRenderer.renderParameter(domain, item)); + } + } + + /** + * @param {ProtocolDomain} domain + * @param {ProtocolType} type + * @returns {HTMLElement} + */ + static renderDomainType(domain, type) { + const main = document.createElement('div'); + main.className = 'type'; + if (type.deprecated) main.classList.add('deprecated-bg'); + main.appendChild( + ProtocolRenderer.renderTitle( + domain.domain, + type.id, + type, + 'type', + Boolean(domain.experimental), + ), + ); + if (type.type) { + const p = document.createElement('p'); + p.textContent = 'Type: '; + const spanEl = document.createElement('span'); + spanEl.className = 'parameter-type'; + spanEl.textContent = type.type; + p.appendChild(spanEl); + main.appendChild(p); + } + if (type.description) { + ProtocolRenderer.renderDescription(type.description, main); + } + ProtocolRenderer.renderParameterList('Properties', type.properties, domain, main); + if (type.enum) { + const allowedTitle = document.createElement('h5'); + allowedTitle.textContent = 'Allowed values'; + main.appendChild(allowedTitle); + const p = document.createElement('p'); + p.className = 'enum-values'; + main.appendChild(p); + type.enum.forEach((value, index) => { + const code = document.createElement('code'); + code.textContent = value; + p.append(code); + if (index < (type.enum?.length ?? 0) - 1) { + p.append(', '); + } + }); + } + if (type.referencedBy && type.referencedBy.length) { + // Render back references. + const title = document.createElement('h5'); + title.textContent = 'Referenced By'; + main.appendChild(title); + const container = document.createElement('ul'); + container.className = 'references-list'; + main.appendChild(container); + for (let reference of type.referencedBy) { + const li = document.createElement('li'); + container.appendChild(li); + const referenceIcon = document.createElement('span'); + referenceIcon.className = 'reference-icon'; + li.appendChild(referenceIcon); + referenceIcon.appendChild(ProtocolRenderer.renderEntityIcon(reference.type)); + li.appendChild(ProtocolRenderer.renderRef(reference.name)); + } + } + + return main; + } + + /** + * @param {string} domainName + * @param {string} title + * @param {ProtocolCommand | ProtocolEvent | ProtocolType} item + * @param {'type' | 'event' | 'method' | string} titleType + * @param {boolean} [isParentDomainExperimental] + * @returns {HTMLElement} + */ + static renderTitle(domainName, title, item, titleType, isParentDomainExperimental = false) { + const heading = document.createElement('h4'); + heading.className = 'monospace text-overflow'; + heading.appendChild(ProtocolRenderer.renderEntityIcon(titleType)); + + let id = `${domainName}.${title}`; + heading.setAttribute('id', ProtocolRenderer.titleId(domainName, title)); + const domainSpan = document.createElement('span'); + domainSpan.className = 'method-domain'; + domainSpan.textContent = domainName + '.'; + heading.appendChild(domainSpan); + const nameSpan = document.createElement('span'); + nameSpan.className = 'method-name'; + nameSpan.textContent = title; + heading.appendChild(nameSpan); + ProtocolRenderer.applyMarks(item, heading, isParentDomainExperimental); + const link = document.createElement('a'); + link.href = ProtocolRenderer.formatRef(id); + link.textContent = '#'; + link.className = 'title-link'; + heading.appendChild(link); + return heading; + } + + /** + * @param {ProtocolDomain} domain + * @param {HTMLElement} container + */ + static renderTableOfContents(domain, container) { + const isDomainExp = Boolean(domain.experimental); + /** + * @param {ProtocolCommand | ProtocolEvent} method + * @param {HTMLElement} container + */ + let renderEventOrMethodEntry = (method, container) => + ProtocolRenderer.renderTableOfContentsEntry(domain.domain, method.name, container); + /** + * @param {ProtocolType} type + * @param {HTMLElement} container + */ + let renderTypeEntry = (type, container) => + ProtocolRenderer.renderTableOfContentsEntry(domain.domain, type.id, container); + + if ( + (domain.commands && domain.commands.length) || + (domain.events && domain.events.length) || + (domain.types && domain.types.length) + ) { + const toc = document.createElement('div'); + toc.className = 'domain-toc'; + container.appendChild(toc); + if (domain.commands && domain.commands.length) + ProtocolRenderer.renderTableOfContentsSection( + 'Methods', + 'method', + domain.commands, + renderEventOrMethodEntry, + toc, + isDomainExp, + ); + if (domain.events && domain.events.length) + ProtocolRenderer.renderTableOfContentsSection( + 'Events', + 'event', + domain.events, + renderEventOrMethodEntry, + toc, + isDomainExp, + ); + if (domain.types && domain.types.length) + ProtocolRenderer.renderTableOfContentsSection( + 'Types', + 'type', + domain.types, + renderTypeEntry, + toc, + isDomainExp, + ); + } + } + + /** + * @template {ProtocolCommand | ProtocolEvent | ProtocolType} T + * @param {string} sectionName + * @param {string} sectionType + * @param {Array} entries + * @param {(item: T, container: HTMLElement) => HTMLElement} renderer + * @param {HTMLElement} container + * @param {boolean} [isDomainExp] + * @returns {HTMLElement} + */ + static renderTableOfContentsSection( + sectionName, + sectionType, + entries, + renderer, + container, + isDomainExp = false, + ) { + const sectionWrapper = document.createElement('div'); + sectionWrapper.className = 'toc-section'; + container.appendChild(sectionWrapper); + const title = document.createElement('h4'); + title.className = 'toc-section-heading'; + sectionWrapper.appendChild(title); + const badge = document.createElement('span'); + badge.className = `entity-icon entity-icon-${sectionType}`; + badge.textContent = sectionType.charAt(0).toUpperCase() + sectionType.slice(1) + 's'; + title.appendChild(badge); + + const section = document.createElement('div'); + section.className = 'toc-entries'; + sectionWrapper.appendChild(section); + for (let entry of entries) { + let row = renderer(entry, section); + ProtocolRenderer.applyMarks(entry, row, isDomainExp); + } + return section; + } + + /** + * @param {string} domainName + * @param {string} name + * @param {HTMLElement} container + * @returns {HTMLElement} + */ + static renderTableOfContentsEntry(domainName, name, container) { + const row = document.createElement('div'); + row.className = 'toc-link'; + container.appendChild(row); + let id = `${domainName}.${name}`; + let link = ProtocolRenderer.renderRef(id); + link.classList.add('monospace'); + row.appendChild(link); + return row; + } + + /** + * @param {ProtocolDomain} domain + * @param {ProtocolCommand | ProtocolEvent} method + * @param {boolean} isEvent + * @returns {HTMLElement} + */ + static renderEventOrMethod(domain, method, isEvent) { + const main = document.createElement('div'); + main.className = 'method'; + if (method.deprecated) main.classList.add('deprecated-bg'); + main.appendChild( + ProtocolRenderer.renderTitle( + domain.domain, + method.name, + method, + isEvent ? 'event' : 'method', + Boolean(domain.experimental), + ), + ); + if (method.description) { + ProtocolRenderer.renderDescription(method.description, main); + } + ProtocolRenderer.renderParameterList('Parameters', method.parameters, domain, main); + const command = /** @type {ProtocolCommand} */ (method); + ProtocolRenderer.renderParameterList('RETURN OBJECT', command.returns, domain, main); + return main; + } + + /** + * @param {ProtocolDomain} domain + * @param {ProtocolParameter} parameter + * @returns {DocumentFragment} + */ + static renderParameter(domain, parameter) { + let main = document.createDocumentFragment(); + { + // Render parameter name. + const name = document.createElement('div'); + name.className = 'parameter-name monospace'; + main.appendChild(name); + ProtocolRenderer.applyBackground(parameter, name); + if (parameter.optional) name.classList.add('optional'); + name.textContent = parameter.name || ''; + } + { + // Render parameter value. + const container = document.createElement('div'); + container.className = 'vbox parameter-value'; + main.appendChild(container); + ProtocolRenderer.applyBackground(parameter, container); + container.appendChild(ProtocolRenderer.renderTypeLink(domain, parameter)); + const description = document.createElement('span'); + description.className = 'parameter-description'; + container.appendChild(description); + let descriptions = []; + if (parameter.description) descriptions.push(parameter.description); + ProtocolRenderer.renderTextWithCode(descriptions.join(' '), description); + if (parameter.enum) { + description.append(' Allowed values: '); + parameter.enum.forEach((value, index) => { + const code = document.createElement('code'); + code.textContent = value; + description.append(code); + if (index < (parameter.enum?.length ?? 0) - 1) description.append(', '); + else description.append('.'); + }); + } + ProtocolRenderer.applyMarks(parameter, description, Boolean(domain.experimental)); + } + return main; + } + + /** + * @param {ProtocolDomain} domain + * @param {ProtocolParameter} parameter + * @returns {HTMLElement} + */ + static renderTypeLink(domain, parameter) { + const primitiveTypes = new Set(['string', 'integer', 'boolean', 'number', 'object', 'any']); + + if (parameter.type && primitiveTypes.has(parameter.type)) { + const typeSpan = document.createElement('span'); + typeSpan.className = 'parameter-type'; + typeSpan.textContent = parameter.type; + return typeSpan; + } + if (parameter.$ref) { + let $ref = parameter.$ref; + if (!$ref.includes('.')) $ref = domain.domain + '.' + parameter.$ref; + return ProtocolRenderer.renderRef($ref); + } + if (parameter.type === 'array' && parameter.items) { + const generic = document.createElement('span'); + generic.className = 'parameter-type'; + generic.appendChild(document.createTextNode('array [ ')); + generic.appendChild(ProtocolRenderer.renderTypeLink(domain, parameter.items)); + generic.appendChild(document.createTextNode(' ]')); + return generic; + } + const placeholder = document.createElement('span'); + placeholder.className = 'parameter-type'; + placeholder.textContent = ''; + return placeholder; + } + + /** + * @param {string} id + * @returns {string} + */ + static formatRef(id) { + return window.app && window.app.formatRef ? window.app.formatRef(id) : '#/' + id; + } + + /** + * @param {string} $ref + * @returns {HTMLAnchorElement} + */ + static renderRef($ref) { + const link = document.createElement('a'); + link.href = ProtocolRenderer.formatRef($ref); + link.textContent = $ref; + link.className = 'parameter-type'; + return link; + } + + /** + * @param {ProtocolDomain | ProtocolType | ProtocolCommand | ProtocolEvent | ProtocolParameter | null | undefined} item + * @param {HTMLElement} element + */ + static applyBackground(item, element) { + if (!item) return; + if (item.experimental) element.classList.add('experimental-bg'); + else if (item.deprecated) element.classList.add('deprecated-bg'); + } + + /** + * @param {ProtocolDomain | ProtocolType | ProtocolCommand | ProtocolEvent | ProtocolParameter | null | undefined} item + * @param {HTMLElement} element + * @param {boolean} [isParentDomainExperimental] + */ + static applyMarks(item, element, isParentDomainExperimental = false) { + if (!item) return; + if (item.experimental) { + if (isParentDomainExperimental) { + return; + } + const expSpan = document.createElement('span'); + expSpan.className = 'experimental'; + expSpan.textContent = 'exp'; + expSpan.title = 'Experimental'; + element.appendChild(expSpan); + } else if (item.deprecated) { + const depSpan = document.createElement('span'); + depSpan.className = 'deprecated'; + depSpan.textContent = 'deprecated'; + depSpan.title = 'Deprecated, will be removed'; + element.appendChild(depSpan); + } + } + + /** + * @param {string} type + * @returns {HTMLElement} + */ + static renderEntityIcon(type) { + const norm = type.toLowerCase() === 'command' ? 'method' : type.toLowerCase(); + const label = norm.charAt(0).toUpperCase() + norm.slice(1); + const icon = document.createElement('span'); + icon.className = `entity-icon entity-icon-${norm}`; + icon.textContent = label; + icon.title = label; + return icon; + } + + static renderMethodIcon() { + return ProtocolRenderer.renderEntityIcon('method'); + } + + static renderTypeIcon() { + return ProtocolRenderer.renderEntityIcon('type'); + } + + static renderEventIcon() { + return ProtocolRenderer.renderEntityIcon('event'); + } + + /** + * @param {string} text + * @param {HTMLElement} container + */ + static renderTextWithCode(text, container) { + if (!text) return; + const clean = text.replace(/^LINT\..*$\n?/gm, ''); + const parts = clean.split(/`([^`]+)`/g); + for (let i = 0; i < parts.length; i++) { + if (!parts[i]) continue; + if (i % 2 === 1) { + const code = document.createElement('code'); + code.textContent = parts[i]; + container.appendChild(code); + } else { + container.appendChild(document.createTextNode(parts[i])); + } + } + } + + /** + * @param {string} text + * @param {HTMLElement} parentElement + */ + static renderDescription(text, parentElement) { + if (!text) return; + const clean = text.replace(/^LINT\..*$\n?/gm, '').trim(); + if (!clean) return; + const paragraphs = clean.split(/\n\s*\n/); + for (const para of paragraphs) { + const p = document.createElement('p'); + ProtocolRenderer.renderTextWithCode(para, p); + parentElement.appendChild(p); + } + } +} diff --git a/src/search.js b/src/search.js new file mode 100644 index 0000000000..b302ea94c8 --- /dev/null +++ b/src/search.js @@ -0,0 +1,428 @@ +/** + * @fileoverview Fuzzy search controller and UI rendering for protocol entities. + */ + +/** @import { ProtocolDomain } from '../types/types.d.ts' */ + +import { FuzzySearch } from './fuzzy_search.js'; +import { ProtocolRenderer } from './protocol_renderer.js'; + +// Number of search results to render immediately. +const SEARCH_RENDER_COUNT = 50; + +/** @typedef {'method' | 'event' | 'type'} SearchItemKind */ + +const SearchItemType = { + Method: 'method', + Type: 'type', + Event: 'event', +}; + +/** + * @param {HTMLElement|null} target + * @param {HTMLInputElement} searchInput + * @returns {boolean} + */ +function isEditableOrActive(target, searchInput) { + if ( + target && + target.matches && + target.matches('input, textarea, select, [contenteditable="true"]') + ) { + return true; + } + return searchInput === document.activeElement; +} + +class SearchItem { + /** + * @param {string} domainName + * @param {string} domainEntry + * @param {SearchItemKind} itemType + * @param {string} [description] + * @param {(ref: string) => string} [formatRef] + */ + constructor(domainName, domainEntry, itemType, description, formatRef) { + this.domainName = domainName; + this.domainEntry = domainEntry; + this.type = itemType; + this.description = description || ''; + this.title = this.domainName + '.' + this.domainEntry; + const refFormatter = formatRef || (typeof window !== 'undefined' && window.app?.formatRef); + this.route = refFormatter ? refFormatter(this.title) : '#/' + this.title; + } +} + +class SearchResult { + /** + * @param {SearchItem} item + * @param {number} score + * @param {Array} matches + */ + constructor(item, score, matches) { + this.item = item; + this.score = score; + this.matches = matches; + } +} + +export class Search { + /** @type {typeof SearchItemType} */ + static ItemType; + /** @type {typeof SearchItem} */ + static Item; + /** @type {typeof SearchResult} */ + static SearchResult; + + /** + * @param {Element} searchHeader + * @param {Element} resultsElement + * @param {{ navigate?: (route: string) => void, formatRef?: (ref: string) => string, focusContent?: () => void }} [app] + */ + constructor(searchHeader, resultsElement, app) { + this._app = app; + const input = + searchHeader.tagName === 'INPUT' + ? searchHeader + : searchHeader.querySelector('input') || searchHeader; + this._searchInput = /** @type {HTMLInputElement} */ (input); + /** @type {Array} */ + this._items = []; + /** @type {Element|null} */ + this._selectedElement = null; + this._defaultValue = ''; + this._searchInput.addEventListener('input', this._onInput.bind(this), false); + this._searchInput.addEventListener('keydown', this._onKeyDown.bind(this), false); + this._resultsElement = resultsElement; + + document.addEventListener('keydown', (event) => { + const target = /** @type {HTMLElement|null} */ (event.target); + if (isEditableOrActive(target, this._searchInput)) return; + if (event.key === '/' || ((event.metaKey || event.ctrlKey) && event.key === 'k')) { + event.preventDefault(); + this._searchInput.focus(); + this._searchInput.select(); + return; + } + if (event.key === 'Backspace' || event.key === 'Delete') { + this._searchInput.focus(); + return; + } + if ( + event.key.length === 1 && + !event.ctrlKey && + !event.metaKey && + !event.altKey && + /\S/.test(event.key) + ) { + if (event.key !== '.') this._searchInput.value = ''; + this._searchInput.focus(); + } + }); + + document.addEventListener('paste', (event) => { + const target = /** @type {HTMLElement|null} */ (event.target); + if (isEditableOrActive(target, this._searchInput)) return; + this._searchInput.focus(); + }); + + document.addEventListener('click', (event) => { + const target = /** @type {HTMLElement|null} */ (event.target); + if (!target || this._searchInput.contains(target)) return; + const searchItem = /** @type {HTMLElement|null} */ (target.closest('.search-item')); + if (searchItem) { + event.preventDefault(); + event.stopPropagation(); + this.cancelSearch(); + const navigate = + this._app?.navigate || (typeof window !== 'undefined' && window.app?.navigate); + if (navigate && searchItem.dataset.route) navigate(searchItem.dataset.route); + return; + } + }); + } + + /** + * @param {Array} domains + */ + setDomains(domains) { + this._items = []; + const formatRef = this._app?.formatRef; + for (const domain of domains) { + for (const command of domain.commands || []) { + this._items.push( + new SearchItem(domain.domain, command.name, 'method', command.description, formatRef), + ); + } + for (const event of domain.events || []) { + this._items.push( + new SearchItem(domain.domain, event.name, 'event', event.description, formatRef), + ); + } + for (const type of domain.types || []) { + this._items.push( + new SearchItem(domain.domain, type.id, 'type', type.description, formatRef), + ); + } + } + } + + cancelSearch() { + this._searchInput.blur(); + /** @type {HTMLElement} */ (this._resultsElement).style.setProperty('display', 'none'); + this._searchInput.value = this._defaultValue; + if (this._app?.focusContent) this._app.focusContent(); + else if (typeof window !== 'undefined' && window.app?.focusContent) window.app.focusContent(); + } + + /** + * @param {string} value + */ + setDefaultValue(value) { + this._defaultValue = value; + } + + _onInput() { + this._selectedElement = null; + /** @type {HTMLElement} */ (this._resultsElement).style.setProperty('display', 'block'); + let query = this._searchInput.value.trim(); + let items = this._items; + let results = this._doSearch(items, query); + if (results.length === 0) { + this._renderMessage('Nothing is found.'); + return; + } + this._resultsElement.textContent = ''; + if (!query) this._addNavigateHomeItem(); + for (let i = 0; i < Math.min(results.length, SEARCH_RENDER_COUNT); ++i) + this._resultsElement.appendChild(renderSearchResult(results[i])); + this._addAllResultsButtonIfNeeded(results); + this._selectedElement = /** @type {Element|null} */ (this._resultsElement.firstChild); + if (this._selectedElement) this._selectedElement.classList.add('selected'); + } + + _addNavigateHomeItem() { + let main = document.createElement('div'); + main.className = 'hbox search-item custom-search-result'; + main.textContent = 'Navigate Home'; + main.dataset.route = '#/'; + this._resultsElement.appendChild(main); + } + + /** + * @param {Array} results + * @returns {HTMLElement|undefined} + */ + _addAllResultsButtonIfNeeded(results) { + let remainingResults = results.length - SEARCH_RENDER_COUNT; + if (remainingResults <= 0) return; + let main = document.createElement('div'); + main.className = 'hbox search-item custom-search-result monospace'; + main.textContent = `Show Remaining ${remainingResults} Results...`; + main.addEventListener( + 'click', + (event) => { + event.preventDefault(); + event.stopPropagation(); + for (let i = SEARCH_RENDER_COUNT; i < results.length; ++i) + this._resultsElement.appendChild(renderSearchResult(results[i])); + let next = /** @type {Element|null} */ (main.nextSibling); + main.remove(); + this._selectElement(next); + this._searchInput.focus(); + }, + false, + ); + this._resultsElement.appendChild(main); + return main; + } + + /** + * @param {string} text + */ + _renderMessage(text) { + this._resultsElement.textContent = ''; + const box = document.createElement('div'); + box.className = 'box search-results-message'; + const h4 = document.createElement('h4'); + h4.textContent = text; + box.appendChild(h4); + this._resultsElement.appendChild(box); + } + + /** + * @param {Array} items + * @param {string} query + * @returns {Array} + */ + _doSearch(items, query) { + let results = []; + if (!query) { + for (let item of items) results.push(new SearchResult(item, 0, [])); + return results; + } + + let fuzzySearch = new FuzzySearch(query); + for (let item of items) { + /** @type {Array} */ + let matches = []; + let score = fuzzySearch.score(item.title, matches); + if (score === 0) continue; + results.push(new SearchResult(item, score, matches)); + } + results.sort((/** @type {SearchResult} */ a, /** @type {SearchResult} */ b) => { + const scoreDiff = b.score - a.score; + if (scoreDiff) return scoreDiff; + // Prefer left-most search results. + const startDiff = (a.matches[0] ?? 0) - (b.matches[0] ?? 0); + if (startDiff) return startDiff; + return a.item.title.length - b.item.title.length; + }); + return results; + } + + /** + * @param {KeyboardEvent} event + */ + _onKeyDown(event) { + if (event.key === 'Escape' || event.keyCode === 27) { + event.preventDefault(); + event.stopPropagation(); + this.cancelSearch(); + } else if (event.key === 'ArrowDown') { + this._selectNext(event); + } else if (event.key === 'ArrowUp') { + this._selectPrevious(event); + } else if (event.key === 'Enter') { + event.preventDefault(); + event.stopPropagation(); + if (this._selectedElement) /** @type {HTMLElement} */ (this._selectedElement).click(); + } + } + + /** + * @param {Event} event + */ + _selectNext(event) { + if (!this._selectedElement) return; + event.preventDefault(); + event.stopPropagation(); + let next = /** @type {Element|null} */ (this._selectedElement.nextSibling); + if (!next) next = /** @type {Element|null} */ (this._resultsElement.firstChild); + this._selectElement(next); + } + + /** + * @param {Event} event + */ + _selectPrevious(event) { + if (!this._selectedElement) return; + event.preventDefault(); + event.stopPropagation(); + let previous = /** @type {Element|null} */ (this._selectedElement.previousSibling); + if (!previous) previous = /** @type {Element|null} */ (this._resultsElement.lastChild); + this._selectElement(previous); + } + + /** + * @param {Element|null} item + */ + _selectElement(item) { + if (this._selectedElement) this._selectedElement.classList.remove('selected'); + this._selectedElement = item; + if (this._selectedElement) { + this._selectedElement.classList.add('selected'); + if (typeof this._selectedElement.scrollIntoViewIfNeeded === 'function') + this._selectedElement.scrollIntoViewIfNeeded(false); + } + } +} + +/** + * @param {SearchResult} searchResult + * @returns {Element} + */ +function renderSearchResult(searchResult) { + let item = searchResult.item; + let main = document.createElement('div'); + main.className = 'hbox search-item'; + let icon = document.createElement('span'); + icon.className = 'search-item-icon'; + main.appendChild(icon); + icon.appendChild(ProtocolRenderer.renderEntityIcon(item.type)); + { + let container = document.createElement('div'); + container.className = 'search-item-main'; + main.appendChild(container); + let p1 = document.createElement('div'); + p1.className = 'search-item-title monospace'; + container.appendChild(p1); + let domainElement = document.createElement('span'); + domainElement.className = 'search-item-title-domain'; + p1.appendChild(domainElement); + domainElement.appendChild( + renderTextWithMatches(item.title, searchResult.matches, 0, item.domainName.length + 1), + ); + p1.appendChild( + renderTextWithMatches( + item.title, + searchResult.matches, + item.domainName.length + 1, + item.title.length, + ), + ); + let p2 = document.createElement('div'); + p2.className = 'search-item-description'; + p2.textContent = item.description; + container.appendChild(p2); + } + main.dataset.route = item.route; + return main; +} + +/** + * @param {string} text + * @param {Array} matches + * @param {number} fromIndex + * @param {number} toIndex + * @returns {Node} + */ +function renderTextWithMatches(text, matches, fromIndex, toIndex) { + if (!matches.length) return document.createTextNode(text.substring(fromIndex, toIndex)); + let result = document.createDocumentFragment(); + let insideMatch = false; + let currentIndex = fromIndex; + let matchIndex = new Set(matches); + for (let i = fromIndex; i < toIndex; ++i) { + if (insideMatch !== matchIndex.has(i)) { + add(currentIndex, i, insideMatch); + insideMatch = matchIndex.has(i); + currentIndex = i; + } + } + add(currentIndex, toIndex, insideMatch); + return result; + + /** + * @param {number} from + * @param {number} to + * @param {boolean} isHighlight + */ + function add(from, to, isHighlight) { + if (to === from) return; + const chunk = text.substring(from, to); + if (isHighlight) { + const span = document.createElement('span'); + span.className = 'search-highlight'; + span.textContent = chunk; + result.appendChild(span); + } else { + result.appendChild(document.createTextNode(chunk)); + } + } +} + +// Expose on Search class for backward compatibility and window +Search.ItemType = SearchItemType; +Search.Item = SearchItem; +Search.SearchResult = SearchResult; diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000000..f415a81750 --- /dev/null +++ b/src/style.css @@ -0,0 +1,1085 @@ +/* ========================================================================== + Chrome DevTools Protocol Viewer - Material Design Theme + Authentic styling matching origin/master and vanilla-protocol-viewer + ========================================================================== */ + +:root { + --header-height: 50px; + --sidebar-width: 200px; + --color-bg: #fafafa; + --color-surface: #ffffff; + --color-text: #202124; + --color-text-secondary: #5f6368; + --color-border: rgba(0, 0, 0, 0.12); + --color-header: #3f51b5; + --color-header-text: #ffffff; + --color-hover: rgba(225, 245, 254, 0.5); + --color-active: rgb(225, 245, 254); + --color-primary: #3f51b5; + --color-link: hsl(232, 50%, 45%); + --elevation-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06); + --font-sans: + system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, + 'Helvetica Neue', Arial, sans-serif; + --font-mono: + ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace; + --parameters-grid-template-columns: minmax(190px, max-content) 1fr; +} + +* { + box-sizing: border-box; +} + +body { + color: var(--color-text); + background-color: var(--color-bg); + font-family: var(--font-sans); + font-size: 15px; + line-height: 1.6; + padding: 0; + margin: 0; + overflow: hidden; + -webkit-font-smoothing: antialiased; +} + +p { + margin: 0 0 14px 0; + font-size: 15px; + line-height: 1.65; + text-wrap: pretty; +} + +h1, +h2, +h3, +h4, +h5 { + color: var(--color-text); + margin-top: 0; + line-height: 1.3; + text-wrap: balance; +} + +h1 { + font-size: 28px; + font-weight: 400; + letter-spacing: -0.3px; + margin-bottom: 16px; + text-wrap: balance; +} + +h2 { + font-size: 24px; + font-weight: 500; + letter-spacing: -0.2px; + margin-bottom: 12px; + display: flex; + align-items: center; + flex-wrap: wrap; +} + +h3 { + font-size: 19px; + font-weight: 500; + margin: 32px 0 14px 0; + color: #3c4043; + letter-spacing: -0.1px; + scroll-margin-top: calc(var(--header-height) + 16px); +} + +h4 { + margin: 0 0 8px 0; + font-size: 15.5px; + font-weight: 600; + line-height: 1.4; + scroll-margin-top: calc(var(--header-height) + 16px); +} + +h5 { + color: var(--color-text-secondary); + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.8px; + font-size: 11px; + margin: 18px 0 8px 0; + line-height: 1.3; +} + +a { + color: var(--color-link); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +code { + font-family: var(--font-mono); + color: #7b1fa2; + font-size: 0.92em; + background-color: rgba(0, 0, 0, 0.04); + padding: 1.5px 5px; + border-radius: 3px; +} + +pre { + background-color: #f8f9fa; + border-radius: 4px; + padding: 14px 18px; + font-family: var(--font-mono); + font-size: 13px; + line-height: 1.55; + overflow-x: auto; + border: 1px solid var(--color-border); + margin: 16px 0; +} + +pre code { + background-color: transparent; + padding: 0; + border-radius: 0; + color: inherit; + font-size: inherit; +} + +figure.screenshot { + margin: 20px 0 28px 0; + text-align: center; +} + +figure.screenshot a { + display: block; + text-align: center; +} + +figure.screenshot img { + max-width: 100%; + max-height: 380px; + object-fit: contain; + height: auto; + border: 1px solid var(--color-border); + border-radius: 2px; + box-shadow: var(--elevation-shadow); +} + +.table-responsive { + width: 100%; + overflow-x: auto; + margin: 14px 0 22px 0; + -webkit-overflow-scrolling: touch; +} + +table { + width: 100%; + border-collapse: collapse; + font-size: 13.5px; + line-height: 1.5; +} + +th, +td { + padding: 8px 12px; + text-align: left; + border-bottom: 1px solid var(--color-border); + vertical-align: top; +} + +th { + background-color: #f8f9fa; + font-weight: 600; + color: var(--color-text); + border-top: 1px solid var(--color-border); + white-space: nowrap; +} + +tr:hover td { + background-color: #fcfdfe; +} + +.http-method { + display: inline-block; + padding: 1.5px 6px; + border-radius: 3px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.5px; + font-family: var(--font-mono); + vertical-align: middle; + text-transform: uppercase; +} + +.http-method-get { + background-color: #e8f0fe; + color: #1967d2; +} + +.http-method-put { + background-color: #fef7e0; + color: #b06000; +} + +.http-method-ws { + background-color: #e6f4ea; + color: #137333; +} + +/* ========================================================================== + Toolbar Header (50px) - Indigo Theme + ========================================================================== */ + +.toolbar-header { + height: var(--header-height); + background-color: var(--color-header); + border-bottom: 1px solid rgba(0, 0, 0, 0.14); + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 100; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 16px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.header-left { + display: flex; + align-items: center; + gap: 12px; + min-width: 200px; +} + +.drawer-toggle { + display: none; + background: none; + border: none; + font-size: 20px; + color: #ffffff; + cursor: pointer; + padding: 4px 8px; + border-radius: 4px; + align-items: center; + justify-content: center; +} + +.drawer-toggle:hover { + background-color: rgba(255, 255, 255, 0.15); +} + +.brand-link { + display: flex; + align-items: center; + gap: 10px; + color: #ffffff; + font-weight: 400; + font-size: 18px; + text-decoration: none; + user-select: none; +} + +.brand-link:hover { + text-decoration: none; + color: #ffffff; +} + +.brand-title { + white-space: nowrap; +} + +.header-center { + flex: 1; + max-width: 520px; + margin: 0 20px; +} + +.search-box { + display: flex; + align-items: center; + background-color: transparent; + border-bottom: 1px solid rgba(255, 255, 255, 0.52); + padding: 0 0 3px 0; + transition: border-bottom-color 0.2s ease; +} + +.search-box:focus-within { + border-bottom-color: #ffffff; +} + +.search-box input[type='search'] { + flex: 1; + border: none; + background: transparent; + outline: none; + font-family: inherit; + font-size: 18px; + color: #ffffff; + text-align: center; + width: 100%; +} + +.search-box input[type='search']::placeholder { + color: rgba(255, 255, 255, 0.5); +} + +.search-box input[type='search']::-webkit-search-cancel-button { + cursor: pointer; + filter: invert(1); +} + +.search-kbd, +.inline-kbd { + display: inline-block; + font-family: var(--font-mono); + font-size: 11px; + color: rgba(255, 255, 255, 0.7); + background-color: rgba(255, 255, 255, 0.15); + border: 1px solid rgba(255, 255, 255, 0.3); + border-radius: 3px; + padding: 0 5px; + line-height: 18px; + user-select: none; +} + +.header-right { + display: flex; + align-items: center; + gap: 12px; +} + +.toolbar-link { + display: flex; + align-items: center; + justify-content: center; + color: rgba(255, 255, 255, 0.85); + padding: 6px; + border-radius: 4px; +} + +.toolbar-link:hover { + color: #ffffff; + background-color: rgba(255, 255, 255, 0.15); + text-decoration: none; +} + +.toolbar-icon.github { + filter: brightness(0) invert(1); + opacity: 0.85; + transition: opacity 0.15s; +} + +.toolbar-link:hover .toolbar-icon.github { + opacity: 1; +} + +/* ========================================================================== + Sidebar Navigation (200px) + ========================================================================== */ + +#sidebar { + background-color: var(--color-surface); + position: fixed; + width: var(--sidebar-width); + top: var(--header-height); + bottom: 0; + left: 0; + border-right: 1px solid var(--color-border); + display: flex; + flex-direction: column; + z-index: 50; + overflow-x: hidden; +} + +.domain-list { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + padding: 0; +} + +.sidebar-footer { + padding: 8px 10px; + border-top: 1px solid var(--color-border); + background-color: #fafafa; +} + +.target-selector { + width: 100%; + padding: 4px 6px; + font-family: inherit; + font-size: 12px; + color: var(--color-text); + background-color: #ffffff; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 2px; + outline: none; + cursor: pointer; +} + +.target-selector:focus { + border-color: #3f51b5; +} + +#sidebar .domain-link { + text-decoration: none; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + font-size: 14px; + color: var(--color-text); + line-height: 24px; + min-height: 38px; + padding: 0 16px; + border-left: 10px solid transparent; + cursor: pointer; +} + +#sidebar .domain-link:hover { + background-color: var(--color-hover); + text-decoration: none; +} + +#sidebar .active-link { + font-weight: bold; + background-color: rgb(225, 245, 254); + color: #1a237e; +} + +#sidebar .domain-link.experimental-bg { + border-left-color: #e5737399; +} + +#sidebar .domain-link.deprecated-bg { + border-left-color: #ffcc8099; +} + +.sidebar-divider { + height: 1px; + background-color: var(--color-border); + margin: 6px 0; +} + +#sidebar .domain-link.sidebar-meta-link { + font-size: 13px; + color: var(--color-text-secondary); + border-left-width: 0; + padding: 0 16px; + min-height: 34px; +} + +#sidebar .domain-link.sidebar-meta-link:hover { + color: var(--color-text); +} + +#sidebar .domain-link.sidebar-meta-link.active-link { + color: #1a237e; + font-weight: 600; + background-color: rgb(225, 245, 254); +} + +/* ========================================================================== + Main Content Area & Material Elevation Cards + ========================================================================== */ + +#content { + background-color: var(--color-bg); + position: absolute; + left: var(--sidebar-width); + top: var(--header-height); + bottom: 0; + right: 0; + overflow-y: auto; + outline: none; +} + +.domain { + padding: 24px 36px 40px 36px; + max-width: 1040px; + margin: 0 auto; +} + +.box { + width: 100%; + max-width: 1000px; + border-radius: 4px; + border: 1px solid rgba(0, 0, 0, 0.08); + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.08), + 0 1px 2px rgba(0, 0, 0, 0.04); + margin: 0 auto 28px auto; + background-color: var(--color-surface); + overflow: hidden; +} + +.box-content { + padding: 20px 28px; +} + +.method, +.type { + padding: 20px 28px; +} + +.method:not(:last-child), +.type:not(:last-child) { + border-bottom: 1px solid rgba(0, 0, 0, 0.08); +} + +.method h4, +.type h4 { + font-size: 15.5px; + font-weight: 500; + margin: 0 0 10px 0; + padding: 0; + line-height: 1.4; + display: flex; + align-items: center; + flex-wrap: wrap; +} + +.domain-padding { + height: 80px; + display: flex; + font-size: 20px; + align-items: center; + color: #3f51b5; + opacity: 0.12; + justify-content: center; +} + +/* Table of Contents */ +.domain-toc { + padding-top: 18px; + display: flex; + flex-direction: column; + gap: 18px; +} + +.toc-section { + display: flex; + flex-direction: column; + gap: 8px; +} + +.toc-section-heading { + margin: 0; + padding: 0; + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + font-weight: 600; + line-height: 1.2; +} + +.toc-section-link { + color: var(--color-text); + text-decoration: none; + font-size: 13.5px; + font-weight: 600; + letter-spacing: -0.1px; +} + +.toc-section-link:hover { + text-decoration: underline; + color: var(--color-primary); +} + +.toc-entries { + columns: 320px; + column-gap: 16px; + margin: 0; + padding: 0; +} + +.toc-link { + display: inline-flex; + align-items: center; + break-inside: avoid; + margin-bottom: 6px; + max-width: 100%; + padding: 3px 8px; + background-color: #f8f8f8; + border: 1px solid rgba(0, 0, 0, 0.04); + border-radius: 4px; + font-size: 12.5px; + line-height: 1.4; + box-sizing: border-box; + transition: + background-color 0.15s ease, + border-color 0.15s ease; + margin-right: 8px; +} + +.toc-link a { + color: #374151; + text-decoration: none; + font-family: var(--font-mono); + font-size: 12.5px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + min-width: 0; +} + +.toc-link:hover { + background-color: #e8eaf6; + border-color: #c5cae9; +} + +.toc-link:hover a { + color: #1a237e; + text-decoration: none; +} + +.toc-link span.experimental, +.toc-link span.deprecated { + font-size: 9px; + line-height: 1; + font-weight: 700; + padding: 1px 4px; + margin-left: 5px; + border-radius: 2px; + letter-spacing: 0.3px; + white-space: nowrap; + flex-shrink: 0; +} + +.method, +.type, +#methods, +#events, +#types { + scroll-margin-top: calc(var(--header-height) + 16px); +} + +.method-domain { + color: #757575; + font-weight: 400; +} + +.method-name { + color: #202124; + font-weight: 600; +} + +/* ========================================================================== + Utility Classes + ========================================================================== */ + +.hbox { + display: flex; + flex-direction: row; + align-items: center; +} + +.vbox { + display: flex; + flex-direction: column; +} + +.monospace { + font-family: var(--font-mono); +} + +.text-overflow { + overflow: hidden; + text-overflow: ellipsis; +} + +.experimental-bg { + background-color: rgba(255, 212, 212, 0.2); +} + +.deprecated-bg { + background-color: rgba(255, 249, 187, 0.2); +} + +/* ========================================================================== + Protocol Renderer Classes + ========================================================================== */ + +.parameter-list { + padding: 4px 0 6px 0; + display: grid; + grid-template-columns: var(--parameters-grid-template-columns); + gap: 8px 16px; + margin: 0; +} + +.parameter { + border-left: 3px solid transparent; + align-items: baseline; +} + +.parameter-name { + text-align: right; + color: #202124; + overflow-wrap: break-word; + padding: 4px 10px 4px 0; + font-weight: 500; + font-size: 13.5px; + line-height: 1.5; +} + +.parameter-value { + overflow: hidden; + padding: 4px 0; + display: flex; + flex-direction: column; + gap: 4px; +} + +.parameter-type { + font-weight: 600; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #3f51b5; + font-size: 13.5px; + line-height: 1.4; +} + +.parameter-description { + font-size: 14px; + line-height: 1.55; + color: var(--color-text); +} + +.enum-values { + font-size: 14px; + line-height: 1.8; + color: var(--color-text-secondary); +} + +.enum-values code { + color: #6a1b9a; + background-color: #f3e5f5; + border: 1px solid rgba(106, 27, 154, 0.15); + font-weight: 500; + white-space: nowrap; +} + +.optional::after { + content: 'optional'; + display: block; + font-size: 11px; + font-weight: 400; + color: var(--color-text-secondary); + font-family: var(--font-sans); + font-style: italic; + margin-top: 2px; +} + +.title-link { + margin-left: 8px; + display: none; + color: var(--color-text-secondary); + font-size: 13px; +} + +h4:hover .title-link { + display: inline; + user-select: none; +} + +/* Badges & Entity Icons */ +span.experimental, +span.deprecated { + font-size: 10px; + line-height: 12px; + text-transform: uppercase; + background-color: #d32f2f; + padding: 2px 5px; + cursor: help; + color: white; + vertical-align: middle; + font-weight: 600; + letter-spacing: 0.4px; + font-family: var(--font-sans); + margin-left: 8px; + user-select: none; + border-radius: 3px; + display: inline-block; +} + +span.deprecated { + background-color: #e65100; +} + +/* Domain-level badging: if the whole domain is experimental or deprecated, + badge the top card heading and suppress redundant per-item badges inside */ +.domain-experimental span.experimental { + display: none; +} + +.domain-experimental h2 span.experimental, +.domain-experimental .domain-title-heading span.experimental { + display: inline-block; +} + +.domain-deprecated span.deprecated { + display: none; +} + +.domain-deprecated h2 span.deprecated, +.domain-deprecated .domain-title-heading span.deprecated { + display: inline-block; +} + +/* Badge inside h2: strictly controlled proportions (no more giant 17px badge) */ +h2 span.experimental, +h2 span.deprecated, +.domain-title-heading span.experimental, +.domain-title-heading span.deprecated { + font-size: 11px; + font-weight: 600; + letter-spacing: 0.5px; + vertical-align: middle; + line-height: normal; + padding: 2px 6px; + border-radius: 3px; + margin-left: 10px; +} + +/* Entity Icons - Solid high-contrast accessible chips (WCAG AA compliant) */ +.entity-icon { + vertical-align: middle; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 2px 6px; + font-size: 11px; + color: #ffffff; + border-radius: 3px; + user-select: none; + font-weight: 600; + letter-spacing: 0.3px; + line-height: 14px; + margin-right: 8px; +} + +/* Solid darker amber with white text: passes WCAG AA (> 6.2:1 contrast) */ +.entity-icon-method { + background-color: #8c5000; +} + +/* Solid green with white text: passes WCAG AA (5.14:1 contrast) */ +.entity-icon-event { + background-color: #2e7d32; +} + +/* Solid purple with white text: passes WCAG AA (6.7:1 contrast) */ +.entity-icon-type { + background-color: #7b1fa2; +} + +/* ========================================================================== + References ("Used by") + ========================================================================== */ + +.references-list { + list-style-type: none; + padding-left: 0; + margin: 6px 0; + display: flex; + flex-direction: column; + gap: 6px; +} + +.references-list li { + display: flex; + align-items: center; + font-size: 13.5px; + line-height: 1.5; +} + +.reference-icon { + width: 55px; + display: inline-flex; + justify-content: flex-end; + vertical-align: middle; + text-align: right; + margin-right: 8px; + flex-shrink: 0; +} + +/* ========================================================================== + Search Overlay & Results + ========================================================================== */ + +#sresults { + display: none; + background-color: #ffffff; + position: absolute; + left: var(--sidebar-width); + top: var(--header-height); + bottom: 0; + right: 0; + overflow-y: auto; + border-top: 2px solid rgba(51, 51, 51, 0.52); + z-index: 90; +} + +#sresults .search-item { + padding: 6px 12px; + align-items: center; + cursor: pointer; + border-bottom: 1px solid rgba(51, 51, 51, 0.12); +} + +#sresults .search-item.selected { + background-color: #e3f2fd; +} + +#sresults .search-item:hover { + background-color: var(--color-hover); +} + +#sresults .search-item-title { + overflow: hidden; + text-overflow: ellipsis; + font-weight: 500; +} + +#sresults .search-item-title-domain { + color: hsla(0, 0%, 57%, 1); +} + +#sresults .search-item-icon { + margin: 8px 14px 8px 6px; + width: 50px; + text-align: center; + flex-shrink: 0; + flex-grow: 0; +} + +#sresults .search-item-main { + flex: 1 1 auto; + max-width: 1000px; + overflow: hidden; +} + +#sresults .search-item-description { + font-size: 90%; + color: var(--color-text-secondary); +} + +.search-highlight { + background-color: #fff0a6; + font-weight: 600; +} + +.search-results-message { + margin: 30px auto; + max-width: 500px; + text-align: center; + color: var(--color-text-secondary); +} + +.custom-search-result { + justify-content: center; + height: 48px; + color: #3f51b5; + font-weight: 500; +} + +.landing-footer-note { + margin-top: 2rem; + color: var(--color-text-secondary); + font-size: 12px; +} + +/* ========================================================================== + Mobile Responsive Drawer (<= 800px) + ========================================================================== */ + +@media (max-width: 800px) { + .drawer-toggle { + display: inline-flex; + } + + #sidebar { + position: fixed; + top: var(--header-height); + bottom: 0; + left: 0; + width: 260px; + transform: translateX(-100%); + transition: transform 0.25s cubic-bezier(0, 0, 0.2, 1); + z-index: 150; + box-shadow: 2px 0 12px rgba(0, 0, 0, 0.25); + } + + body.drawer-open #sidebar { + transform: translateX(0); + } + + .drawer-backdrop { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.4); + z-index: 140; + display: none; + } + + body.drawer-open .drawer-backdrop { + display: block; + opacity: 1; + } + + #content { + left: 0; + padding: 8px; + } + + .domain { + padding: 16px 12px 32px 12px; + } + + .box-content, + .method, + .type { + padding: 16px; + } + + .parameter-list { + grid-template-columns: 1fr; + gap: 4px; + } + + .parameter-name { + text-align: left; + padding: 4px 0 0 0; + } + + .parameter-value { + padding: 0 0 8px 0; + } + + .toc-entries { + columns: 260px; + column-gap: 12px; + } + + #sresults { + left: 0; + } + + .header-left { + min-width: unset; + } +} + +@media (max-width: 480px) { + .brand-title { + display: none; + } + + .toc-entries { + columns: 1; + column-gap: 0; + } +} diff --git a/test/e2e.test.js b/test/e2e.test.js new file mode 100644 index 0000000000..e26adc8d52 --- /dev/null +++ b/test/e2e.test.js @@ -0,0 +1,619 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import os from 'node:os'; +import path from 'node:path'; +import { spawn, execSync } from 'node:child_process'; +import statikk from 'statikk'; +import { generateStubs } from '../scripts/generate-stubs.js'; + +/** + * Finds the Chrome executable path across macOS and Linux environments. + * @returns {string|null} + */ +function findChromeBinary() { + if (process.env.CHROME_PATH && fs.existsSync(process.env.CHROME_PATH)) { + return process.env.CHROME_PATH; + } + + const macPath = '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/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'; + if (fs.existsSync(macPath)) { + return macPath; + } + + try { + const whichOutput = execSync('which google-chrome || which chromium || which chrome', { + encoding: 'utf8', + stdio: ['pipe', 'pipe', 'ignore'], + }).trim(); + if (whichOutput && fs.existsSync(whichOutput)) { + return whichOutput; + } + } catch { + // Binary not in PATH + } + + return null; +} + +/** @import { Protocol } from 'devtools-protocol' */ +/** @import { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping.js' */ + +/** + * Minimal Chrome DevTools Protocol client over native WebSocket. + */ +class CdpClient { + /** + * @param {WebSocket} ws + */ + constructor(ws) { + this._ws = ws; + this._id = 1; + this._pending = new Map(); + + this._ws.onmessage = (event) => { + try { + const msg = JSON.parse(event.data); + if (msg.id && this._pending.has(msg.id)) { + const { resolve, reject } = this._pending.get(msg.id); + this._pending.delete(msg.id); + if (msg.error) { + reject(new Error(msg.error.message || JSON.stringify(msg.error))); + } else { + resolve(msg.result); + } + } + } catch (err) { + // Ignore JSON parse errors + } + }; + } + + /** + * Sends a CDP method call. + * @template {keyof ProtocolMapping.Commands} M + * @param {M} method + * @param {ProtocolMapping.Commands[M]['paramsType'][0]} [params] + * @param {string|null} [sessionId] + * @returns {Promise} + */ + send(method, params = /** @type {any} */ ({}), sessionId = null) { + return new Promise((resolve, reject) => { + const msgId = this._id++; + this._pending.set(msgId, { resolve, reject }); + const payload = /** @type {any} */ ({ id: msgId, method, params }); + if (sessionId) payload.sessionId = sessionId; + this._ws.send(JSON.stringify(payload)); + }); + } + + /** + * Returns a typed ProtocolApi interface for a given sessionId (or browser-level if omitted). + * @param {string|null} [sessionId] + * @returns {import('devtools-protocol/types/protocol-proxy-api.js').ProtocolProxyApi.ProtocolApi} + */ + createApi(sessionId = null) { + return /** @type {any} */ ( + new Proxy( + {}, + { + get: (_, domain) => + new Proxy( + {}, + { + get: + (_, method) => + (/** @type {any} */ params = {}) => + this.send( + /** @type {any} */ (`${String(domain)}.${String(method)}`), + params, + sessionId, + ), + }, + ), + }, + ) + ); + } + + /** + * Evaluates a JavaScript expression in the target page. + * @param {string} expression + * @param {Protocol.Target.SessionID|null} [sessionId] + * @returns {Promise} + */ + async evaluate(expression, sessionId = null) { + const res = await this.send( + 'Runtime.evaluate', + { + expression, + returnByValue: true, + awaitPromise: true, + }, + sessionId, + ); + + if (res.exceptionDetails) { + throw new Error( + `Evaluation exception: ${res.exceptionDetails.text || res.exceptionDetails.exception?.description}`, + ); + } + return res.result?.value; + } + + /** + * Repeatedly evaluates an expression until predicate returns truthy or times out. + * @param {string} expression + * @param {(val: any) => boolean} predicate + * @param {Protocol.Target.SessionID|null} [sessionId] + * @param {number} [timeoutMs] + * @param {number} [intervalMs] + * @returns {Promise} + */ + async pollEvaluate(expression, predicate, sessionId = null, timeoutMs = 15000, intervalMs = 100) { + const start = Date.now(); + let lastVal; + while (Date.now() - start < timeoutMs) { + try { + lastVal = await this.evaluate(expression, sessionId); + if (predicate ? predicate(lastVal) : Boolean(lastVal)) { + return lastVal; + } + } catch { + // Ignored during page navigation / transitions + } + await new Promise((r) => setTimeout(r, intervalMs)); + } + throw new Error( + `pollEvaluate timed out after ${timeoutMs}ms waiting for: ${expression}\nLast value: ${JSON.stringify(lastVal)}`, + ); + } +} + +test('Chrome DevTools Protocol Viewer E2E Tests', async (t) => { + const chromePath = findChromeBinary(); + if (!chromePath) { + t.skip('Chrome binary not found; skipping E2E tests in this environment.'); + return; + } + + const staticDir = path.resolve('devtools-protocol'); + generateStubs({ outputDir: staticDir }); + + // 1. Start static HTTP server with statikk on an ephemeral port + const { app, server, url: baseUrl } = await statikk({ root: staticDir, port: 0, cors: true }); + // Fallback to 404.html to mirror GitHub Pages behavior for unmatched routes + app.use( + /** + * @param {import('node:http').IncomingMessage} _req + * @param {import('node:http').ServerResponse} res + */ + async (_req, res) => { + try { + const notFoundData = await fs.promises.readFile(path.join(staticDir, '404.html')); + res.writeHead(404, { + 'Content-Type': 'text/html; charset=utf-8', + 'Access-Control-Allow-Origin': '*', + }); + res.end(notFoundData); + } catch { + res.writeHead(404, { 'Content-Type': 'text/plain' }); + res.end('Not Found'); + } + }, + ); + + // 2. Launch headless Chrome + const tmpUserDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cdp-viewer-e2e-')); + const chromeProcess = spawn( + chromePath, + [ + '--headless=new', + '--remote-debugging-port=0', + '--disable-gpu', + '--no-first-run', + '--no-sandbox', + '--disable-dev-shm-usage', + `--user-data-dir=${tmpUserDataDir}`, + 'about:blank', + ], + { stdio: ['ignore', 'pipe', 'pipe'] }, + ); + + /** @type {WebSocket|null} */ + let browserWs = null; + /** @type {CdpClient|null} */ + let cdp = null; + /** @type {Protocol.Target.TargetID|null} */ + let targetId = null; + /** @type {Protocol.Target.SessionID|null} */ + let sessionId = null; + /** @type {import('devtools-protocol/types/protocol-proxy-api.js').ProtocolProxyApi.ProtocolApi|null} */ + let browserApi = null; + /** @type {import('devtools-protocol/types/protocol-proxy-api.js').ProtocolProxyApi.ProtocolApi|null} */ + let pageApi = null; + + try { + // 3. Parse WebSocket URL from Chrome stderr + const wsUrl = await new Promise((resolve, reject) => { + const timeout = setTimeout( + () => reject(new Error('Timed out waiting for Chrome WebSocket URL')), + 10000, + ); + let stderrBuffer = ''; + chromeProcess.stderr.on('data', (chunk) => { + stderrBuffer += chunk.toString(); + const match = stderrBuffer.match(/DevTools listening on (ws:\/\/[^\s]+)/); + if (match) { + clearTimeout(timeout); + resolve(match[1]); + } + }); + chromeProcess.on('error', (err) => { + clearTimeout(timeout); + reject(err); + }); + chromeProcess.on('exit', (code) => { + clearTimeout(timeout); + reject(new Error(`Chrome exited prematurely with code ${code}`)); + }); + }); + + browserWs = new WebSocket(wsUrl); + await new Promise((resolve, reject) => { + if (!browserWs) return reject(new Error('No WebSocket')); + browserWs.onopen = () => resolve(undefined); + browserWs.onerror = reject; + }); + + cdp = new CdpClient(browserWs); + browserApi = cdp.createApi(); + + // 4. Create and attach to target page + const createTargetResult = await browserApi.Target.createTarget({ url: 'about:blank' }); + targetId = createTargetResult.targetId; + const attachResult = await browserApi.Target.attachToTarget({ targetId, flatten: true }); + sessionId = attachResult.sessionId; + pageApi = cdp.createApi(sessionId); + + assert.ok(cdp); + assert.ok(browserApi); + assert.ok(pageApi); + + await pageApi.Page.enable({}); + await pageApi.Runtime.enable(); + + const client = cdp; + const page = pageApi; + + // Dynamic native subtests + await t.test('1. Direct route navigation (#/Page.navigate)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page.navigate` }); + + const title = await client.pollEvaluate( + 'document.title', + (/** @type {any} */ val) => typeof val === 'string' && val.includes('Page.navigate'), + sessionId, + ); + const hasElement = await client.pollEvaluate( + 'Boolean(document.getElementById("Page_navigate"))', + (/** @type {any} */ val) => val === true, + sessionId, + ); + + assert.ok( + title.includes('Page.navigate'), + `Expected title to contain "Page.navigate", got "${title}"`, + ); + assert.strictEqual(hasElement, true, 'Expected #Page_navigate element to exist in DOM'); + }); + + await t.test('2. Legacy URL redirection (/tot/Page/#method-navigate)', async () => { + await page.Page.navigate({ url: `${baseUrl}/tot/Page/#method-navigate` }); + + const hash = await client.pollEvaluate( + 'window.location.hash', + (/** @type {any} */ val) => val === '#/Page.navigate', + sessionId, + ); + + assert.strictEqual( + hash, + '#/Page.navigate', + `Expected hash to be "#/Page.navigate", got "${hash}"`, + ); + }); + + await t.test('3. Target selector routing (#/v8/Runtime.evaluate)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/v8/Runtime.evaluate` }); + + const targetValue = await client.pollEvaluate( + 'document.getElementById("target-selector") ? document.getElementById("target-selector").value : null', + (/** @type {any} */ val) => val === 'v8', + sessionId, + ); + const hasRuntimeEvaluate = await client.pollEvaluate( + 'Boolean(document.getElementById("Runtime_evaluate"))', + (/** @type {any} */ val) => val === true, + sessionId, + ); + + assert.strictEqual( + targetValue, + 'v8', + `Expected target dropdown value to be "v8", got "${targetValue}"`, + ); + assert.strictEqual( + hasRuntimeEvaluate, + true, + 'Expected #Runtime_evaluate element to exist in DOM for v8', + ); + }); + + await t.test( + '3b. Target selector user interaction: switching dropdown from tot to v8', + async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page.navigate` }); + + // Wait for page ready + await client.pollEvaluate( + 'Boolean(document.getElementById("target-selector"))', + (/** @type {any} */ v) => Boolean(v), + sessionId, + ); + + // Change select element value and dispatch change event + await client.evaluate( + ` + (function() { + const select = document.getElementById('target-selector'); + select.value = 'v8'; + select.dispatchEvent(new Event('change', { bubbles: true })); + })() + `, + sessionId, + ); + + // Assert hash changed to v8 + const newHash = await client.pollEvaluate( + 'window.location.hash', + (/** @type {any} */ val) => val.startsWith('#/v8'), + sessionId, + ); + + assert.ok( + newHash.startsWith('#/v8'), + `Expected hash to start with "#/v8", got "${newHash}"`, + ); + }, + ); + + await t.test('4. Search keyboard shortcut (/)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page` }); + + // Ensure page is ready + await client.pollEvaluate( + 'Boolean(document.getElementById("search"))', + (/** @type {any} */ v) => Boolean(v), + sessionId, + ); + await client.pollEvaluate( + 'window.app && window.app._search && window.app._search._items.length > 0', + (/** @type {any} */ v) => Boolean(v), + sessionId, + ); + + // Press '/' via Input.dispatchKeyEvent + await page.Input.dispatchKeyEvent({ + type: 'rawKeyDown', + key: '/', + code: 'Slash', + windowsVirtualKeyCode: 191, + }); + await page.Input.dispatchKeyEvent({ + type: 'keyUp', + key: '/', + code: 'Slash', + windowsVirtualKeyCode: 191, + }); + + const isFocused = await client.pollEvaluate( + 'document.activeElement === document.getElementById("search")', + (/** @type {any} */ val) => val === true, + sessionId, + ); + + assert.strictEqual(isFocused, true, 'Expected search input to be focused after pressing "/"'); + }); + + await t.test('5. Table of contents badges and backtick code rendering (#/Page)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page` }); + + // Wait for domain content to render + await client.pollEvaluate( + 'Boolean(document.querySelector(".domain-toc"))', + (/** @type {any} */ arr) => Boolean(arr), + sessionId, + ); + + // Verify TOC items contain badges + const methodBadgeText = await client.evaluate( + 'document.querySelector(".entity-icon-method") ? document.querySelector(".entity-icon-method").textContent : null', + sessionId, + ); + const eventBadgeText = await client.evaluate( + 'document.querySelector(".entity-icon-event") ? document.querySelector(".entity-icon-event").textContent : null', + sessionId, + ); + const typeBadgeText = await client.evaluate( + 'document.querySelector(".entity-icon-type") ? document.querySelector(".entity-icon-type").textContent : null', + sessionId, + ); + + assert.strictEqual(methodBadgeText, 'Methods'); + assert.strictEqual(eventBadgeText, 'Events'); + assert.strictEqual(typeBadgeText, 'Types'); + + // Verify inline code tags were parsed and rendered from backticks in descriptions + const hasCodeTags = await client.pollEvaluate( + 'document.querySelectorAll(".parameter-description code").length > 0', + (/** @type {any} */ val) => val === true, + sessionId, + ); + assert.strictEqual( + hasCodeTags, + true, + 'Expected markdown backticks to be rendered as tags', + ); + }); + + await t.test('6. Type cross-references (#/DOM.NodeId)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/DOM.NodeId` }); + + // Wait for references list to render + const refCount = await client.pollEvaluate( + 'document.querySelectorAll(".references-list li").length', + (/** @type {any} */ val) => typeof val === 'number' && val > 0, + sessionId, + ); + + assert.ok( + refCount > 0, + `Expected DOM.NodeId to have back-references, got count: ${refCount}`, + ); + }); + + await t.test('7. Mobile responsive drawer (#drawer-toggle & backdrop)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page` }); + + await client.pollEvaluate( + 'Boolean(document.getElementById("drawer-toggle"))', + (/** @type {any} */ v) => Boolean(v), + sessionId, + ); + + // Click drawer toggle + await client.evaluate('document.getElementById("drawer-toggle").click()', sessionId); + const drawerOpen = await client.pollEvaluate( + 'document.body.classList.contains("drawer-open")', + (/** @type {any} */ val) => val === true, + sessionId, + ); + assert.strictEqual( + drawerOpen, + true, + 'Expected body to have "drawer-open" class after toggle click', + ); + + // Click backdrop to close + await client.evaluate('document.getElementById("drawer-backdrop").click()', sessionId); + const drawerClosed = await client.pollEvaluate( + '!document.body.classList.contains("drawer-open")', + (/** @type {any} */ val) => val === true, + sessionId, + ); + assert.strictEqual( + drawerClosed, + true, + 'Expected body to not have "drawer-open" class after backdrop click', + ); + }); + + await t.test('8. Wildcard 404 redirection (/1-3/Page/#method-navigate)', async () => { + await page.Page.navigate({ url: `${baseUrl}/1-3/Page/#method-navigate` }); + + const hash = await client.pollEvaluate( + 'window.location.hash', + (/** @type {any} */ val) => val.includes('Page.navigate'), + sessionId, + ); + + assert.ok( + hash.includes('Page.navigate'), + `Expected hash after 404 fallback to contain Page.navigate, got "${hash}"`, + ); + }); + + await t.test('9. Root landing page rendering and rich content (#/)', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/` }); + + const hasLandingContent = await client.pollEvaluate( + 'Boolean(document.querySelector(".landing-hero") || document.querySelector(".box-content"))', + (/** @type {any} */ val) => val === true, + sessionId, + ); + const title = await client.evaluate('document.title', sessionId); + + assert.strictEqual( + hasLandingContent, + true, + 'Expected landing content to be rendered at root hash route', + ); + assert.strictEqual( + title, + 'DevTools Protocol Viewer', + `Expected root page title, got "${title}"`, + ); + }); + + await t.test('10. Headings have scroll-margin-top clearance from fixed header', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page` }); + + const h4ScrollMarginTop = await client.pollEvaluate( + 'window.getComputedStyle(document.querySelector("h4")).scrollMarginTop', + (/** @type {any} */ val) => Boolean(val && val !== '0px'), + sessionId, + ); + + // calc(var(--header-height) + 16px) -> 50px + 16px = 66px + assert.strictEqual( + h4ScrollMarginTop, + '66px', + `Expected h4 scroll-margin-top to be 66px, got "${h4ScrollMarginTop}"`, + ); + }); + + await t.test('11. HTTP Endpoints deep linking (#/endpoints) and sidebar link', async () => { + await page.Page.navigate({ url: `${baseUrl}/#/Page` }); + + const hasSidebarLink = await client.pollEvaluate( + 'Boolean(document.querySelector(".domain-link.sidebar-meta-link[data-domain=\'endpoints\']"))', + (/** @type {any} */ val) => Boolean(val), + sessionId, + ); + assert.strictEqual(hasSidebarLink, true, 'Expected HTTP Endpoints link in sidebar'); + + await page.Page.navigate({ url: `${baseUrl}/#/endpoints` }); + + const hasEndpointsHeading = await client.pollEvaluate( + 'Boolean(document.getElementById("endpoints"))', + (/** @type {any} */ val) => Boolean(val), + sessionId, + ); + assert.strictEqual(hasEndpointsHeading, true, 'Expected #endpoints heading in DOM'); + + const isEndpointsActive = await client.pollEvaluate( + 'document.querySelector(".domain-link.sidebar-meta-link[data-domain=\'endpoints\']")?.classList.contains("active-link")', + (/** @type {any} */ val) => Boolean(val), + sessionId, + ); + assert.strictEqual(isEndpointsActive, true, 'Expected HTTP Endpoints link to be active'); + }); + } finally { + if (targetId && browserApi) { + try { + await browserApi.Target.closeTarget({ targetId }); + } catch {} + } + if (browserWs) { + try { + browserWs.close(); + } catch {} + } + chromeProcess.kill('SIGKILL'); + server.close(); + try { + fs.rmSync(tmpUserDataDir, { recursive: true, force: true }); + } catch {} + } +}); diff --git a/test/primitive_tests.sh b/test/primitive_tests.sh deleted file mode 100755 index f570c3292e..0000000000 --- a/test/primitive_tests.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -set -euxo pipefail - -local_script_path="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -build_dp_path=$local_script_path/../devtools-protocol - -# v lame assertions -cat $build_dp_path/index.html | grep DOMSnapshot -cat $build_dp_path/tot/Page/index.html | grep --no-messages navigateToHistoryEntry - -stat $build_dp_path/search_index/v8.json -stat $build_dp_path/search_index/tot.json - -echo "assertions passed ✅" diff --git a/test/protocol-model.test.js b/test/protocol-model.test.js new file mode 100644 index 0000000000..048206589f --- /dev/null +++ b/test/protocol-model.test.js @@ -0,0 +1,411 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { + normalizeProtocol, + stabilize, + computeBackReferences, + parseRoute, + formatRoute, + normalizeTarget, +} from '../src/protocol-model.js'; + +/** @import { TestContext } from 'node:test' */ +/** @import { ProtocolDomain, ProtocolType } from '../types/types.d.ts' */ + +test('normalizeTarget', () => { + assert.equal(normalizeTarget('tot'), 'tot'); + assert.equal(normalizeTarget('stable'), 'stable'); + assert.equal(normalizeTarget('1-3'), 'stable'); + assert.equal(normalizeTarget('1-2'), 'stable'); + assert.equal(normalizeTarget('v8'), 'v8'); + assert.equal(normalizeTarget(''), 'tot'); + assert.equal(normalizeTarget(null), 'tot'); + assert.equal(normalizeTarget('unknown'), 'tot'); +}); + +test('normalizeProtocol: sets empty array defaults', () => { + /** @type {any} */ + const raw = { + domains: [ + { + domain: 'Sample', + }, + ], + }; + + const normalized = normalizeProtocol(raw); + + assert.deepEqual(normalized.domains[0]?.commands, []); + assert.deepEqual(normalized.domains[0]?.events, []); + assert.deepEqual(normalized.domains[0]?.types, []); + + // Assert input object was not mutated + assert.equal(raw.domains[0].commands, undefined); + assert.equal(raw.domains[0].events, undefined); + assert.equal(raw.domains[0].types, undefined); +}); + +test('normalizeProtocol: deterministic sorting (experimental, deprecated, optional, alphabetical)', () => { + const raw = { + domains: [ + { + domain: 'Alpha', + commands: [ + { name: 'zetaExp', experimental: true }, + { name: 'beta' }, + { name: 'alpha' }, + { name: 'alphaDep', deprecated: true }, + ], + }, + ], + }; + + const normalized = normalizeProtocol(raw); + const commandNames = (normalized.domains[0]?.commands || []).map( + (/** @type {{name: string}} */ c) => c.name, + ); + + // Standard alphabetical first, then experimental, then deprecated + assert.deepEqual(commandNames, ['alpha', 'beta', 'zetaExp', 'alphaDep']); +}); + +test('normalizeProtocol: does NOT mutate input objects (delete object.experimental)', () => { + const raw = { + domains: [ + { + domain: 'ExperimentalDomain', + experimental: true, + commands: [ + { + name: 'expCommand', + experimental: true, + }, + ], + }, + ], + }; + + const normalized = normalizeProtocol(raw); + + // In normalized output, redundant experimental flag on child is pruned + assert.equal(normalized.domains[0]?.experimental, true); + assert.equal(normalized.domains[0]?.commands[0]?.experimental, undefined); + + // Input object must retain experimental: true + assert.equal(raw.domains[0].commands[0].experimental, true); +}); + +test('stabilize: deep immutability and filtering experimental entities', () => { + const original = { + domain: 'TestDomain', + experimental: false, + commands: [ + { name: 'stableCommand', experimental: false }, + { name: 'expCommand', experimental: true }, + ], + types: [ + { + id: 'StableType', + properties: [ + { name: 'propA', experimental: false }, + { name: 'propB', experimental: true }, + ], + }, + { + id: 'ExpType', + experimental: true, + }, + ], + }; + + const stable = stabilize(original); + + // Commands filtered + assert.equal(stable.commands.length, 1); + assert.equal(stable.commands[0]?.name, 'stableCommand'); + + // Types filtered + assert.equal(stable.types.length, 1); + assert.equal(stable.types[0]?.id, 'StableType'); + assert.equal(stable.types[0]?.properties?.length, 1); + assert.equal(stable.types[0]?.properties?.[0]?.name, 'propA'); + + // Deep clone immutability: mutating stable must not affect original + stable.commands[0].name = 'MUTATED'; + stable.commands.push(/** @type {any} */ ({ name: 'NEW' })); + assert.equal(original.commands[0]?.name, 'stableCommand'); + assert.equal(original.commands.length, 2); +}); + +test('computeBackReferences: computes reverse references with deduplication and array item $ref unpacking', () => { + /** @type {ProtocolDomain[]} */ + const domains = [ + { + domain: 'DOM', + types: [ + { id: 'NodeId', type: 'integer' }, + { id: 'Node', type: 'object', properties: [{ name: 'nodeId', $ref: 'NodeId' }] }, + { + id: 'NodeList', + type: 'array', + items: { $ref: 'Node' }, + }, + ], + commands: [ + { + name: 'describeNode', + parameters: [{ name: 'nodeId', $ref: 'NodeId' }], + returns: [{ name: 'node', $ref: 'Node' }], + }, + { + name: 'pushNodesByBackendIdsToFrontend', + parameters: [{ name: 'backendNodeIds', $ref: 'NodeId' }], + returns: [{ name: 'nodeIds', $ref: 'NodeId' }], + }, + ], + events: [ + { + name: 'setChildNodes', + parameters: [ + { name: 'parentId', $ref: 'NodeId' }, + { + name: 'nodes', + type: 'array', + items: { $ref: 'Node' }, + }, + ], + }, + ], + }, + ]; + + computeBackReferences(domains); + + const nodeIdType = domains[0]?.types?.find((t) => t.id === 'NodeId'); + const nodeType = domains[0]?.types?.find((t) => t.id === 'Node'); + + // NodeId should be referenced by: + // - DOM.describeNode (command) + // - DOM.pushNodesByBackendIdsToFrontend (command - deduplicated across params and returns!) + // - DOM.setChildNodes (event) + // - DOM.Node (type) + assert.ok(nodeIdType?.referencedBy); + assert.deepEqual( + nodeIdType?.referencedBy, + [ + { type: 'command', name: 'DOM.describeNode' }, + { type: 'type', name: 'DOM.Node' }, + { type: 'command', name: 'DOM.pushNodesByBackendIdsToFrontend' }, + { type: 'event', name: 'DOM.setChildNodes' }, + ].sort((a, b) => a.name.localeCompare(b.name)), + ); + + // Node should be referenced by: + // - DOM.describeNode (command return) + // - DOM.NodeList (type items $ref) + // - DOM.setChildNodes (event array items $ref) + assert.ok(nodeType?.referencedBy); + assert.deepEqual( + nodeType?.referencedBy, + [ + { type: 'command', name: 'DOM.describeNode' }, + { type: 'type', name: 'DOM.NodeList' }, + { type: 'event', name: 'DOM.setChildNodes' }, + ].sort((a, b) => a.name.localeCompare(b.name)), + ); +}); + +test('parseRoute: dynamic native subtests for all route formats', async (/** @type {TestContext} */ t) => { + const cases = [ + // Standard modern hash routes + { + input: '#/Page.navigate', + expected: { target: 'tot', domain: 'Page', member: 'navigate' }, + }, + { + input: '#/Page', + expected: { target: 'tot', domain: 'Page', member: null }, + }, + { + input: '#/v8/Runtime.evaluate', + expected: { target: 'v8', domain: 'Runtime', member: 'evaluate' }, + }, + { + input: '#/stable/Network.getCookies', + expected: { target: 'stable', domain: 'Network', member: 'getCookies' }, + }, + + // Composite legacy URLs + { + input: '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/tot/Page/#method-navigate', + expected: { target: 'tot', domain: 'Page', member: 'navigate' }, + }, + { + input: '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/1-3/Page/#method-navigate', + expected: { target: 'stable', domain: 'Page', member: 'navigate' }, + }, + { + input: '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/1-2/Network/', + expected: { target: 'stable', domain: 'Network', member: null }, + }, + + // Isolated legacy anchors + { + input: '#method-navigate', + expected: { target: 'tot', domain: null, member: 'navigate' }, + }, + { + input: '#type-Node', + expected: { target: 'tot', domain: null, member: 'Node' }, + }, + { + input: '#event-requestWillBeSent', + expected: { target: 'tot', domain: null, member: 'requestWillBeSent' }, + }, + + // Query format fallbacks + { + input: '?Page.navigate', + expected: { target: 'tot', domain: 'Page', member: 'navigate' }, + }, + { + input: '?Network', + expected: { target: 'tot', domain: 'Network', member: null }, + }, + + // Deep links and landing anchors + { + input: '#/endpoints', + expected: { target: 'tot', domain: 'endpoints', member: null }, + }, + { + input: '#endpoints', + expected: { target: 'tot', domain: 'endpoints', member: null }, + }, + { + input: '#/faq', + expected: { target: 'tot', domain: 'faq', member: null }, + }, + { + input: '#faq', + expected: { target: 'tot', domain: 'faq', member: null }, + }, + + // Root and empty routes + { + input: '#/', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '#', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '/', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '/index.html', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '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/tot/index.html', + expected: { target: 'tot', domain: null, member: null }, + }, + + // Base path prefix stripping (/devtools-protocol/ and /debugger-protocol-viewer/) + { + input: '/devtools-protocol/', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '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/devtools-protocol/index.html', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '/devtools-protocol/tot/Page/#method-navigate', + expected: { target: 'tot', domain: 'Page', member: 'navigate' }, + }, + { + input: '/debugger-protocol-viewer/', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '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/debugger-protocol-viewer/index.html', + expected: { target: 'tot', domain: null, member: null }, + }, + { + input: '/debugger-protocol-viewer/tot/Page/#method-navigate', + expected: { target: 'tot', domain: 'Page', member: 'navigate' }, + }, + + // Trailing slashes + { + input: '#/Page/', + expected: { target: 'tot', domain: 'Page', member: null }, + }, + { + input: '#/v8/Runtime/', + expected: { target: 'v8', domain: 'Runtime', member: null }, + }, + { + input: '#/v8', + expected: { target: 'v8', domain: null, member: null }, + }, + { + input: '#/v8/', + expected: { target: 'v8', domain: null, member: null }, + }, + { + input: '#/stable', + expected: { target: 'stable', domain: null, member: null }, + }, + { + input: '#/stable/', + expected: { target: 'stable', domain: null, member: null }, + }, + ]; + + for (const { input, expected } of cases) { + await t.test(`parseRoute("${input}")`, () => { + const result = parseRoute(input); + assert.deepEqual(result, expected); + }); + } +}); + +test('formatRoute: canonical route formatting', () => { + // Tot target formats without prefix + assert.equal( + formatRoute({ target: 'tot', domain: 'Page', member: 'navigate' }), + '#/Page.navigate', + ); + assert.equal(formatRoute({ target: 'tot', domain: 'Page', member: null }), '#/Page'); + assert.equal(formatRoute({ target: 'tot', domain: null, member: null }), '#/'); + + // V8 target formats with v8/ prefix + assert.equal( + formatRoute({ target: 'v8', domain: 'Runtime', member: 'evaluate' }), + '#/v8/Runtime.evaluate', + ); + assert.equal(formatRoute({ target: 'v8', domain: 'Runtime', member: null }), '#/v8/Runtime'); + assert.equal(formatRoute({ target: 'v8', domain: null, member: null }), '#/v8/'); + + // Stable target formats with stable/ prefix + assert.equal( + formatRoute({ target: 'stable', domain: 'Network', member: 'getCookies' }), + '#/stable/Network.getCookies', + ); + assert.equal( + formatRoute({ target: 'stable', domain: 'Network', member: null }), + '#/stable/Network', + ); + assert.equal(formatRoute({ target: 'stable', domain: null, member: null }), '#/stable/'); + + // Default options + assert.equal(formatRoute(), '#/'); +}); diff --git a/test/stubs.test.js b/test/stubs.test.js new file mode 100644 index 0000000000..eeed08ebfa --- /dev/null +++ b/test/stubs.test.js @@ -0,0 +1,119 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import os from 'node:os'; +import { execFileSync } from 'node:child_process'; +import { generateStubs, generateDomainStub } from '../scripts/generate-stubs.js'; + +test('generateDomainStub: unit testing HTML generator', async (t) => { + await t.test('generates redirect script and noscript list', () => { + const mockDomain = { + domain: 'TestDomain', + commands: [{ name: 'testMethod' }], + events: [{ name: 'testEvent' }], + types: [{ id: 'TestType' }], + }; + + const html = generateDomainStub(mockDomain); + + assert.match(html, /Redirecting to DevTools Protocol: TestDomain\.\.\.<\/title>/); + assert.match(html, /window\.location\.replace\('\.\.\/\.\.\/#\/TestDomain' \+ member\);/); + assert.match( + html, + /<li><a href="\.\.\/\.\.\/#\/TestDomain\.testMethod">TestDomain\.testMethod<\/a><\/li>/, + ); + assert.match( + html, + /<li><a href="\.\.\/\.\.\/#\/TestDomain\.testEvent">TestDomain\.testEvent<\/a><\/li>/, + ); + assert.match( + html, + /<li><a href="\.\.\/\.\.\/#\/TestDomain\.TestType">TestDomain\.TestType<\/a><\/li>/, + ); + }); +}); + +test('generateStubs: end-to-end stub generation in temporary directory', async (t) => { + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cdp-stubs-')); + + try { + const { domainCount, outputDir } = generateStubs({ + outputDir: tmpDir, + }); + + assert.equal(outputDir, tmpDir); + assert.ok(domainCount > 0, 'Should generate stubs for protocol domains'); + + await t.test('Page domain stub exists and has expected redirect & member link', () => { + const pageStubPath = path.join(tmpDir, 'tot', 'Page', 'index.html'); + assert.ok(fs.existsSync(pageStubPath), 'tot/Page/index.html must exist'); + + const content = fs.readFileSync(pageStubPath, 'utf8'); + assert.match(content, /window\.location\.replace\('\.\.\/\.\.\/#\/Page' \+ member\)/); + assert.match( + content, + /Page\.navigateToHistoryEntry/, + 'Must contain navigateToHistoryEntry noscript link', + ); + }); + + await t.test('.nojekyll file exists in output directory', () => { + const nojekyllPath = path.join(tmpDir, '.nojekyll'); + assert.ok(fs.existsSync(nojekyllPath), '.nojekyll must exist in output'); + }); + + await t.test('404.html exists in output and contains redirect logic', () => { + const notFoundPath = path.join(tmpDir, '404.html'); + assert.ok(fs.existsSync(notFoundPath), '404.html must exist in output'); + + const content = fs.readFileSync(notFoundPath, 'utf8'); + assert.match(content, /window\.location\.replace/); + assert.match(content, /\/devtools-protocol/); + assert.match(content, /#(?:method|type|event)-/); + assert.match(content, /1-3/); + assert.match(content, /stable/); + assert.match(content, /v8/); + assert.match(content, /tot/); + }); + + await t.test('Static assets from src/ are copied into output directory', () => { + const expectedAssets = [ + 'index.html', + 'main.js', + 'protocol-model.js', + 'protocol_renderer.js', + 'search.js', + 'fuzzy_search.js', + 'style.css', + 'favicons', + 'images', + ]; + + for (const asset of expectedAssets) { + const assetPath = path.join(tmpDir, asset); + assert.ok(fs.existsSync(assetPath), `Asset ${asset} must be copied to output`); + } + }); + + await t.test('CLI script execution succeeds', () => { + const cliTmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cdp-cli-')); + try { + const scriptPath = path.resolve('scripts/generate-stubs.js'); + const output = execFileSync( + process.execPath, + [scriptPath, path.resolve('data/tot.json'), cliTmpDir], + { encoding: 'utf8' }, + ); + + assert.match(output, /Generated 53 domain stubs/); + assert.ok(fs.existsSync(path.join(cliTmpDir, 'tot', 'Page', 'index.html'))); + assert.ok(fs.existsSync(path.join(cliTmpDir, '.nojekyll'))); + } finally { + fs.rmSync(cliTmpDir, { recursive: true, force: true }); + } + }); + } finally { + fs.rmSync(tmpDir, { recursive: true, force: true }); + } +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..ef0ce7878b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "nodenext", + "lib": ["esnext", "dom", "dom.iterable"], + "types": ["node"], + + /* Native TS Execution Flags */ + "erasableSyntaxOnly": true, + "verbatimModuleSyntax": true, + "allowImportingTsExtensions": true, + "rewriteRelativeImportExtensions": true, + + /* Type Checking Strategy */ + "noEmit": true, + "allowJs": true, + "checkJs": true, + "skipLibCheck": true, + "strict": true + }, + "exclude": ["node_modules", "devtools-protocol"] +} diff --git a/types/bling.d.ts b/types/bling.d.ts new file mode 100644 index 0000000000..b39c2001e4 --- /dev/null +++ b/types/bling.d.ts @@ -0,0 +1,60 @@ +type _Trim<S extends string> = S extends ` ${infer R}` + ? _Trim<R> + : S extends `${infer R} ` + ? _Trim<R> + : S; + +// Peel combinators; only the rightmost simple selector matters for the type. +type _LastSegment<S extends string> = S extends `${string} ${infer R}` + ? _LastSegment<_Trim<R>> + : S extends `${string}>${infer R}` + ? _LastSegment<_Trim<R>> + : S extends `${string}+${infer R}` + ? _LastSegment<_Trim<R>> + : S extends `${string}~${infer R}` + ? _LastSegment<_Trim<R>> + : S; + +// Strip [attr] / .class / #id / :pseudo suffixes to leave just the tag name. +type _StripFilters<S extends string> = S extends `${infer H}[${string}]${infer T}` + ? _StripFilters<`${H}${T}`> + : S extends `${infer H}.${string}` + ? _StripFilters<H> + : S extends `${infer H}#${string}` + ? _StripFilters<H> + : S extends `${infer H}:${string}` + ? _StripFilters<H> + : S; + +type _ResolveTag<S extends string> = S extends '' + ? HTMLElement + : S extends '*' + ? Element + : S extends keyof HTMLElementTagNameMap + ? HTMLElementTagNameMap[S] + : S extends keyof SVGElementTagNameMap + ? SVGElementTagNameMap[S] + : HTMLElement; + +// Simplified version of the `typed-query-selector` npm package +export type ParseSelector<S extends string> = + // Non-literal string input: give up and return the widest safe type. + string extends S + ? Element + : S extends `${infer A},${infer B}` + ? ParseSelector<_Trim<A>> | ParseSelector<_Trim<B>> + : _ResolveTag<_StripFilters<_LastSegment<_Trim<S>>>>; + +export function $<T extends string>(query: T, context?: ParentNode): ParseSelector<T>; +export function $$<T extends string>(query: T, context?: ParentNode): ParseSelector<T>[]; + +declare global { + interface Window { + $<T extends string>(query: T, context?: ParentNode): ParseSelector<T>; + $$<T extends string>(query: T, context?: ParentNode): ParseSelector<T>[]; + } + interface ParentNode { + $<T extends string>(query: T): ParseSelector<T>; + $$<T extends string>(query: T): ParseSelector<T>[]; + } +} diff --git a/types/global.d.ts b/types/global.d.ts new file mode 100644 index 0000000000..21d01297ad --- /dev/null +++ b/types/global.d.ts @@ -0,0 +1,11 @@ +declare global { + interface Window { + app?: import('../src/main.js').App; + } + + interface Element { + scrollIntoViewIfNeeded?(centerIfNeeded?: boolean): void; + } +} + +export {}; diff --git a/types/protocol-schema.d.ts b/types/protocol-schema.d.ts new file mode 100644 index 0000000000..aa61bd08f8 --- /dev/null +++ b/types/protocol-schema.d.ts @@ -0,0 +1,100 @@ +/** Definition for protocol.json types. Vendored from https://github.com/ChromeDevTools/devtools-protocol/blob/master/scripts/protocol-schema.d.ts */ +export interface IProtocol { + version: Protocol.Version; + domains: Protocol.Domain[]; +} + +export namespace Protocol { + export interface Version { + major: string; + minor: string; + } + + export interface ExtraInformation { + deprecated?: boolean; + experimental?: boolean; + } + + export interface Domain extends ExtraInformation { + /** Name of domain */ + domain: string; + /** Description of the domain */ + description?: string; + /** Dependencies on other domains */ + dependencies?: string[]; + /** Types used by the domain. */ + types?: DomainType[]; + /** Commands accepted by the domain */ + commands?: Command[]; + /** Events fired by domain */ + events?: Event[]; + } + + export interface Command extends Event { + returns?: PropertyType[]; + async?: boolean; + redirect?: string; + } + + export interface Event extends ExtraInformation { + name: string; + parameters?: PropertyType[]; + /** Description of the event */ + description?: string; + } + + export interface ArrayType { + type: 'array'; + /** Maps to a typed array e.g string[] */ + items: RefType | PrimitiveType | StringType | AnyType | ObjectType; + /** Cardinality of length of array type */ + minItems?: number; + maxItems?: number; + } + + export interface ObjectType { + type: 'object'; + /** Properties of the type. Maps to a typed object */ + properties?: PropertyType[]; + } + + export interface StringType { + type: 'string'; + /** Possible values of a string. */ + enum?: string[]; + } + + export interface PrimitiveType { + type: 'number' | 'integer' | 'boolean'; + } + + export interface AnyType { + type: 'any'; + } + + export interface RefType { + /** Reference to a domain defined type */ + $ref: string; + } + + export interface PropertyBaseType { + /** Name of param */ + name: string; + /** Is the property optional ? */ + optional?: boolean; + /** Description of the type */ + description?: string; + } + + type DomainType = { + /** Name of property */ + id: string; + /** Description of the type */ + description?: string; + } & (StringType | ObjectType | ArrayType | PrimitiveType) & + ExtraInformation; + + type ProtocolType = StringType | ObjectType | ArrayType | PrimitiveType | RefType | AnyType; + + type PropertyType = PropertyBaseType & ProtocolType; +} diff --git a/types/types.d.ts b/types/types.d.ts new file mode 100644 index 0000000000..66b74744b6 --- /dev/null +++ b/types/types.d.ts @@ -0,0 +1,74 @@ +export type { Protocol } from 'devtools-protocol'; +import type { IProtocol, Protocol as ProtocolSchema } from './protocol-schema.d.ts'; + +export type { IProtocol } from './protocol-schema.d.ts'; + +export type ProtocolCommand = ProtocolSchema.Command; +export type ProtocolEvent = ProtocolSchema.Event; + +export interface ProtocolBackReference { + type: 'command' | 'event' | 'type'; + name: string; +} + +/** Flattened protocol parameter / property for viewer traversal */ +export interface ProtocolParameter { + name?: string; + type?: string; + $ref?: string; + description?: string; + optional?: boolean; + experimental?: boolean; + deprecated?: boolean; + items?: ProtocolParameter; + enum?: string[]; + properties?: ProtocolParameter[]; +} + +/** Flattened domain type representation including runtime back-references */ +export interface ProtocolType { + id: string; + type?: string; + description?: string; + experimental?: boolean; + deprecated?: boolean; + properties?: ProtocolParameter[]; + enum?: string[]; + items?: ProtocolParameter; + referencedBy?: ProtocolBackReference[]; +} + +export interface ProtocolDomain { + domain: string; + description?: string; + experimental?: boolean; + deprecated?: boolean; + dependencies?: string[]; + types?: ProtocolType[]; + commands?: ProtocolCommand[]; + events?: ProtocolEvent[]; +} + +export interface NormalizedProtocolDomain extends ProtocolDomain { + types: ProtocolType[]; + commands: ProtocolCommand[]; + events: ProtocolEvent[]; +} + +export interface ProtocolRoot { + version?: ProtocolSchema.Version; + domains: ProtocolDomain[]; +} + +export interface NormalizedProtocolRoot { + version?: ProtocolSchema.Version; + domains: NormalizedProtocolDomain[]; +} + +export type TargetKind = 'tot' | 'stable' | 'v8'; + +export interface RouteInfo { + target: TargetKind; + domain: string | null; + member: string | null; +}