Skip to content

Commit c0aedb3

Browse files
committed
Restrict Flutter SDK libraries in the search index.
1 parent 5004edb commit c0aedb3

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

app/lib/search/sdk_mem_index.dart

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,22 @@ const _defaultApiPageDirWeights = {
4242
'material/Icons': 0.25,
4343
};
4444

45+
/// The list of libraries that are to be exposed as part of the Flutter SDK index.
46+
const _flutterLibraryAllowlist = {
47+
'animation',
48+
'cupertino',
49+
'foundation',
50+
'gestures',
51+
'material',
52+
'painting',
53+
'physics',
54+
'rendering',
55+
'scheduler',
56+
'semantics',
57+
'services',
58+
'widgets',
59+
};
60+
4561
final _logger = Logger('search.dart_sdk_mem_index');
4662
final _dartUri = Uri.parse('https://api.dart.dev/stable/latest/');
4763
final _flutterUri = Uri.parse('https://api.flutter.dev/flutter/');
@@ -88,7 +104,14 @@ class SdkMemIndex implements SdkIndex {
88104
Map<String, double>? apiPageDirWeights,
89105
}) : _apiPageDirWeights = apiPageDirWeights ?? _defaultApiPageDirWeights {
90106
_addDartdocIndex('dart', _dartUri, dartIndex);
91-
_addDartdocIndex('flutter', _flutterUri, flutterIndex);
107+
_addDartdocIndex(
108+
'flutter',
109+
_flutterUri,
110+
flutterIndex,
111+
libraryFn: (library) =>
112+
library.startsWith('flutter_') ||
113+
_flutterLibraryAllowlist.contains(library),
114+
);
92115
}
93116

94117
static final dartSdkIndexJsonUri =
@@ -99,8 +122,9 @@ class SdkMemIndex implements SdkIndex {
99122
void _addDartdocIndex(
100123
String sdk,
101124
Uri baseUri,
102-
DartdocIndex index,
103-
) {
125+
DartdocIndex index, {
126+
bool Function(String library)? libraryFn,
127+
}) {
104128
final textsPerLibrary = <String, Map<String, String>>{};
105129
final baseUris = <String, Uri>{};
106130
final descriptions = <String, String>{};
@@ -109,7 +133,16 @@ class SdkMemIndex implements SdkIndex {
109133
final library = f.qualifiedName?.split('.').first;
110134
if (library == null) continue;
111135
if (f.href == null) continue;
112-
if (_libraries.containsKey(library)) continue;
136+
// Skips libraries that were added in a previous call of this method,
137+
// e.g. Dart SDK libraries are kept as-is and Flutter SDK libraries
138+
// are not overriding them here.
139+
if (_libraries.containsKey(library)) {
140+
continue;
141+
}
142+
// Skips libraries that are not explicitly allowed.
143+
if (libraryFn != null && !libraryFn(library)) {
144+
continue;
145+
}
113146
if (f.isLibrary) {
114147
baseUris[library] = baseUri.resolve(f.href!);
115148

0 commit comments

Comments
 (0)