Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
- Contribute a markdown file for the renamed classes from `dart:html` to
`package:web` (see [renames.md](tool/renames.md)).
- Migrate classes to use interop extension types that implement `JSObject`.
- Add generics to APIs that use `JSArray` and `JSPromise`. Typedefs of a Dart
primitive type are instead replaced with their JS type equivalent if they
appear as a type parameter in order to conform with the type bounds of
`JSArray` and `JSPromise`.

## 0.4.2

Expand Down
2 changes: 1 addition & 1 deletion lib/src/dom/anchors.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import 'dart:js_interop';
import 'webxr.dart';

extension type XRAnchor._(JSObject _) implements JSObject {
external JSPromise requestPersistentHandle();
external JSPromise<JSString> requestPersistentHandle();
external void delete();
external XRSpace get anchorSpace;
}
Expand Down
23 changes: 12 additions & 11 deletions lib/src/dom/background_fetch.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,28 @@ import 'dart:js_interop';
import 'dom.dart';
import 'fetch.dart';
import 'html.dart';
import 'image_resource.dart';
import 'service_workers.dart';

typedef BackgroundFetchResult = String;
typedef BackgroundFetchFailureReason = String;
extension type BackgroundFetchManager._(JSObject _) implements JSObject {
external JSPromise fetch(
external JSPromise<BackgroundFetchRegistration> fetch(
String id,
JSAny requests, [
BackgroundFetchOptions options,
]);
external JSPromise get(String id);
external JSPromise getIds();
external JSPromise<BackgroundFetchRegistration?> get(String id);
external JSPromise<JSArray<JSString>> getIds();
}
extension type BackgroundFetchUIOptions._(JSObject _) implements JSObject {
external factory BackgroundFetchUIOptions({
JSArray icons,
JSArray<ImageResource> icons,
String title,
});

external set icons(JSArray value);
external JSArray get icons;
external set icons(JSArray<ImageResource> value);
external JSArray<ImageResource> get icons;
external set title(String value);
external String get title;
}
Expand All @@ -42,12 +43,12 @@ extension type BackgroundFetchOptions._(JSObject _)
}
extension type BackgroundFetchRegistration._(JSObject _)
implements EventTarget, JSObject {
external JSPromise abort();
external JSPromise match(
external JSPromise<JSBoolean> abort();
external JSPromise<BackgroundFetchRecord> match(
RequestInfo request, [
CacheQueryOptions options,
]);
external JSPromise matchAll([
external JSPromise<JSArray<BackgroundFetchRecord>> matchAll([
RequestInfo request,
CacheQueryOptions options,
]);
Expand All @@ -64,7 +65,7 @@ extension type BackgroundFetchRegistration._(JSObject _)
}
extension type BackgroundFetchRecord._(JSObject _) implements JSObject {
external Request get request;
external JSPromise get responseReady;
external JSPromise<Response> get responseReady;
}
extension type BackgroundFetchEvent._(JSObject _)
implements ExtendableEvent, JSObject {
Expand All @@ -90,5 +91,5 @@ extension type BackgroundFetchUpdateUIEvent._(JSObject _)
BackgroundFetchEventInit init,
);

external JSPromise updateUI([BackgroundFetchUIOptions options]);
external JSPromise<JSAny?> updateUI([BackgroundFetchUIOptions options]);
}
4 changes: 2 additions & 2 deletions lib/src/dom/background_sync.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import 'dart:js_interop';
import 'service_workers.dart';

extension type SyncManager._(JSObject _) implements JSObject {
external JSPromise register(String tag);
external JSPromise getTags();
external JSPromise<JSAny?> register(String tag);
external JSPromise<JSArray<JSString>> getTags();
}
extension type SyncEvent._(JSObject _) implements ExtendableEvent, JSObject {
external factory SyncEvent(
Expand Down
6 changes: 3 additions & 3 deletions lib/src/dom/capture_handle_identity.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ extension type CaptureHandleConfig._(JSObject _) implements JSObject {
external factory CaptureHandleConfig({
bool exposeOrigin,
String handle,
JSArray permittedOrigins,
JSArray<JSString> permittedOrigins,
});

external set exposeOrigin(bool value);
external bool get exposeOrigin;
external set handle(String value);
external String get handle;
external set permittedOrigins(JSArray value);
external JSArray get permittedOrigins;
external set permittedOrigins(JSArray<JSString> value);
external JSArray<JSString> get permittedOrigins;
}
extension type CaptureHandle._(JSObject _) implements JSObject {
external factory CaptureHandle({
Expand Down
17 changes: 9 additions & 8 deletions lib/src/dom/clipboard_apis.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import 'dart:js_interop';

import 'dom.dart';
import 'fileapi.dart';
import 'html.dart';
import 'permissions.dart';

typedef ClipboardItemData = JSPromise;
typedef ClipboardItems = JSArray;
typedef ClipboardItemData = JSPromise<JSAny>;
typedef ClipboardItems = JSArray<ClipboardItem>;
typedef PresentationStyle = String;
extension type ClipboardEventInit._(JSObject _) implements EventInit, JSObject {
external factory ClipboardEventInit({DataTransfer? clipboardData});
Expand All @@ -34,9 +35,9 @@ extension type ClipboardItem._(JSObject _) implements JSObject {
]);

external static bool supports(String type);
external JSPromise getType(String type);
external JSPromise<Blob> getType(String type);
external PresentationStyle get presentationStyle;
external JSArray get types;
external JSArray<JSString> get types;
}
extension type ClipboardItemOptions._(JSObject _) implements JSObject {
external factory ClipboardItemOptions({PresentationStyle presentationStyle});
Expand All @@ -45,10 +46,10 @@ extension type ClipboardItemOptions._(JSObject _) implements JSObject {
external PresentationStyle get presentationStyle;
}
extension type Clipboard._(JSObject _) implements EventTarget, JSObject {
external JSPromise read();
external JSPromise readText();
external JSPromise write(ClipboardItems data);
external JSPromise writeText(String data);
external JSPromise<ClipboardItems> read();
external JSPromise<JSString> readText();
external JSPromise<JSAny?> write(ClipboardItems data);
external JSPromise<JSAny?> writeText(String data);
}
extension type ClipboardPermissionDescriptor._(JSObject _)
implements PermissionDescriptor, JSObject {
Expand Down
6 changes: 3 additions & 3 deletions lib/src/dom/compute_pressure.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ extension type PressureObserver._(JSObject _) implements JSObject {
PressureObserverOptions options,
]);

external static JSArray get supportedSources;
external JSPromise observe(PressureSource source);
external static JSArray<JSString> get supportedSources;
external JSPromise<JSAny?> observe(PressureSource source);
external void unobserve(PressureSource source);
external void disconnect();
external JSArray takeRecords();
external JSArray<PressureRecord> takeRecords();
}
extension type PressureRecord._(JSObject _) implements JSObject {
external JSObject toJSON();
Expand Down
2 changes: 1 addition & 1 deletion lib/src/dom/console.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ extension type $Console._(JSObject _) implements JSObject {
external void log(JSAny? data);
external void table([
JSAny? tabularData,
JSArray properties,
JSArray<JSString> properties,
]);
external void trace(JSAny? data);
external void warn(JSAny? data);
Expand Down
40 changes: 21 additions & 19 deletions lib/src/dom/contact_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

import 'dart:js_interop';

import 'fileapi.dart';

typedef ContactProperty = String;
extension type ContactAddress._(JSObject _) implements JSObject {
external JSObject toJSON();
Expand All @@ -18,27 +20,27 @@ extension type ContactAddress._(JSObject _) implements JSObject {
external String get recipient;
external String get region;
external String get sortingCode;
external JSArray get addressLine;
external JSArray<JSString> get addressLine;
}
extension type ContactInfo._(JSObject _) implements JSObject {
external factory ContactInfo({
JSArray address,
JSArray email,
JSArray icon,
JSArray name,
JSArray tel,
JSArray<ContactAddress> address,
JSArray<JSString> email,
JSArray<Blob> icon,
JSArray<JSString> name,
JSArray<JSString> tel,
});

external set address(JSArray value);
external JSArray get address;
external set email(JSArray value);
external JSArray get email;
external set icon(JSArray value);
external JSArray get icon;
external set name(JSArray value);
external JSArray get name;
external set tel(JSArray value);
external JSArray get tel;
external set address(JSArray<ContactAddress> value);
external JSArray<ContactAddress> get address;
external set email(JSArray<JSString> value);
external JSArray<JSString> get email;
external set icon(JSArray<Blob> value);
external JSArray<Blob> get icon;
external set name(JSArray<JSString> value);
external JSArray<JSString> get name;
external set tel(JSArray<JSString> value);
external JSArray<JSString> get tel;
}
extension type ContactsSelectOptions._(JSObject _) implements JSObject {
external factory ContactsSelectOptions({bool multiple});
Expand All @@ -47,9 +49,9 @@ extension type ContactsSelectOptions._(JSObject _) implements JSObject {
external bool get multiple;
}
extension type ContactsManager._(JSObject _) implements JSObject {
external JSPromise getProperties();
external JSPromise select(
JSArray properties, [
external JSPromise<JSArray<JSString>> getProperties();
external JSPromise<JSArray<ContactInfo>> select(
JSArray<JSString> properties, [
ContactsSelectOptions options,
]);
}
13 changes: 7 additions & 6 deletions lib/src/dom/content_index.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import 'dart:js_interop';

import 'image_resource.dart';
import 'service_workers.dart';

typedef ContentCategory = String;
Expand All @@ -15,7 +16,7 @@ extension type ContentDescription._(JSObject _) implements JSObject {
required String title,
required String description,
ContentCategory category,
JSArray icons,
JSArray<ImageResource> icons,
required String url,
});

Expand All @@ -27,15 +28,15 @@ extension type ContentDescription._(JSObject _) implements JSObject {
external String get description;
external set category(ContentCategory value);
external ContentCategory get category;
external set icons(JSArray value);
external JSArray get icons;
external set icons(JSArray<ImageResource> value);
external JSArray<ImageResource> get icons;
external set url(String value);
external String get url;
}
extension type ContentIndex._(JSObject _) implements JSObject {
external JSPromise add(ContentDescription description);
external JSPromise delete(String id);
external JSPromise getAll();
external JSPromise<JSAny?> add(ContentDescription description);
external JSPromise<JSAny?> delete(String id);
external JSPromise<JSArray<ContentDescription>> getAll();
}
extension type ContentIndexEventInit._(JSObject _)
implements ExtendableEventInit, JSObject {
Expand Down
26 changes: 14 additions & 12 deletions lib/src/dom/cookie_store.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ import 'hr_time.dart';
import 'html.dart';
import 'service_workers.dart';

typedef CookieList = JSArray;
typedef CookieList = JSArray<CookieListItem>;
typedef CookieSameSite = String;
extension type CookieStore._(JSObject _) implements EventTarget, JSObject {
external JSPromise get([JSAny nameOrOptions]);
external JSPromise getAll([JSAny nameOrOptions]);
external JSPromise set(
external JSPromise<CookieListItem?> get([JSAny nameOrOptions]);
external JSPromise<CookieList> getAll([JSAny nameOrOptions]);
external JSPromise<JSAny?> set(
JSAny nameOrOptions, [
String value,
]);
external JSPromise delete(JSAny nameOrOptions);
external JSPromise<JSAny?> delete(JSAny nameOrOptions);
external set onchange(EventHandler value);
external EventHandler get onchange;
}
Expand Down Expand Up @@ -108,18 +108,20 @@ extension type CookieListItem._(JSObject _) implements JSObject {
external bool get partitioned;
}
extension type CookieStoreManager._(JSObject _) implements JSObject {
external JSPromise subscribe(JSArray subscriptions);
external JSPromise getSubscriptions();
external JSPromise unsubscribe(JSArray subscriptions);
external JSPromise<JSAny?> subscribe(
JSArray<CookieStoreGetOptions> subscriptions);
external JSPromise<JSArray<CookieStoreGetOptions>> getSubscriptions();
external JSPromise<JSAny?> unsubscribe(
JSArray<CookieStoreGetOptions> subscriptions);
}
extension type CookieChangeEvent._(JSObject _) implements Event, JSObject {
external factory CookieChangeEvent(
String type, [
CookieChangeEventInit eventInitDict,
]);

external JSArray get changed;
external JSArray get deleted;
external JSArray<CookieListItem> get changed;
external JSArray<CookieListItem> get deleted;
}
extension type CookieChangeEventInit._(JSObject _)
implements EventInit, JSObject {
Expand All @@ -140,8 +142,8 @@ extension type ExtendableCookieChangeEvent._(JSObject _)
ExtendableCookieChangeEventInit eventInitDict,
]);

external JSArray get changed;
external JSArray get deleted;
external JSArray<CookieListItem> get changed;
external JSArray<CookieListItem> get deleted;
}
extension type ExtendableCookieChangeEventInit._(JSObject _)
implements ExtendableEventInit, JSObject {
Expand Down
22 changes: 11 additions & 11 deletions lib/src/dom/credential_management.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ import 'webauthn.dart';
typedef PasswordCredentialInit = JSObject;
typedef CredentialMediationRequirement = String;
extension type Credential._(JSObject _) implements JSObject {
external static JSPromise isConditionalMediationAvailable();
external static JSPromise<JSBoolean> isConditionalMediationAvailable();
external String get id;
external String get type;
}
extension type CredentialsContainer._(JSObject _) implements JSObject {
external JSPromise get([CredentialRequestOptions options]);
external JSPromise store(Credential credential);
external JSPromise create([CredentialCreationOptions options]);
external JSPromise preventSilentAccess();
external JSPromise<Credential?> get([CredentialRequestOptions options]);
external JSPromise<JSAny?> store(Credential credential);
external JSPromise<Credential?> create([CredentialCreationOptions options]);
external JSPromise<JSAny?> preventSilentAccess();
}
extension type CredentialData._(JSObject _) implements JSObject {
external factory CredentialData({required String id});
Expand Down Expand Up @@ -111,14 +111,14 @@ extension type FederatedCredential._(JSObject _)
extension type FederatedCredentialRequestOptions._(JSObject _)
implements JSObject {
external factory FederatedCredentialRequestOptions({
JSArray providers,
JSArray protocols,
JSArray<JSString> providers,
JSArray<JSString> protocols,
});

external set providers(JSArray value);
external JSArray get providers;
external set protocols(JSArray value);
external JSArray get protocols;
external set providers(JSArray<JSString> value);
external JSArray<JSString> get providers;
external set protocols(JSArray<JSString> value);
external JSArray<JSString> get protocols;
}
extension type FederatedCredentialInit._(JSObject _)
implements CredentialData, JSObject {
Expand Down
2 changes: 1 addition & 1 deletion lib/src/dom/css_animation_worklet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,5 @@ extension type WorkletAnimation._(JSObject _) implements Animation, JSObject {
external String get animatorName;
}
extension type WorkletGroupEffect._(JSObject _) implements JSObject {
external JSArray getChildren();
external JSArray<WorkletAnimationEffect> getChildren();
}
Loading