JSPM

browser-extension-capabilities

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 31
  • Score
    100M100P100Q73707F
  • License MIT

Zero-dependency library for analyzing browser extension capabilities from manifest files

Package Exports

  • browser-extension-capabilities

Readme

browser-extension-capabilities Version Downloads workflow

A lightweight, zero-dependency TypeScript library for analyzing browser extension manifests and extracting their capabilities. Useful for extension development tools, analysis tools, and browser extension marketplaces.

What are Browser Extension Capabilities?

Browser extension capabilities represent the functional interfaces and execution environments that an extension can utilize. These are the different ways an extension can interact with the browser, web pages, and users. Each capability corresponds to specific manifest fields and defines where and how the extension's code can run.

For example:

  • Background Capability: Allows the extension to run persistent code in the background
  • Content Scripts Capability: Enables the extension to interact with web page content
  • Popup Capability: Provides a user interface through browser toolbar buttons
  • Options Capability: Offers configuration pages for user settings

Features

  • Comprehensive Detection: Detects all major browser extension capabilities and interfaces
  • User-Friendly Output: Returns descriptive capability objects with explanations
  • Cross-Browser Support: Works with Chrome, Firefox, Edge, and other Chromium-based browsers

Installation

npm install browser-extension-capabilities

Usage

import { getExtensionCapabilities } from 'browser-extension-capabilities'

// Analyze an extension directory
const capabilities = getExtensionCapabilities('./path/to/extension')

// Returns array of capability objects
console.log(capabilities)
// [
//   {
//     capability: "background",
//     description: "Background service worker or page for persistent functionality"
//   },
//   {
//     capability: "content_scripts",
//     description: "Content scripts that run on web pages to interact with page content"
//   },
//   {
//     capability: "popup",
//     description: "Browser action popup or toolbar button functionality"
//   }
// ]

Supported Capabilities

Capability Description Manifest Fields
background Background service worker or page for persistent functionality background.page, background.scripts, background.service_worker
content_scripts Content scripts that run on web pages to interact with page content content_scripts
popup Browser action popup or toolbar button functionality action.default_popup
sidebar Side panel interface for additional extension features side_panel.default_path, sidebar_action.default_panel
devtools Developer tools panel for debugging and development devtools_page
options Extension options page for user configuration options_ui.page
newtab Custom new tab page replacement chrome_url_overrides.newtab
bookmarks Custom bookmarks page replacement chrome_url_overrides.bookmarks
history Custom history page replacement chrome_url_overrides.history
sandbox Sandboxed pages with restricted permissions for security sandbox.pages
web_resources Web accessible resources for content script communication web_accessible_resources

API Reference

getExtensionCapabilities(dataDir: string): ExtensionCapability[]

Analyzes a browser extension manifest and returns an array of capability objects.

Parameters

  • dataDir (string): Directory path containing the extension's manifest.json file

Returns

  • ExtensionCapability[]: Array of capability objects with capability and description properties

Example

import { getExtensionCapabilities } from 'browser-extension-capabilities'

try {
  const capabilities = getExtensionCapabilities('./my-extension')

  capabilities.forEach(({ capability, description }) => {
    console.log(`${capability}: ${description}`)
  })
} catch (error) {
  console.error('Failed to analyze extension:', error)
}

Types

interface ExtensionCapability {
  capability: string
  description: string
}

Error Handling

The library gracefully handles various error scenarios:

  • Missing manifest file: Returns [{ capability: "manifest", description: "Basic extension manifest configuration" }]
  • Invalid JSON: Returns fallback capability with error logging
  • Malformed manifest: Attempts to extract available capabilities and falls back gracefully

Use Cases

  • Extension Analysis Tools: Analyze extension capabilities and permissions
  • Marketplace Validation: Verify extension capabilities for store listings
  • Development Tools: IDE plugins and development utilities
  • Security Analysis: Understand extension execution environments
  • Documentation Generation: Auto-generate extension documentation

Browser Support

  • ✅ Chrome/Chromium (Manifest V2 & V3)
  • ✅ Firefox (WebExtensions)
  • ✅ Edge (Chromium-based)
  • ✅ Opera (Chromium-based)
  • ✅ Safari (WebExtensions)

License

MIT (c) Cezar Augusto