From c4c370462b0cc2af23617171396c4b1cd8c8c18a Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Tue, 20 May 2025 13:33:11 +0200 Subject: [PATCH 1/2] Merge sdk and baseUri into the SDK index's _Library object. --- app/lib/search/sdk_mem_index.dart | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/app/lib/search/sdk_mem_index.dart b/app/lib/search/sdk_mem_index.dart index dc7884b520..e00771de4c 100644 --- a/app/lib/search/sdk_mem_index.dart +++ b/app/lib/search/sdk_mem_index.dart @@ -32,8 +32,6 @@ const _defaultApiPageDirWeights = { /// In-memory index for SDK library search queries. class SdkMemIndex { - final String _sdk; - final Uri _baseUri; final _libraries = {}; final Map _apiPageDirWeights; @@ -43,10 +41,8 @@ class SdkMemIndex { required DartdocIndex index, Set? allowedLibraries, Map? apiPageDirWeights, - }) : _sdk = sdk, - _baseUri = baseUri, - _apiPageDirWeights = apiPageDirWeights ?? _defaultApiPageDirWeights { - _addDartdocIndex(index, allowedLibraries); + }) : _apiPageDirWeights = apiPageDirWeights ?? _defaultApiPageDirWeights { + _addDartdocIndex(sdk, baseUri, index, allowedLibraries); } static SdkMemIndex dart({required DartdocIndex index}) { @@ -72,11 +68,13 @@ class SdkMemIndex { Uri.parse('https://api.flutter.dev/flutter/index.json'); void _addDartdocIndex( + String sdk, + Uri baseUri, DartdocIndex index, Set? allowedLibraries, ) { final textsPerLibrary = >{}; - final baseUrls = {}; + final baseUris = {}; final descriptions = {}; for (final f in index.entries) { @@ -89,7 +87,7 @@ class SdkMemIndex { continue; } if (f.isLibrary) { - baseUrls[library] = _baseUri.resolve(f.href!).toString(); + baseUris[library] = baseUri.resolve(f.href!); final desc = f.desc?.replaceAll(RegExp(r'\s+'), ' ').trim(); if (desc != null && desc.isNotEmpty) { @@ -105,8 +103,9 @@ class SdkMemIndex { } for (final e in textsPerLibrary.entries) { _libraries[e.key] = _Library( + sdk: sdk, name: e.key, - baseUrl: baseUrls[e.key], + baseUri: baseUris[e.key] ?? baseUri, description: descriptions[e.key], tokenIndex: TokenIndex.fromMap(e.value), ); @@ -156,16 +155,16 @@ class SdkMemIndex { .take(limit) .where((h) => h.score >= minScore) .map((hit) => SdkLibraryHit( - sdk: _sdk, + sdk: hit.library.sdk, library: hit.library.name, description: hit.library.description, - url: hit.library.baseUrl ?? _baseUri.toString(), + url: hit.library.url, score: hit.score, apiPages: hit.top.entries .map( (e) => ApiPageRef( path: e.key, - url: _baseUri.resolve(e.key).toString(), + url: hit.library.baseUri.resolve(e.key).toString(), ), ) .toList(), @@ -188,18 +187,21 @@ class _Hit { } class _Library { + final String sdk; final String name; - final String? baseUrl; + final Uri baseUri; final String? description; final TokenIndex tokenIndex; _Library({ + required this.sdk, required this.name, - required this.baseUrl, + required this.baseUri, required this.description, required this.tokenIndex, }); + late final url = baseUri.toString(); late final weight = _libraryWeights[name] ?? 1.0; late final lastNamePart = name.split(':').last; } From 09a1d9357a8b48d2ad25535745d3eb83713f6f25 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Tue, 20 May 2025 13:54:11 +0200 Subject: [PATCH 2/2] Fix base Uri issue. --- app/lib/search/sdk_mem_index.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/lib/search/sdk_mem_index.dart b/app/lib/search/sdk_mem_index.dart index e00771de4c..b3d28331ea 100644 --- a/app/lib/search/sdk_mem_index.dart +++ b/app/lib/search/sdk_mem_index.dart @@ -104,8 +104,9 @@ class SdkMemIndex { for (final e in textsPerLibrary.entries) { _libraries[e.key] = _Library( sdk: sdk, + sdkBaseUri: baseUri, name: e.key, - baseUri: baseUris[e.key] ?? baseUri, + libraryUrl: (baseUris[e.key] ?? baseUri).toString(), description: descriptions[e.key], tokenIndex: TokenIndex.fromMap(e.value), ); @@ -158,13 +159,13 @@ class SdkMemIndex { sdk: hit.library.sdk, library: hit.library.name, description: hit.library.description, - url: hit.library.url, + url: hit.library.libraryUrl, score: hit.score, apiPages: hit.top.entries .map( (e) => ApiPageRef( path: e.key, - url: hit.library.baseUri.resolve(e.key).toString(), + url: hit.library.sdkBaseUri.resolve(e.key).toString(), ), ) .toList(), @@ -188,20 +189,21 @@ class _Hit { class _Library { final String sdk; + final Uri sdkBaseUri; final String name; - final Uri baseUri; + final String libraryUrl; final String? description; final TokenIndex tokenIndex; _Library({ required this.sdk, + required this.sdkBaseUri, required this.name, - required this.baseUri, + required this.libraryUrl, required this.description, required this.tokenIndex, }); - late final url = baseUri.toString(); late final weight = _libraryWeights[name] ?? 1.0; late final lastNamePart = name.split(':').last; }