CookiesPort
CookiesPort provides full cookie lifecycle management - reading, writing, removing, and reacting to changes - across all cookie stores.
Context
- Availability: Background
- Source:
packages/ports/src/background/cookies/cookies.port.ts
Key Methods
get(details: WebExtCookiesGetDetails): Promise<WebExtCookie | null>- Retrieve a single cookie.getAll(details: WebExtCookiesGetAllDetails): Promise<WebExtCookie[]>- Retrieve all matching cookies.set(details: WebExtCookiesSetDetails): Promise<WebExtCookie | null>- Create or overwrite a cookie.remove(details: WebExtCookiesRemoveDetails): Promise<WebExtCookiesRemoveCallbackDetails>- Delete a cookie.removeAll(details: WebExtCookiesGetAllDetails): Promise<WebExtCookiesRemoveCallbackDetails[]>- Delete all matching cookies.getAllCookieStores(): Promise<WebExtCookieStore[]>- List all available cookie stores.findStoreIdByTabId(tabId: number): Promise<string | undefined>- Resolve the cookie store for a tab.onChangedAddListener(listener: CookiesChangeListener): void- Subscribe to cookie change events.onChangedRemoveListener(listener: CookiesChangeListener): void- Unsubscribe from cookie change events.
Usage
import { CookiesPort } from '@hexajs-dev/ports';
import { Injectable, InjectableContext } from '@hexajs-dev/common';
@Injectable({ context: InjectableContext.Background })
export class SessionCookieService {
constructor(private readonly cookies: CookiesPort) {}
async getAuthToken(tabId: number): Promise<string | null> {
const storeId = await this.cookies.findStoreIdByTabId(tabId);
const cookie = await this.cookies.get({ url: 'https://api.example.com', name: 'auth_token', storeId });
return cookie?.value ?? null;
}
async clearSession(url: string) {
await this.cookies.removeAll({ url });
}
}
API Reference Appendix
Below is the exhaustive, auto-generated technical reference for all types, interfaces, and signatures associated with this API.
Usage
import { CookiesPort } from '@hexajs-dev/ports';
import { Injectable, InjectableContext } from '@hexajs-dev/common';
@Injectable({ context: InjectableContext.Background })
export class ExampleService {
constructor(private readonly port: CookiesPort) {}
}
Types & Interfaces
WebExtCookie
Represents a browser cookie.
interface WebExtCookie {
name: string;
value: string;
domain: string;
path: string;
expirationDate?: number;
hostOnly: boolean;
httpOnly: boolean;
secure: boolean;
session: boolean;
storeId: string;
sameSite?: 'no_restriction' | 'lax' | 'strict' | 'unspecified';
firstPartyDomain?: string;
partitionKey?: WebExtCookiePartitionKey;
}
WebExtCookieStore
Represents a cookie store.
interface WebExtCookieStore {
id: string;
tabIds: number[];
incognito?: boolean;
}
WebExtCookiesGetDetails
Parameters for getting a cookie.
interface WebExtCookiesGetDetails {
url: string;
name: string;
storeId?: string;
firstPartyDomain?: string;
partitionKey?: WebExtCookiePartitionKey;
}
WebExtCookiesSetDetails
Parameters for setting a cookie.
interface WebExtCookiesSetDetails {
url: string;
name?: string;
value?: string;
domain?: string;
path?: string;
secure?: boolean;
httpOnly?: boolean;
expirationDate?: number;
storeId?: string;
sameSite?: 'no_restriction' | 'lax' | 'strict' | 'unspecified';
firstPartyDomain?: string;
partitionKey?: WebExtCookiePartitionKey;
}
Notes
- Keep platform branching inside port methods.
- Keep business logic in services/controllers, not in API wrappers.
API Reference Appendix
Classes
CookiesPort
import { CookiesPort } from '@hexajs-dev/ports';
class CookiesPort { ... }
Methods
findStoreIdByTabId()
findStoreIdByTabId(tabId: number): Promise<string | undefined>
get()
get(details: HexaWebCookiesGetDetails): Promise<HexaWebCookie | null>
getAll()
getAll(details: HexaWebCookiesGetAllDetails): Promise<HexaWebCookie[]>
getAllCookieStores()
getAllCookieStores(): Promise<HexaWebCookieStore[]>
onChangedAddListener()
onChangedAddListener(listener: CookiesChangeListener): void
onChangedRemoveListener()
onChangedRemoveListener(listener: CookiesChangeListener): void
remove()
remove(details: HexaWebCookiesRemoveDetails): Promise<HexaWebCookiesRemoveCallbackDetails>
removeAll()
removeAll(details: HexaWebCookiesGetAllDetails): Promise<HexaWebCookiesRemoveCallbackDetails[]>
set()
set(details: HexaWebCookiesSetDetails): Promise<HexaWebCookie | null>