From cf823e1ce8bee7aa954801a177bc446b05c6364e Mon Sep 17 00:00:00 2001 From: Jonas Finnemann Jensen Date: Thu, 21 Mar 2024 13:32:27 +0100 Subject: [PATCH] New download urls (#7576) * Caching for version listing API * Fix assertions * Fix tests * Fix test * New download URLs for package archives * regenerate code * Fix tests * Regenerate = false --- app/lib/frontend/handlers/headers.dart | 6 ++++ app/lib/frontend/handlers/pubapi.dart | 8 ++++- app/lib/frontend/handlers/pubapi.g.dart | 22 +++++++++++++ app/lib/shared/configuration.dart | 2 +- app/lib/shared/urls.dart | 5 +-- app/lib/tool/test_profile/import_source.dart | 4 ++- .../frontend/golden/pkg_versions_page.html | 6 ++-- .../frontend/handlers/custom_api_test.dart | 6 ++-- .../handlers/invalid_package_url_test.dart | 2 +- app/test/shared/urls_test.dart | 4 +-- app/test/task/end2end_test.dart | 16 +++++++--- .../oxygen/1.0.0/oxygen/MainClass-class.html | 26 +++++++-------- .../1.0.0/oxygen/MainClass/MainClass.html | 2 +- .../oxygen/1.0.0/oxygen/MainClass/text.html | 2 +- .../1.0.0/oxygen/MainClass/toLowerCase.html | 2 +- .../1.0.0/oxygen/MainClass/toString.html | 6 ++-- .../oxygen/1.0.0/oxygen/TypeEnum.html | 32 +++++++++---------- .../oxygen/TypeEnum/values-constant.html | 2 +- .../oxygen/2.0.0/oxygen/MainClass-class.html | 26 +++++++-------- .../2.0.0/oxygen/MainClass/MainClass.html | 2 +- .../oxygen/2.0.0/oxygen/MainClass/text.html | 2 +- .../2.0.0/oxygen/MainClass/toLowerCase.html | 2 +- .../2.0.0/oxygen/MainClass/toString.html | 6 ++-- .../oxygen/2.0.0/oxygen/TypeEnum.html | 32 +++++++++---------- .../oxygen/TypeEnum/values-constant.html | 2 +- .../oxygen/latest/oxygen/MainClass-class.html | 26 +++++++-------- .../latest/oxygen/MainClass/MainClass.html | 2 +- .../oxygen/latest/oxygen/MainClass/text.html | 2 +- .../latest/oxygen/MainClass/toLowerCase.html | 2 +- .../latest/oxygen/MainClass/toString.html | 6 ++-- .../oxygen/latest/oxygen/TypeEnum.html | 32 +++++++++---------- .../oxygen/TypeEnum/values-constant.html | 2 +- .../goldens/packages/oxygen/versions.html | 4 +-- 33 files changed, 173 insertions(+), 128 deletions(-) diff --git a/app/lib/frontend/handlers/headers.dart b/app/lib/frontend/handlers/headers.dart index 7d2414ef38..722927e517 100644 --- a/app/lib/frontend/handlers/headers.dart +++ b/app/lib/frontend/handlers/headers.dart @@ -69,6 +69,12 @@ class CacheHeaders { public: true, ); + /// Response that redirects to download URL for a package archive + static final packageDownloadApi = CacheHeaders._( + Duration(hours: 1), + public: true, + ); + /// The package name completion API endpoint serves the cached names /// of top packages. static final packageNameCompletion = CacheHeaders._( diff --git a/app/lib/frontend/handlers/pubapi.dart b/app/lib/frontend/handlers/pubapi.dart index 664b5aff94..dabe80fdb8 100644 --- a/app/lib/frontend/handlers/pubapi.dart +++ b/app/lib/frontend/handlers/pubapi.dart @@ -22,6 +22,7 @@ import '../../shared/urls.dart' as urls; import '../../task/backend.dart' show taskBackend; import 'account.dart'; import 'custom_api.dart'; +import 'headers.dart'; import 'listing.dart'; import 'package.dart'; import 'report.dart'; @@ -59,6 +60,7 @@ class PubApi { /// clients, so while this is deprecated we need to support it indefinitely. @EndPoint.get('/api/packages//versions//archive.tar.gz') @EndPoint.get('/packages//versions/.tar.gz') + @EndPoint.get('/api/archives/-.tar.gz') Future fetchPackage( Request request, String package, @@ -66,7 +68,11 @@ class PubApi { ) async { checkPackageVersionParams(package, version); return Response.seeOther( - await packageBackend.downloadUrl(package, version)); + await packageBackend.downloadUrl(package, version), + headers: { + ...CacheHeaders.packageDownloadApi(), + }, + ); } /// Start async upload. diff --git a/app/lib/frontend/handlers/pubapi.g.dart b/app/lib/frontend/handlers/pubapi.g.dart index d5a3e27568..28ab09cf3b 100644 --- a/app/lib/frontend/handlers/pubapi.g.dart +++ b/app/lib/frontend/handlers/pubapi.g.dart @@ -94,6 +94,28 @@ Router _$PubApiRouter(PubApi service) { } }, ); + router.add( + 'GET', + r'/api/archives/-.tar.gz', + ( + Request request, + String package, + String version, + ) async { + try { + final _$result = await service.fetchPackage( + request, + package, + version, + ); + return _$result; + } on ApiResponseException catch (e) { + return e.asApiResponse(); + } catch (e, st) { + return $utilities.unhandledError(e, st); + } + }, + ); router.add( 'GET', r'/api/packages/versions/new', diff --git a/app/lib/shared/configuration.dart b/app/lib/shared/configuration.dart index a40b7e34d0..a8c54d6326 100644 --- a/app/lib/shared/configuration.dart +++ b/app/lib/shared/configuration.dart @@ -405,7 +405,7 @@ class Configuration { uploadSignerServiceAccount: null, blockRobots: true, productionHosts: ['localhost'], - primaryApiUri: primaryApiUri ?? Uri.parse('https://pub.dartlang.org/'), + primaryApiUri: primaryApiUri ?? Uri.parse('https://pub.dev/'), primarySiteUri: primarySiteUri ?? Uri.parse('https://pub.dev/'), admins: [ AdminId( diff --git a/app/lib/shared/urls.dart b/app/lib/shared/urls.dart index 97803458f7..6659e3eb2e 100644 --- a/app/lib/shared/urls.dart +++ b/app/lib/shared/urls.dart @@ -143,8 +143,9 @@ String pkgActivityLogUrl(String package) => pkgPageUrl(package, pkgPageTab: PkgPageTab.activityLog); String pkgArchiveDownloadUrl(String package, String version, {Uri? baseUri}) { - final path = - '/packages/${Uri.encodeComponent(package)}/versions/${Uri.encodeComponent(version)}.tar.gz'; + final p = Uri.encodeComponent(package); + final v = Uri.encodeComponent(version); + final path = '/api/archives/$p-$v.tar.gz'; if (baseUri == null) { return path; } else { diff --git a/app/lib/tool/test_profile/import_source.dart b/app/lib/tool/test_profile/import_source.dart index c9d10edea6..74a7aaddd4 100644 --- a/app/lib/tool/test_profile/import_source.dart +++ b/app/lib/tool/test_profile/import_source.dart @@ -65,8 +65,10 @@ class _PubDevImportSource implements ImportSource { final file = File(p.join(archiveCachePath, archiveName)); // download package archive if not already in the cache if (!await file.exists()) { + // TODO: Use archive_url from version-listing, that is stable! final rs = await _client.get(Uri.parse( - '${urls.siteRoot}${urls.pkgArchiveDownloadUrl(package, version)}')); + '${urls.siteRoot}/packages/$package/versions/$version.tar.gz', + )); await file.parent.create(recursive: true); await file.writeAsBytes(rs.bodyBytes); } diff --git a/app/test/frontend/golden/pkg_versions_page.html b/app/test/frontend/golden/pkg_versions_page.html index 769278b99a..bc87a0c2b5 100644 --- a/app/test/frontend/golden/pkg_versions_page.html +++ b/app/test/frontend/golden/pkg_versions_page.html @@ -252,7 +252,7 @@

Stable versions of oxygen

- + Download oxygen 1.2.0 archive @@ -270,7 +270,7 @@

Stable versions of oxygen

- + Download oxygen 1.0.0 archive @@ -315,7 +315,7 @@

Prerelease versions of oxygen

- + Download oxygen 2.0.0-dev archive diff --git a/app/test/frontend/handlers/custom_api_test.dart b/app/test/frontend/handlers/custom_api_test.dart index 23c792b802..bb99219a2b 100644 --- a/app/test/frontend/handlers/custom_api_test.dart +++ b/app/test/frontend/handlers/custom_api_test.dart @@ -49,7 +49,7 @@ void main() { 'topics': ['chemical-element'], }, 'archive_url': - '${activeConfiguration.primaryApiUri}/packages/oxygen/versions/1.2.0.tar.gz', + '${activeConfiguration.primaryApiUri}/api/archives/oxygen-1.2.0.tar.gz', 'package_url': '${activeConfiguration.primaryApiUri}/api/packages/oxygen', 'url': @@ -80,7 +80,7 @@ void main() { 'topics': ['chemical-element'], }, 'archive_url': - '${activeConfiguration.primaryApiUri}/packages/flutter_titanium/versions/1.10.0.tar.gz', + '${activeConfiguration.primaryApiUri}/api/archives/flutter_titanium-1.10.0.tar.gz', 'package_url': '${activeConfiguration.primaryApiUri}/api/packages/flutter_titanium', 'url': @@ -109,7 +109,7 @@ void main() { 'topics': ['chemical-element'], }, 'archive_url': - '${activeConfiguration.primaryApiUri}/packages/neon/versions/1.0.0.tar.gz', + '${activeConfiguration.primaryApiUri}/api/archives/neon-1.0.0.tar.gz', 'package_url': '${activeConfiguration.primaryApiUri}/api/packages/neon', 'url': diff --git a/app/test/frontend/handlers/invalid_package_url_test.dart b/app/test/frontend/handlers/invalid_package_url_test.dart index 29cd6cba04..2c7b04dfe6 100644 --- a/app/test/frontend/handlers/invalid_package_url_test.dart +++ b/app/test/frontend/handlers/invalid_package_url_test.dart @@ -31,7 +31,7 @@ void main() { expect(urls, contains('/packages//versions/')); expect(urls, contains('/api/packages/')); // this a naive assertion that fails, if new end-points are introduced! - expect(urls, hasLength(43), reason: 'check if new end-points was added'); + expect(urls, hasLength(44), reason: 'check if new end-points was added'); }); testWithProfile( diff --git a/app/test/shared/urls_test.dart b/app/test/shared/urls_test.dart index 385542e69c..05af48336d 100644 --- a/app/test/shared/urls_test.dart +++ b/app/test/shared/urls_test.dart @@ -193,14 +193,14 @@ void main() { group('archive url', () { test('without base uri', () { expect(pkgArchiveDownloadUrl('foo', '1.0.0+1'), - '/packages/foo/versions/1.0.0%2B1.tar.gz'); + '/api/archives/foo-1.0.0%2B1.tar.gz'); }); test('with base uri', () { expect( pkgArchiveDownloadUrl('foo', '1.0.0+1', baseUri: Uri.parse('https://pub.dev/')), - 'https://pub.dev/packages/foo/versions/1.0.0%2B1.tar.gz', + 'https://pub.dev/api/archives/foo-1.0.0%2B1.tar.gz', ); }); }); diff --git a/app/test/task/end2end_test.dart b/app/test/task/end2end_test.dart index 4b05c1a534..1015b5414d 100644 --- a/app/test/task/end2end_test.dart +++ b/app/test/task/end2end_test.dart @@ -235,12 +235,20 @@ void expectGoldenFile( expect(xmlContent.split('\n'), golden.split('\n'), reason: 'in $fileName'); } +final _sdkVersionsToReplace = [ + runtimeSdkVersion, + toolStableDartSdkVersion, + Platform.version.split(' ').first, +]; + final _goldenReplacements = { 'Pana $panaVersion,': 'Pana %%pana-version%%,', - 'Dart $runtimeSdkVersion': - 'Dart %%stable-dart-version%%', - 'Dart $toolStableDartSdkVersion': - 'Dart %%stable-dart-version%%', + for (final sdkVersion in _sdkVersionsToReplace) + 'api.dart.dev/stable/$sdkVersion/': + 'api.dart.dev/stable/%%stable-dart-version%%/', + for (final sdkVersion in _sdkVersionsToReplace) + 'Dart $sdkVersion': + 'Dart %%stable-dart-version%%', '/static/hash-${staticFileCache.etag}/': '/static/hash-%%etag%%/', _timestampPattern: '%%timestamp%%', _escapedTimestampPattern: '%%escaped-timestamp%%', diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html index 13eb0a0fb9..b3b4fb6d61 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass-class.html @@ -71,7 +71,7 @@

Constructors

( - String + String text @@ -86,11 +86,11 @@

Properties

- hashCode + hashCode → - int + int
@@ -102,11 +102,11 @@

Properties

- runtimeType + runtimeType → - Type + Type
@@ -122,7 +122,7 @@

Properties

→ - String + String
@@ -137,14 +137,14 @@

Methods

- noSuchMethod + noSuchMethod ( - Invocation + Invocation invocation @@ -168,7 +168,7 @@

Methods

) → - String + String
@@ -187,7 +187,7 @@

Methods

) → - String + String @@ -204,21 +204,21 @@

Operators

- operator == + operator == ( - Object + Object other ) → - bool + bool
diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html index 9eee70a946..59f0108eed 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/MainClass.html @@ -71,7 +71,7 @@

  • - String + String text diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html index f5b485f965..eebf6798c6 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/text.html @@ -64,7 +64,7 @@

    - String + String text
    final diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html index 5f5cea4f4e..b26c6d34cb 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toLowerCase.html @@ -65,7 +65,7 @@

    - String + String toLowerCase ( diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html index 4a02e77c61..28321ce524 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/MainClass/toString.html @@ -68,12 +68,12 @@

    1. @ - override + override

    - String + String toString ( @@ -89,7 +89,7 @@

    Some classes have a default textual representation, often paired with a static parse function (like - int.parse + int.parse ). These classes will provide the textual representation as their string representation.

    diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html index 95cd9ca6c4..eb5a7815b8 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum.html @@ -66,10 +66,10 @@

    @@ -116,11 +116,11 @@

    Properties

    - hashCode + hashCode → - int + int
    @@ -132,11 +132,11 @@

    Properties

    - index + index → - int + int
    @@ -148,11 +148,11 @@

    Properties

    - runtimeType + runtimeType → - Type + Type
    @@ -169,14 +169,14 @@

    Methods

    - noSuchMethod + noSuchMethod ( - Invocation + Invocation invocation @@ -192,7 +192,7 @@

    Methods

    - toString + toString ( @@ -200,7 +200,7 @@

    Methods

    ) → - String + String
    @@ -217,21 +217,21 @@

    Operators

    - operator == + operator == ( - Object + Object other ) → - bool + bool
    @@ -252,7 +252,7 @@

    Constants

    → const - List + List < diff --git a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html index f63af411b1..e88d1d5c64 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/1.0.0/oxygen/TypeEnum/values-constant.html @@ -64,7 +64,7 @@

    - List + List < diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html index 18669843aa..98147776fb 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass-class.html @@ -69,7 +69,7 @@

    Constructors

    ( - String + String text @@ -84,11 +84,11 @@

    Properties

    - hashCode + hashCode → - int + int
    @@ -100,11 +100,11 @@

    Properties

    - runtimeType + runtimeType → - Type + Type
    @@ -120,7 +120,7 @@

    Properties

    → - String + String
    @@ -135,14 +135,14 @@

    Methods

    - noSuchMethod + noSuchMethod ( - Invocation + Invocation invocation @@ -166,7 +166,7 @@

    Methods

    ) → - String + String
    @@ -185,7 +185,7 @@

    Methods

    ) → - String + String @@ -202,21 +202,21 @@

    Operators

    - operator == + operator == ( - Object + Object other ) → - bool + bool
    diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html index d67aabfb61..8343db801d 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/MainClass.html @@ -70,7 +70,7 @@

  • - String + String text diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html index 158f8bde9b..32b076b724 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/text.html @@ -63,7 +63,7 @@

  • - String + String text
    final diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html index 08d55c8988..bee5300c50 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toLowerCase.html @@ -64,7 +64,7 @@

    - String + String toLowerCase ( diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html index efe8f688a4..f488a973b5 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/MainClass/toString.html @@ -67,12 +67,12 @@

    1. @ - override + override

    - String + String toString ( @@ -88,7 +88,7 @@

    Some classes have a default textual representation, often paired with a static parse function (like - int.parse + int.parse ). These classes will provide the textual representation as their string representation.

    diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html index 698f15300b..168d0b5c14 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum.html @@ -64,10 +64,10 @@

    @@ -114,11 +114,11 @@

    Properties

    - hashCode + hashCode → - int + int
    @@ -130,11 +130,11 @@

    Properties

    - index + index → - int + int
    @@ -146,11 +146,11 @@

    Properties

    - runtimeType + runtimeType → - Type + Type
    @@ -167,14 +167,14 @@

    Methods

    - noSuchMethod + noSuchMethod ( - Invocation + Invocation invocation @@ -190,7 +190,7 @@

    Methods

    - toString + toString ( @@ -198,7 +198,7 @@

    Methods

    ) → - String + String
    @@ -215,21 +215,21 @@

    Operators

    - operator == + operator == ( - Object + Object other ) → - bool + bool
    @@ -250,7 +250,7 @@

    Constants

    → const - List + List < diff --git a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html index c0104ab089..35ea21332c 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/2.0.0/oxygen/TypeEnum/values-constant.html @@ -63,7 +63,7 @@

    - List + List < diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html index 7be7748fd5..a23a399179 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass-class.html @@ -69,7 +69,7 @@

    Constructors

    ( - String + String text @@ -84,11 +84,11 @@

    Properties

    - hashCode + hashCode → - int + int
    @@ -100,11 +100,11 @@

    Properties

    - runtimeType + runtimeType → - Type + Type
    @@ -120,7 +120,7 @@

    Properties

    → - String + String
    @@ -135,14 +135,14 @@

    Methods

    - noSuchMethod + noSuchMethod ( - Invocation + Invocation invocation @@ -166,7 +166,7 @@

    Methods

    ) → - String + String
    @@ -185,7 +185,7 @@

    Methods

    ) → - String + String @@ -202,21 +202,21 @@

    Operators

    - operator == + operator == ( - Object + Object other ) → - bool + bool
    diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html index 42b7c7530b..eb47d37525 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/MainClass.html @@ -70,7 +70,7 @@

  • - String + String text diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html index 149325f831..5aa56037de 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/text.html @@ -63,7 +63,7 @@

  • - String + String text
    final diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html index e6889aff9d..8f17620d03 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toLowerCase.html @@ -64,7 +64,7 @@

    - String + String toLowerCase ( diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html index f6afd7d40a..b146daad10 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/MainClass/toString.html @@ -67,12 +67,12 @@

    1. @ - override + override

    - String + String toString ( @@ -88,7 +88,7 @@

    Some classes have a default textual representation, often paired with a static parse function (like - int.parse + int.parse ). These classes will provide the textual representation as their string representation.

    diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html index 4736e6ad04..1d018c53be 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum.html @@ -64,10 +64,10 @@

    @@ -114,11 +114,11 @@

    Properties

    - hashCode + hashCode → - int + int
    @@ -130,11 +130,11 @@

    Properties

    - index + index → - int + int
    @@ -146,11 +146,11 @@

    Properties

    - runtimeType + runtimeType → - Type + Type
    @@ -167,14 +167,14 @@

    Methods

    - noSuchMethod + noSuchMethod ( - Invocation + Invocation invocation @@ -190,7 +190,7 @@

    Methods

    - toString + toString ( @@ -198,7 +198,7 @@

    Methods

    ) → - String + String
    @@ -215,21 +215,21 @@

    Operators

    - operator == + operator == ( - Object + Object other ) → - bool + bool
    @@ -250,7 +250,7 @@

    Constants

    → const - List + List < diff --git a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html index 7aae532bd7..36c1faaa4d 100644 --- a/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html +++ b/app/test/task/testdata/goldens/documentation/oxygen/latest/oxygen/TypeEnum/values-constant.html @@ -63,7 +63,7 @@

    - List + List < diff --git a/app/test/task/testdata/goldens/packages/oxygen/versions.html b/app/test/task/testdata/goldens/packages/oxygen/versions.html index da07a04776..85c82208f3 100644 --- a/app/test/task/testdata/goldens/packages/oxygen/versions.html +++ b/app/test/task/testdata/goldens/packages/oxygen/versions.html @@ -238,7 +238,7 @@

    Stable versions of oxygen

    - + Download oxygen 2.0.0 archive @@ -260,7 +260,7 @@

    Stable versions of oxygen

    - + Download oxygen 1.0.0 archive