Skip to main content

StoragePort

StoragePort provides a unified interface to all browser storage areas - local, sync, session, and managed - with change notifications.

Context

  • Availability: Background
  • Source: packages/ports/src/background/storage/storage.port.ts

Key Methods

  • get(areaName: WebExtStorageAreaName, keys: string | string[] | { [key: string]: any } | null): Promise<{ [key: string]: any }> - Read values from a storage area.
  • set(areaName: WebExtStorageAreaName, items: { [key: string]: any }): Promise<void> - Write values to a storage area.
  • remove(areaName: WebExtStorageAreaName, keys: string | string[]): Promise<void> - Delete specific keys from a storage area.
  • clear(areaName: WebExtStorageAreaName): Promise<void> - Wipe an entire storage area.
  • onChangedAddListener(listener: (changes: WebExtStorageChangesMap, areaName: WebExtStorageAreaName) => void): void - Subscribe to storage change events.
  • onChangedRemoveListener(listener: (changes: WebExtStorageChangesMap, areaName: WebExtStorageAreaName) => void): void - Unsubscribe from storage change events.

Usage

import { StoragePort } from '@hexajs-dev/ports';
import { Injectable, InjectableContext } from '@hexajs-dev/common';

@Injectable({ context: InjectableContext.Background })
export class UserPreferencesService {
constructor(private readonly storage: StoragePort) {}

async getPreferences() {
return this.storage.get('sync', ['theme', 'language', 'autoSync']);
}

async savePreferences(prefs: Record<string, unknown>) {
await this.storage.set('sync', prefs);
}
}

API Reference Appendix

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