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, HexaContext } from '@hexajs-dev/common';

@Injectable({ context: HexaContext.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.

Classes

StoragePort

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

Methods

clear()

clear(areaName: HexaWebStorageAreaName): Promise<void>

get()

get(areaName: HexaWebStorageAreaName, keys: string | string[] | {
[key: string]: any;
} | null): Promise<{
[key: string]: any;
}>

onChangedAddListener()

onChangedAddListener(listener: (changes: HexaWebStorageChangesMap, areaName: HexaWebStorageAreaName) => void): void

onChangedRemoveListener()

onChangedRemoveListener(listener: (changes: HexaWebStorageChangesMap, areaName: HexaWebStorageAreaName) => void): void

remove()

remove(areaName: HexaWebStorageAreaName, keys: string | string[]): Promise<void>

set()

set(areaName: HexaWebStorageAreaName, items: SetItems): Promise<void>

setAccessLevel()

setAccessLevel(options: HexaWebStorageSetAccessLevelOptions): Promise<void>

Supporting Types

SetItems

interface SetItems {
[key: string]: any;
}