Skip to main content

ExtensionPort

ExtensionPort exposes extension-level utilities for resolving resource URLs, querying active views, and checking incognito and file-scheme access.

Context

  • Availability: Universal
  • Source: packages/ports/src/general/extension/extension.port.ts

Key Methods

  • getURL(path?: string): string - Resolve a path to a fully-qualified extension resource URL.
  • isAllowedIncognitoAccess(): Promise<boolean> - Check if the extension can run in incognito windows.
  • isAllowedFileSchemeAccess(): Promise<boolean> - Check if the extension can access file:// URLs.
  • getViews(fetchProperties?: { type?: 'tab' | 'popup' | 'background'; windowId?: number }): Window[] - Get active extension view windows.
  • getBackgroundPage(): Window | null - Access the background page window (MV2 only).

Usage

import { ExtensionPort } from '@hexajs-dev/ports';
import { Injectable, HexaContext } from '@hexajs-dev/common';

@Injectable({ context: HexaContext.Background })
export class AssetResolverService {
constructor(private readonly extension: ExtensionPort) {}

getIconUrl(filename: string): string {
return this.extension.getURL(`icons/${filename}`);
}

async canAccessIncognito(): Promise<boolean> {
return this.extension.isAllowedIncognitoAccess();
}
}

API Reference Appendix

Below is the exhaustive, auto-generated technical reference for all types, interfaces, and signatures associated with this API.

Classes

ExtensionPort

import { ExtensionPort } from '@hexajs-dev/ports';
class ExtensionPort { ... }

Methods

getBackgroundPage()

getBackgroundPage(): Window | null

getURL()

getURL(path?: string): string

getViews()

getViews(fetchProperties?: GetViewsFetchProperties): Window[]

isAllowedFileSchemeAccess()

isAllowedFileSchemeAccess(): Promise<boolean>

isAllowedIncognitoAccess()

isAllowedIncognitoAccess(): Promise<boolean>

Supporting Types

GetViewsFetchProperties

interface GetViewsFetchProperties {
type?: 'tab' | 'popup' | 'background';
windowId?: number;
}