@@ -170,14 +170,10 @@ class MetadataProvider {
170
170
return _moduleToModulePath.keys.toList ();
171
171
}
172
172
173
- /// Compute metadata information after reading the metadata contents.
174
- ///
175
- /// If [hotReload] is true, skips adding the SDK metadata and caches the
176
- /// computed [ModuleMetadata] , returning the resulting cache.
177
- ///
178
- /// Otherwise, adds all metadata and returns null.
179
- Future <Map <String , ModuleMetadata >?> _processMetadata (bool hotReload) async {
180
- final modules = hotReload ? < String , ModuleMetadata > {} : null ;
173
+ /// Compute metadata information after reading the metadata contents and
174
+ /// return a map from module names to their [ModuleMetadata] .
175
+ Future <Map <String , ModuleMetadata >> _processMetadata () async {
176
+ final modules = < String , ModuleMetadata > {};
181
177
// The merged metadata resides next to the entrypoint.
182
178
// Assume that <name>.bootstrap.js has <name>.ddc_merged_metadata
183
179
if (entrypoint.endsWith ('.bootstrap.js' )) {
@@ -188,8 +184,6 @@ class MetadataProvider {
188
184
);
189
185
final merged = await _assetReader.metadataContents (serverPath);
190
186
if (merged != null ) {
191
- // We can't hot reload the SDK yet, so no need to invalidate this data.
192
- if (! hotReload) _addSdkMetadata ();
193
187
for (final contents in merged.split ('\n ' )) {
194
188
try {
195
189
if (contents.isEmpty ||
@@ -201,11 +195,7 @@ class MetadataProvider {
201
195
moduleJson as Map <String , dynamic >,
202
196
);
203
197
final moduleName = metadata.name;
204
- if (hotReload) {
205
- modules! [moduleName] = metadata;
206
- } else {
207
- _addMetadata (metadata);
208
- }
198
+ modules[moduleName] = metadata;
209
199
_logger.fine ('Loaded debug metadata for module: $moduleName ' );
210
200
} catch (e) {
211
201
_logger.warning ('Failed to read metadata: $e ' );
@@ -217,9 +207,13 @@ class MetadataProvider {
217
207
return modules;
218
208
}
219
209
220
- /// Process all metadata and compute caches once.
210
+ /// Process all metadata, including SDK metadata, and compute caches once.
221
211
Future <void > _initialize () async {
222
- await _metadataMemoizer.runOnce (() => _processMetadata (false ));
212
+ await _metadataMemoizer.runOnce (() async {
213
+ final metadata = await _processMetadata ();
214
+ _addSdkMetadata ();
215
+ metadata.values.forEach (_addMetadata);
216
+ });
223
217
}
224
218
225
219
/// Given a map of hot reloaded modules mapped to their respective libraries,
@@ -231,7 +225,7 @@ class MetadataProvider {
231
225
Future <ModifiedModuleReport > reinitializeAfterHotReload (
232
226
Map <String , List > reloadedModulesToLibraries,
233
227
) async {
234
- final modules = ( await _processMetadata (true )) ! ;
228
+ final modules = await _processMetadata () ;
235
229
final invalidatedLibraries = < String > {};
236
230
void invalidateLibrary (String libraryImportUri) {
237
231
invalidatedLibraries.add (libraryImportUri);
0 commit comments