blob: 4d6625bc5edf39ccf704be372d417b925b2e68a0 [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
//
// API docs from [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web).
// Attributions and copyright licensing by Mozilla Contributors is licensed
// under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/.
// Generated from Web IDL definitions.
// ignore_for_file: unintended_html_in_doc_comment
@JS()
library;
import 'dart:js_interop';
import 'dom.dart';
import 'hr_time.dart';
import 'html.dart';
import 'service_workers.dart';
typedef CookieList = JSArray<CookieListItem>;
typedef CookieSameSite = String;
/// @AvailableInWorkers("window_and_service")
///
/// The **`CookieStore`** interface of the [Cookie Store API] provides methods
/// for getting and setting cookies asynchronously from either a page or a
/// service worker.
///
/// The `CookieStore` is accessed via attributes in the global scope in a
/// [Window] or [ServiceWorkerGlobalScope] context. Therefore there is no
/// constructor.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CookieStore).
extension type CookieStore._(JSObject _) implements EventTarget, JSObject {
/// @AvailableInWorkers("window_and_service")
///
/// The **`get()`** method of the [CookieStore] interface returns a single
/// cookie with the given `name` or `options` object. The method will return
/// the first matching cookie for the passed parameters.
external JSPromise<CookieListItem?> get([JSAny nameOrOptions]);
/// @AvailableInWorkers("window_and_service")
///
/// The **`getAll()`** method of the [CookieStore] interface returns a list of
/// cookies that match the `name` or `options` passed to it. Passing no
/// parameters will return all cookies for the current context.
external JSPromise<CookieList> getAll([JSAny nameOrOptions]);
/// @AvailableInWorkers("window_and_service")
///
/// The **`set()`** method of the [CookieStore] interface sets a cookie with
/// the given `name` and `value` or `options` object.
external JSPromise<JSAny?> set(
JSAny nameOrOptions, [
String value,
]);
/// @AvailableInWorkers("window_and_service")
///
/// The **`delete()`** method of the [CookieStore] interface deletes a cookie
/// with the given `name` or `options` object. The `delete()` method expires
/// the cookie by changing the date to one in the past.
external JSPromise<JSAny?> delete(JSAny nameOrOptions);
external EventHandler get onchange;
external set onchange(EventHandler value);
}
extension type CookieStoreGetOptions._(JSObject _) implements JSObject {
external factory CookieStoreGetOptions({
String name,
String url,
});
external String get name;
external set name(String value);
external String get url;
external set url(String value);
}
extension type CookieInit._(JSObject _) implements JSObject {
external factory CookieInit({
required String name,
required String value,
DOMHighResTimeStamp? expires,
String? domain,
String path,
CookieSameSite sameSite,
bool partitioned,
});
external String get name;
external set name(String value);
external String get value;
external set value(String value);
external double? get expires;
external set expires(DOMHighResTimeStamp? value);
external String? get domain;
external set domain(String? value);
external String get path;
external set path(String value);
external CookieSameSite get sameSite;
external set sameSite(CookieSameSite value);
external bool get partitioned;
external set partitioned(bool value);
}
extension type CookieStoreDeleteOptions._(JSObject _) implements JSObject {
external factory CookieStoreDeleteOptions({
required String name,
String? domain,
String path,
bool partitioned,
});
external String get name;
external set name(String value);
external String? get domain;
external set domain(String? value);
external String get path;
external set path(String value);
external bool get partitioned;
external set partitioned(bool value);
}
extension type CookieListItem._(JSObject _) implements JSObject {
external factory CookieListItem({
String name,
String value,
String? domain,
String path,
DOMHighResTimeStamp? expires,
bool secure,
CookieSameSite sameSite,
bool partitioned,
});
external String get name;
external set name(String value);
external String get value;
external set value(String value);
external String? get domain;
external set domain(String? value);
external String get path;
external set path(String value);
external double? get expires;
external set expires(DOMHighResTimeStamp? value);
external bool get secure;
external set secure(bool value);
external CookieSameSite get sameSite;
external set sameSite(CookieSameSite value);
external bool get partitioned;
external set partitioned(bool value);
}
/// @AvailableInWorkers("window_and_service")
///
/// The **`CookieStoreManager`** interface of the [Cookie Store API] allows
/// service workers to subscribe to cookie change events. Call
/// [CookieStoreManager.subscribe] on a particular service worker registration
/// to receive change events.
///
/// A `CookieStoreManager` has an associated [ServiceWorkerRegistration]. Each
/// service worker registration has a cookie change subscription list, which is
/// a list of cookie change subscriptions each containing a name and URL. The
/// methods in this interface allow the service worker to add and remove
/// subscriptions from this list, and to get a list of all subscriptions.
///
/// To get a `CookieStoreManager`, call [ServiceWorkerRegistration.cookies].
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CookieStoreManager).
extension type CookieStoreManager._(JSObject _) implements JSObject {
/// @AvailableInWorkers("window_and_service")
///
/// The **`subscribe()`** method of the [CookieStoreManager] interface
/// subscribes a [ServiceWorkerRegistration] to cookie change events.
external JSPromise<JSAny?> subscribe(
JSArray<CookieStoreGetOptions> subscriptions);
/// @AvailableInWorkers("window_and_service")
///
/// The **`getSubscriptions()`** method of the [CookieStoreManager] interface
/// returns a list of all the cookie change subscriptions for this
/// [ServiceWorkerRegistration].
external JSPromise<JSArray<CookieStoreGetOptions>> getSubscriptions();
/// @AvailableInWorkers("window_and_service")
///
/// The **`unsubscribe()`** method of the [CookieStoreManager] interface stops
/// the [ServiceWorkerRegistration] from receiving previously subscribed
/// events.
external JSPromise<JSAny?> unsubscribe(
JSArray<CookieStoreGetOptions> subscriptions);
}
/// The **`CookieChangeEvent`** interface of the [Cookie Store API] is the event
/// type of the [CookieStore.change_event] event fired at a [CookieStore] when
/// any cookies are created or deleted.
///
/// > [!NOTE]
/// > A cookie that is replaced due to the insertion of another cookie with the
/// > same name, domain, and path, is ignored and does not trigger a change
/// > event.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/CookieChangeEvent).
extension type CookieChangeEvent._(JSObject _) implements Event, JSObject {
external factory CookieChangeEvent(
String type, [
CookieChangeEventInit eventInitDict,
]);
/// The **`changed`** read-only property of the [CookieChangeEvent] interface
/// returns an array of the cookies that have been changed.
///
/// Note that this will exclude cookies which were created with an expiry date
/// in the past, as these cookies are immediately deleted.
external JSArray<CookieListItem> get changed;
/// The **`deleted`** read-only property of the [CookieChangeEvent] interface
/// returns an array of the cookies that have been deleted by the given
/// `CookieChangeEvent` instance.
///
/// Note that this will include cookies which were created with an expiry date
/// in the past, as these cookies are immediately deleted.
external JSArray<CookieListItem> get deleted;
}
extension type CookieChangeEventInit._(JSObject _)
implements EventInit, JSObject {
external factory CookieChangeEventInit({
bool bubbles,
bool cancelable,
bool composed,
CookieList changed,
CookieList deleted,
});
external CookieList get changed;
external set changed(CookieList value);
external CookieList get deleted;
external set deleted(CookieList value);
}
/// @AvailableInWorkers("service")
///
/// The **`ExtendableCookieChangeEvent`** interface of the [Cookie Store API] is
/// the event type passed to [ServiceWorkerGlobalScope.cookiechange_event] event
/// fired at the [ServiceWorkerGlobalScope] when any cookie changes occur which
/// match the service worker's cookie change subscription list. A cookie change
/// event consists of a cookie and a type. (either "changed" or "deleted")
///
/// Cookie changes that cause the `ExtendableCookieChangeEvent` to be dispatched
/// are:
///
/// - A cookie is newly created and not immediately removed. In this case `type`
/// is "changed".
/// - A cookie is newly created and immediately removed. In this case `type` is
/// "deleted"
/// - A cookie is removed. In this case `type` is "deleted".
///
/// > [!NOTE]
/// > A cookie that is replaced due to the insertion of another cookie with the
/// > same name, domain, and path, is ignored and does not trigger a change
/// > event.
///
/// ---
///
/// API documentation sourced from
/// [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/API/ExtendableCookieChangeEvent).
extension type ExtendableCookieChangeEvent._(JSObject _)
implements ExtendableEvent, JSObject {
external factory ExtendableCookieChangeEvent(
String type, [
ExtendableCookieChangeEventInit eventInitDict,
]);
/// @AvailableInWorkers("service")
///
/// The **`changed`** read-only property of the [ExtendableCookieChangeEvent]
/// interface returns any cookies that have been changed by the given
/// `ExtendableCookieChangeEvent` instance.
external JSArray<CookieListItem> get changed;
/// @AvailableInWorkers("service")
///
/// The **`deleted`** read-only property of the [ExtendableCookieChangeEvent]
/// interface returns any cookies that have been deleted by the given
/// `ExtendableCookieChangeEvent` instance.
external JSArray<CookieListItem> get deleted;
}
extension type ExtendableCookieChangeEventInit._(JSObject _)
implements ExtendableEventInit, JSObject {
external factory ExtendableCookieChangeEventInit({
bool bubbles,
bool cancelable,
bool composed,
CookieList changed,
CookieList deleted,
});
external CookieList get changed;
external set changed(CookieList value);
external CookieList get deleted;
external set deleted(CookieList value);
}