"""Storage and cookies namespaces: ``b.storage.*``, ``b.cookies.*``.""" from __future__ import annotations from browser_cli.sdk.base import Namespace, sdk_command class StorageNS(Namespace): """Read and write localStorage / sessionStorage.""" @sdk_command("storage.get", lambda self, key=None, *, type="local", tab_id=None: { "key": key, "type": type, "tabId": tab_id, }) def get( self, key: str | None = None, *, type: str = "local", tab_id: int | None = None, ) -> str | dict | None: """Get a localStorage/sessionStorage entry (or all entries if key omitted).""" @sdk_command("storage.set", lambda self, key, value, *, type="local", tab_id=None: { "key": key, "value": value, "type": type, "tabId": tab_id, }) def set( self, key: str, value: str, *, type: str = "local", tab_id: int | None = None, ) -> None: """Set a localStorage/sessionStorage entry.""" class CookiesNS(Namespace): """List, get, and set cookies.""" @sdk_command("cookies.list", lambda self, *, url=None, domain=None, name=None: { "url": url, "domain": domain, "name": name, }, default=[]) def list( self, *, url: str | None = None, domain: str | None = None, name: str | None = None, ) -> list[dict]: """List cookies, optionally filtered by url, domain, or name.""" @sdk_command("cookies.get", lambda self, url, name: {"url": url, "name": name}) def get(self, url: str, name: str) -> dict | None: """Get a single cookie by url and name.""" @sdk_command("cookies.set", lambda self, url, name, value, *, domain=None, path=None, secure=None, http_only=None, expiration_date=None, same_site=None: { "url": url, "name": name, "value": value, "domain": domain, "path": path, "secure": secure, "httpOnly": http_only, "expirationDate": expiration_date, "sameSite": same_site, }) def set( self, url: str, name: str, value: str, *, domain: str | None = None, path: str | None = None, secure: bool | None = None, http_only: bool | None = None, expiration_date: float | None = None, same_site: str | None = None, ) -> dict: """Set a cookie. Returns the created cookie dict."""