import { webExtApi as api } from '../browser-api'; import { CommandGroup } from '../classes/CommandGroup'; import type { CommandEntry } from '../classes/CommandGroup'; export class ExtensionCommands extends CommandGroup { readonly namespace = "extension"; readonly commands: Record = { "extension.reload": () => { setTimeout(() => api.runtime.reload(), 200); return { reloading: true }; }, "extension.info": () => this.extensionInfo(), "extension.capabilities": () => this.capabilities(), }; private capabilities() { return [ "extension.info", "extension.capabilities", "navigate.open.focus", "navigate.open.background", "tabs.close.tabIds", "tabs.merge_windows.audibleAware", "session.export", "session.import", "jobs.progress", "jobs.cancel", "content-dispatch.bundle", ]; } private extensionInfo() { const manifest = api.runtime.getManifest(); return { id: api.runtime.id, name: manifest.name, version: manifest.version, manifestVersion: manifest.manifest_version, browser: navigator.userAgent, platform: navigator.platform, capabilities: this.capabilities(), }; } }