// Cookie Store API
// Specification: https://wicg.github.io/cookie-store/
// Repository: https://github.com/WICG/cookie-store
///
interface CookieStore extends EventTarget {
get(name: string): Promise;
get(options: CookieStoreGetOptions): Promise;
getAll(name: string): Promise;
getAll(options: CookieStoreGetOptions): Promise;
set(name: string, value: string): Promise;
set(options: CookieInit): Promise;
delete(name: string): Promise;
delete(options: CookieStoreDeleteOptions): Promise;
onchange: ((this: CookieStore, ev: CookieChangeEvent) => any) | null;
addEventListener(type: K, listener: (this: CookieStore, ev: CookieStoreEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
removeEventListener(type: K, listener: (this: CookieStore, ev: CookieStoreEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
}
declare var CookieStore: {
prototype: CookieStore;
};
interface CookieStoreEventMap {
"change": CookieChangeEvent;
}
interface CookieStoreGetOptions {
name: string;
url: string;
}
type CookieSameSite = (
| "strict"
| "lax"
| "none"
);
interface CookieInit {
name: string;
value: string;
expires?: EpochTimeStamp;
domain?: string;
path?: string;
sameSite?: CookieSameSite;
}
interface CookieStoreDeleteOptions {
name: string;
domain?: string;
path?: string;
}
interface CookieListItem {
name: string;
value: string;
domain: string | null;
path: string;
expires: EpochTimeStamp | null;
secure: boolean;
sameSite: CookieSameSite;
}
type CookieList = CookieListItem[];
interface CookieStoreManager {
subscribe(subscriptions: CookieStoreGetOptions[]): Promise;
getSubscriptions(): Promise;
unsubscribe(subscriptions: CookieStoreGetOptions[]): Promise;
}
declare var CookieStoreManager: {
prototype: CookieStoreManager;
};
interface ServiceWorkerRegistration {
readonly cookies: CookieStoreManager;
}
interface CookieChangeEvent extends Event {
readonly changed: ReadonlyArray;
readonly deleted: ReadonlyArray;
}
declare var CookieChangeEvent: {
prototype: CookieChangeEvent;
new(type: string, eventInitDict?: CookieChangeEventInit): CookieChangeEvent;
};
interface CookieChangeEventInit extends EventInit {
changed: CookieList;
deleted: CookieList;
}
declare var cookieStore: CookieStore;
interface ExtendableCookieChangeEvent extends ExtendableEvent {
readonly changed: ReadonlyArray;
readonly deleted: ReadonlyArray;
}
declare var ExtendableCookieChangeEvent: {
prototype: ExtendableCookieChangeEvent;
new(type: string, eventInitDict?: CookieChangeEventInit): ExtendableCookieChangeEvent;
}
interface ExtendableCookieChangeEventInit extends ExtendableEventInit {
changed: CookieList;
deleted: CookieList;
}
declare var ExtendableCookieChangeEventInit: {
prototype: ExtendableCookieChangeEventInit;
}