Skip to content

contribute a fix_data.yaml file to enable 'dart fix' renames #141

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jan 14, 2024
Merged
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
20 changes: 20 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -79,3 +79,23 @@ jobs:
run: dart tool/update_bindings.dart
- name: Analyze code
run: dart analyze --fatal-infos

# Test the contributed `dart fix` fixes.
dart-fix:
needs: analyze
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
sdk: [main]
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
- uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d
with:
sdk: ${{ matrix.sdk }}
- name: Install Dart dependencies
run: dart pub get
- name: Test the declarative fixes
run: dart fix --compare-to-golden
working-directory: test_fixes
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
## 0.5.0-wip

- Redeprecate APIs that were deprecated in `0.4.1` but undeprecated in `0.4.2`.
- Add support for `dart fix` migrations from `dart:html` classes to
`package:web` classes.
- Contribute a markdown file for the renamed classes from `dart:html` to
`package:web` (see [renames.md](tool/renames.md)).

## 0.4.2

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ the APIs.
import 'package:web/web.dart';
void main() {
final div = document.querySelector('div') as HTMLDivElement;
final div = document.querySelector('div')!;
div.text = 'Text set at ${DateTime.now()}';
}
```
2 changes: 2 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -6,6 +6,8 @@ analyzer:
strict-casts: true
strict-inference: true
strict-raw-types: true
exclude:
- test_fixes/**

errors:
# Ideally we'd fix all of these - or ignore them at the line-level where
2 changes: 1 addition & 1 deletion example/example.dart
Original file line number Diff line number Diff line change
@@ -5,6 +5,6 @@
import 'package:web/web.dart';

void main() {
final div = document.querySelector('div') as HTMLDivElement;
final div = document.querySelector('div')!;
div.text = 'Text set at ${DateTime.now()}';
}
1,396 changes: 1,396 additions & 0 deletions lib/fix_data.yaml

Large diffs are not rendered by default.

38 changes: 38 additions & 0 deletions test_fixes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
## What's here?

For information about the files in this directory, see
https://github.com/flutter/flutter/wiki/Data-driven-Fixes#testing.

## Organization

The contents of this directory are used to test the `dart fix` refactorings
offered by this package. See `lib/dart_fix.yaml` for the fix definitions.

Note that files in this directory are excluded from analysis.

## Running the dart fix tests

In order to test the fixes manually:

```bash
> cd test_fixes
> dart fix --compare-to-golden
```

## Symbols excluded from the renames

The helpers in `lib/src/helpers/renames.dart` define typedefs for dart:html to
package:web renames of a few common classes; we don't offer quick fix renames
for these symbols (though we may want to revisit having these typedefs).

```dart
typedef AudioElement = HTMLAudioElement;
typedef CanvasElement = HTMLCanvasElement;
typedef CssStyleDeclaration = CSSStyleDeclaration;
typedef HtmlElement = HTMLElement;
typedef ImageElement = HTMLImageElement;
typedef VideoElement = HTMLVideoElement;
```

In addition, `lib/src/helpers/http.dart` defines an `HttpRequest` class, so we
don't offer a quick fix to rename from `HttpRequest` to `XMLHttpRequest`.
2 changes: 2 additions & 0 deletions test_fixes/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# https://dart.dev/guides/language/analysis-options
include: package:dart_flutter_team_lints/analysis_options.yaml
162 changes: 162 additions & 0 deletions test_fixes/renames.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
// Copyright (c) 2024, 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.

// ignore_for_file: unreachable_from_main

import 'package:web/web.dart';

late AnchorElement $0;
late AreaElement $1;
// late AudioElement/HTMLAudioElement $2;
late BaseElement $3;
late BluetoothRemoteGattDescriptor $4;
late BodyElement $5;
late BRElement $6;
late ButtonElement $7;
// late CanvasElement/HTMLCanvasElement $8;
late CDataSection $9;
late Css $10;
late CssConditionRule $11;
late CssFontFaceRule $12;
late CssGroupingRule $13;
late CssImageValue $14;
late CssImportRule $15;
late CssKeyframeRule $16;
late CssKeyframesRule $17;
late CssKeywordValue $18;
late CssMatrixComponent $19;
late CssMediaRule $20;
late CssNamespaceRule $21;
late CssNumericValue $22;
late CssPageRule $23;
late CssPerspective $24;
late CssRule $25;
late CssScale $26;
late CssSkew $27;
// late CssStyleDeclaration/CSSStyleDeclaration $28;
late CssStyleRule $29;
late CssStyleSheet $30;
late CssStyleValue $31;
late CssSupportsRule $32;
late CssTransformComponent $33;
late CssTransformValue $34;
late CssUnitValue $35;
late CssUnparsedValue $36;
late CssVariableReferenceValue $37;
late DataElement $38;
late DataListElement $39;
late DetailsElement $40;
late DialogElement $41;
late DivElement $42;
late DListElement $43;
late DomException $44;
late DomImplementation $45;
late DomMatrix $46;
late DomMatrixReadOnly $47;
late DomParser $48;
late DomPoint $49;
late DomPointReadOnly $50;
late DomQuad $51;
late DomRectList $52;
late DomRectReadOnly $53;
late DomStringList $54;
late DomStringMap $55;
late DomTokenList $56;
late EmbedElement $57;
late Entry $58;
late FieldSetElement $59;
late FileEntry $60;
late FormElement $61;
late Geoposition $62;
late HeadElement $63;
late HeadingElement $64;
late HRElement $65;
late HtmlCollection $66;
late HtmlDocument $67;
// late HtmlElement/HTMLElement $68;
late HtmlFormControlsCollection $69;
late HtmlHtmlElement $70;
late HtmlHyperlinkElementUtils $71;
late HtmlOptionsCollection $72;
// late HttpRequest/XMLHttpRequest $73;
late HttpRequestEventTarget $74;
late HttpRequestUpload $75;
late IFrameElement $76;
// late ImageElement/HTMLImageElement $77;
late InputElement $78;
late LabelElement $79;
late LegendElement $80;
late LIElement $81;
late LinkElement $82;
late MapElement $83;
late MediaElement $84;
late MenuElement $85;
late MetaElement $86;
late MeterElement $87;
late MidiAccess $88;
late MidiConnectionEvent $89;
late MidiInput $90;
late MidiInputMap $91;
late MidiMessageEvent $92;
late MidiOutput $93;
late MidiOutputMap $94;
late MidiPort $95;
late ModElement $96;
late ObjectElement $97;
late OListElement $98;
late OptGroupElement $99;
late OptionElement $100;
late OutputElement $101;
late ParagraphElement $102;
late ParamElement $103;
late PictureElement $104;
late PositionError $105;
late PreElement $106;
late ProgressElement $107;
late QuoteElement $108;
late RtcCertificate $109;
late RtcDataChannel $110;
late RtcDataChannelEvent $111;
late RtcDtmfSender $112;
late RtcDtmfToneChangeEvent $113;
late RtcIceCandidate $114;
late RtcPeerConnection $115;
late RtcPeerConnectionIceEvent $116;
late RtcRtpContributingSource $117;
late RtcRtpReceiver $118;
late RtcRtpSender $119;
late RtcSessionDescription $120;
late RtcStatsReport $121;
late RtcTrackEvent $122;
late ScriptElement $123;
late SelectElement $124;
late SlotElement $125;
late SourceElement $126;
late SpanElement $127;
late SpeechRecognitionError $128;
late StyleElement $129;
late StylePropertyMapReadonly $130;
late TableCaptionElement $131;
late TableColElement $132;
late TableElement $133;
late TableRowElement $134;
late TableSectionElement $135;
late TemplateElement $136;
late TextAreaElement $137;
late TimeElement $138;
late TitleElement $139;
late TrackElement $140;
late TrustedHtml $141;
late TrustedScriptUrl $142;
late UListElement $143;
late UnderlyingSourceBase $144;
late UnknownElement $145;
late Url $146;
late UrlSearchParams $147;
// late VideoElement/HTMLVideoElement $148;
late VttCue $149;
late VttRegion $150;
late XmlDocument $151;
late XmlSerializer $152;
late XsltProcessor $153;
162 changes: 162 additions & 0 deletions test_fixes/renames.dart.expect
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
// Copyright (c) 2024, 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.

// ignore_for_file: unreachable_from_main

import 'package:web/web.dart';

late HTMLAnchorElement $0;
late HTMLAreaElement $1;
// late AudioElement/HTMLAudioElement $2;
late HTMLBaseElement $3;
late BluetoothRemoteGATTDescriptor $4;
late HTMLBodyElement $5;
late HTMLBRElement $6;
late HTMLButtonElement $7;
// late CanvasElement/HTMLCanvasElement $8;
late CDATASection $9;
late CSS $10;
late CSSConditionRule $11;
late CSSFontFaceRule $12;
late CSSGroupingRule $13;
late CSSImageValue $14;
late CSSImportRule $15;
late CSSKeyframeRule $16;
late CSSKeyframesRule $17;
late CSSKeywordValue $18;
late CSSMatrixComponent $19;
late CSSMediaRule $20;
late CSSNamespaceRule $21;
late CSSNumericValue $22;
late CSSPageRule $23;
late CSSPerspective $24;
late CSSRule $25;
late CSSScale $26;
late CSSSkew $27;
// late CssStyleDeclaration/CSSStyleDeclaration $28;
late CSSStyleRule $29;
late CSSStyleSheet $30;
late CSSStyleValue $31;
late CSSSupportsRule $32;
late CSSTransformComponent $33;
late CSSTransformValue $34;
late CSSUnitValue $35;
late CSSUnparsedValue $36;
late CSSVariableReferenceValue $37;
late HTMLDataElement $38;
late HTMLDataListElement $39;
late HTMLDetailsElement $40;
late HTMLDialogElement $41;
late HTMLDivElement $42;
late HTMLDListElement $43;
late DOMException $44;
late DOMImplementation $45;
late DOMMatrix $46;
late DOMMatrixReadOnly $47;
late DOMParser $48;
late DOMPoint $49;
late DOMPointReadOnly $50;
late DOMQuad $51;
late DOMRectList $52;
late DOMRectReadOnly $53;
late DOMStringList $54;
late DOMStringMap $55;
late DOMTokenList $56;
late HTMLEmbedElement $57;
late FileSystemEntry $58;
late HTMLFieldSetElement $59;
late FileSystemFileEntry $60;
late HTMLFormElement $61;
late GeolocationPosition $62;
late HTMLHeadElement $63;
late HTMLHeadingElement $64;
late HTMLHRElement $65;
late HTMLCollection $66;
late Document $67;
// late HtmlElement/HTMLElement $68;
late HTMLFormControlsCollection $69;
late HTMLHtmlElement $70;
late HTMLHyperlinkElementUtils $71;
late HTMLOptionsCollection $72;
// late HttpRequest/XMLHttpRequest $73;
late XMLHttpRequestEventTarget $74;
late XMLHttpRequestUpload $75;
late HTMLIFrameElement $76;
// late ImageElement/HTMLImageElement $77;
late HTMLInputElement $78;
late HTMLLabelElement $79;
late HTMLLegendElement $80;
late HTMLLIElement $81;
late HTMLLinkElement $82;
late HTMLMapElement $83;
late HTMLMediaElement $84;
late HTMLMenuElement $85;
late HTMLMetaElement $86;
late HTMLMeterElement $87;
late MIDIAccess $88;
late MIDIConnectionEvent $89;
late MIDIInput $90;
late MIDIInputMap $91;
late MIDIMessageEvent $92;
late MIDIOutput $93;
late MIDIOutputMap $94;
late MIDIPort $95;
late HTMLModElement $96;
late HTMLObjectElement $97;
late HTMLOListElement $98;
late HTMLOptGroupElement $99;
late HTMLOptionElement $100;
late HTMLOutputElement $101;
late HTMLParagraphElement $102;
late HTMLParamElement $103;
late HTMLPictureElement $104;
late GeolocationPositionError $105;
late HTMLPreElement $106;
late HTMLProgressElement $107;
late HTMLQuoteElement $108;
late RTCCertificate $109;
late RTCDataChannel $110;
late RTCDataChannelEvent $111;
late RTCDTMFSender $112;
late RTCDTMFToneChangeEvent $113;
late RTCIceCandidate $114;
late RTCPeerConnection $115;
late RTCPeerConnectionIceEvent $116;
late RTCRtpContributingSource $117;
late RTCRtpReceiver $118;
late RTCRtpSender $119;
late RTCSessionDescription $120;
late RTCStatsReport $121;
late RTCTrackEvent $122;
late HTMLScriptElement $123;
late HTMLSelectElement $124;
late HTMLSlotElement $125;
late HTMLSourceElement $126;
late HTMLSpanElement $127;
late SpeechRecognitionErrorEvent $128;
late HTMLStyleElement $129;
late StylePropertyMapReadOnly $130;
late HTMLTableCaptionElement $131;
late HTMLTableColElement $132;
late HTMLTableElement $133;
late HTMLTableRowElement $134;
late HTMLTableSectionElement $135;
late HTMLTemplateElement $136;
late HTMLTextAreaElement $137;
late HTMLTimeElement $138;
late HTMLTitleElement $139;
late HTMLTrackElement $140;
late TrustedHTML $141;
late TrustedScriptURL $142;
late HTMLUListElement $143;
late UnderlyingSource $144;
late HTMLUnknownElement $145;
late URL $146;
late URLSearchParams $147;
// late VideoElement/HTMLVideoElement $148;
late VTTCue $149;
late VTTRegion $150;
late XMLDocument $151;
late XMLSerializer $152;
late XSLTProcessor $153;
226 changes: 226 additions & 0 deletions tool/renames.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
| dart:html | package:web |
| --- | --- |
| AbortPaymentEvent | |
| AccessibleNode | |
| AccessibleNodeList | |
| AnchorElement | HTMLAnchorElement |
| AnimationEffectReadOnly | |
| AnimationEffectTiming | |
| AnimationEffectTimingReadOnly | |
| ApplicationCache | |
| ApplicationCacheErrorEvent | |
| AreaElement | HTMLAreaElement |
| AudioElement | HTMLAudioElement |
| BackgroundFetchClickEvent | |
| BackgroundFetchedEvent | |
| BackgroundFetchFailEvent | |
| BackgroundFetchFetch | |
| BackgroundFetchSettledFetch | |
| BaseElement | HTMLBaseElement |
| BluetoothRemoteGattDescriptor | BluetoothRemoteGATTDescriptor |
| BodyElement | HTMLBodyElement |
| BRElement | HTMLBRElement |
| BudgetState | |
| ButtonElement | HTMLButtonElement |
| CanvasElement | HTMLCanvasElement |
| CDataSection | CDATASection |
| ContentElement | |
| Coordinates | |
| Css | CSS |
| CssCharsetRule | |
| CssConditionRule | CSSConditionRule |
| CssFontFaceRule | CSSFontFaceRule |
| CssGroupingRule | CSSGroupingRule |
| CssImageValue | CSSImageValue |
| CssImportRule | CSSImportRule |
| CssKeyframeRule | CSSKeyframeRule |
| CssKeyframesRule | CSSKeyframesRule |
| CssKeywordValue | CSSKeywordValue |
| CssMatrixComponent | CSSMatrixComponent |
| CssMediaRule | CSSMediaRule |
| CssNamespaceRule | CSSNamespaceRule |
| CssNumericValue | CSSNumericValue |
| CssPageRule | CSSPageRule |
| CssPerspective | CSSPerspective |
| CssPositionValue | |
| CssResourceValue | |
| CssRotation | |
| CssRule | CSSRule |
| CssScale | CSSScale |
| CssSkew | CSSSkew |
| CssStyleDeclaration | CSSStyleDeclaration |
| CssStyleRule | CSSStyleRule |
| CssStyleSheet | CSSStyleSheet |
| CssStyleValue | CSSStyleValue |
| CssSupportsRule | CSSSupportsRule |
| CssTransformComponent | CSSTransformComponent |
| CssTransformValue | CSSTransformValue |
| CssTranslation | |
| CssUnitValue | CSSUnitValue |
| CssUnparsedValue | CSSUnparsedValue |
| CssurlImageValue | |
| CssVariableReferenceValue | CSSVariableReferenceValue |
| CssViewportRule | |
| DataElement | HTMLDataElement |
| DataListElement | HTMLDataListElement |
| DeprecatedStorageInfo | |
| DeprecatedStorageQuota | |
| DeprecationReport | |
| DetailsElement | HTMLDetailsElement |
| DeviceAcceleration | |
| DeviceRotationRate | |
| DialogElement | HTMLDialogElement |
| DivElement | HTMLDivElement |
| DListElement | HTMLDListElement |
| DomError | |
| DomException | DOMException |
| DomImplementation | DOMImplementation |
| DomIterator | |
| DomMatrix | DOMMatrix |
| DomMatrixReadOnly | DOMMatrixReadOnly |
| DomParser | DOMParser |
| DomPoint | DOMPoint |
| DomPointReadOnly | DOMPointReadOnly |
| DomQuad | DOMQuad |
| DomRectList | DOMRectList |
| DomRectReadOnly | DOMRectReadOnly |
| DomStringList | DOMStringList |
| DomStringMap | DOMStringMap |
| DomTokenList | DOMTokenList |
| EmbedElement | HTMLEmbedElement |
| Entry | FileSystemEntry |
| FieldSetElement | HTMLFieldSetElement |
| FileEntry | FileSystemFileEntry |
| FileWriter | |
| ForeignFetchEvent | |
| FormElement | HTMLFormElement |
| Geoposition | GeolocationPosition |
| HeadElement | HTMLHeadElement |
| HeadingElement | HTMLHeadingElement |
| HRElement | HTMLHRElement |
| HtmlCollection | HTMLCollection |
| HtmlDocument | Document |
| HtmlElement | HTMLElement |
| HtmlFormControlsCollection | HTMLFormControlsCollection |
| HtmlHtmlElement | HTMLHtmlElement |
| HtmlHyperlinkElementUtils | HTMLHyperlinkElementUtils |
| HtmlOptionsCollection | HTMLOptionsCollection |
| HttpRequest | XMLHttpRequest |
| HttpRequestEventTarget | XMLHttpRequestEventTarget |
| HttpRequestUpload | XMLHttpRequestUpload |
| IFrameElement | HTMLIFrameElement |
| ImageElement | HTMLImageElement |
| InputElement | HTMLInputElement |
| InstallEvent | |
| InterventionReport | |
| KeyframeEffectReadOnly | |
| LabelElement | HTMLLabelElement |
| LegendElement | HTMLLegendElement |
| LIElement | HTMLLIElement |
| LinkElement | HTMLLinkElement |
| MapElement | HTMLMapElement |
| MediaElement | HTMLMediaElement |
| MediaKeysPolicy | |
| MediaStreamEvent | |
| MemoryInfo | |
| MenuElement | HTMLMenuElement |
| Metadata | |
| MetaElement | HTMLMetaElement |
| MeterElement | HTMLMeterElement |
| MidiAccess | MIDIAccess |
| MidiConnectionEvent | MIDIConnectionEvent |
| MidiInput | MIDIInput |
| MidiInputMap | MIDIInputMap |
| MidiMessageEvent | MIDIMessageEvent |
| MidiOutput | MIDIOutput |
| MidiOutputMap | MIDIOutputMap |
| MidiPort | MIDIPort |
| ModElement | HTMLModElement |
| NavigatorUserMediaError | |
| NoncedElement | |
| ObjectElement | HTMLObjectElement |
| OListElement | HTMLOListElement |
| OptGroupElement | HTMLOptGroupElement |
| OptionElement | HTMLOptionElement |
| OutputElement | HTMLOutputElement |
| ParagraphElement | HTMLParagraphElement |
| ParamElement | HTMLParamElement |
| PaymentAddress | |
| PaymentInstruments | |
| PictureElement | HTMLPictureElement |
| PositionError | GeolocationPositionError |
| PreElement | HTMLPreElement |
| ProgressElement | HTMLProgressElement |
| QuoteElement | HTMLQuoteElement |
| RtcCertificate | RTCCertificate |
| RtcDataChannel | RTCDataChannel |
| RtcDataChannelEvent | RTCDataChannelEvent |
| RtcDtmfSender | RTCDTMFSender |
| RtcDtmfToneChangeEvent | RTCDTMFToneChangeEvent |
| RtcIceCandidate | RTCIceCandidate |
| RtcLegacyStatsReport | |
| RtcPeerConnection | RTCPeerConnection |
| RtcPeerConnectionIceEvent | RTCPeerConnectionIceEvent |
| RtcRtpContributingSource | RTCRtpContributingSource |
| RtcRtpReceiver | RTCRtpReceiver |
| RtcRtpSender | RTCRtpSender |
| RtcSessionDescription | RTCSessionDescription |
| RtcStatsReport | RTCStatsReport |
| RtcStatsResponse | |
| RtcTrackEvent | RTCTrackEvent |
| ScriptElement | HTMLScriptElement |
| ScrollState | |
| SelectElement | HTMLSelectElement |
| ShadowElement | |
| SharedArrayBuffer | |
| SlotElement | HTMLSlotElement |
| SourceElement | HTMLSourceElement |
| SpanElement | HTMLSpanElement |
| SpeechRecognitionError | SpeechRecognitionErrorEvent |
| StyleElement | HTMLStyleElement |
| StyleMedia | |
| StylePropertyMapReadonly | StylePropertyMapReadOnly |
| TableCaptionElement | HTMLTableCaptionElement |
| TableColElement | HTMLTableColElement |
| TableElement | HTMLTableElement |
| TableRowElement | HTMLTableRowElement |
| TableSectionElement | HTMLTableSectionElement |
| TemplateElement | HTMLTemplateElement |
| TextAreaElement | HTMLTextAreaElement |
| TextEvent | |
| TimeElement | HTMLTimeElement |
| TitleElement | HTMLTitleElement |
| TrackDefault | |
| TrackDefaultList | |
| TrackElement | HTMLTrackElement |
| TrustedHtml | TrustedHTML |
| TrustedScriptUrl | TrustedScriptURL |
| TrustedUrl | |
| UListElement | HTMLUListElement |
| UnderlyingSourceBase | UnderlyingSource |
| UnknownElement | HTMLUnknownElement |
| Url | URL |
| UrlSearchParams | URLSearchParams |
| VideoElement | HTMLVideoElement |
| VR | |
| VRCoordinateSystem | |
| VRDevice | |
| VRDeviceEvent | |
| VRDisplay | |
| VRDisplayCapabilities | |
| VRDisplayEvent | |
| VREyeParameters | |
| VRFrameData | |
| VRFrameOfReference | |
| VRPose | |
| VRSession | |
| VRSessionEvent | |
| VRStageBounds | |
| VRStageBoundsPoint | |
| VRStageParameters | |
| VttCue | VTTCue |
| VttRegion | VTTRegion |
| WorkerPerformance | |
| XmlDocument | XMLDocument |
| XmlSerializer | XMLSerializer |
| XsltProcessor | XSLTProcessor |