@@ -27,14 +27,16 @@ import 'ng_deps_linker.dart';
2727/// Returns an empty [NgMeta] if there are no `Directive` -annotated classes or
2828/// `DirectiveAlias` annotated constants in `entryPoint` .
2929Future <NgMeta > linkDirectiveMetadata (
30- AssetReader reader, AssetId entryPoint ) async {
31- var ngMeta = await _readNgMeta (reader, entryPoint );
30+ AssetReader reader, AssetId assetId ) async {
31+ var ngMeta = await _readNgMeta (reader, assetId );
3232 if (ngMeta == null || ngMeta.isEmpty) return null ;
3333
3434 await Future .wait ([
35- linkNgDeps (ngMeta.ngDeps, reader, entryPoint, _urlResolver),
36- _linkDirectiveMetadataRecursive (
37- ngMeta, reader, entryPoint, new Set <String >())
35+ linkNgDeps (ngMeta.ngDeps, reader, assetId, _urlResolver),
36+ logElapsedAsync (() async {
37+ await _linkRecursive (ngMeta, reader, assetId, new Set <String >());
38+ return ngMeta;
39+ }, operationName: 'linkDirectiveMetadata' , assetId: assetId)
3840 ]);
3941 return ngMeta;
4042}
@@ -50,39 +52,32 @@ Future<NgMeta> _readNgMeta(AssetReader reader, AssetId ngMetaAssetId) async {
5052
5153final _urlResolver = const TransformerUrlResolver ();
5254
53- Future < NgMeta > _linkDirectiveMetadataRecursive (NgMeta ngMeta,
54- AssetReader reader, AssetId assetId, Set <String > seen) async {
55+ Future _linkRecursive (NgMeta ngMeta, AssetReader reader, AssetId assetId ,
56+ Set <String > seen) async {
5557 if (ngMeta == null ||
5658 ngMeta.ngDeps == null ||
5759 ngMeta.ngDeps.exports == null ) {
5860 return ngMeta;
5961 }
6062 var assetUri = toAssetUri (assetId);
6163
62- return Future
63- .wait (ngMeta.ngDeps.exports
64- .where ((export) => ! isDartCoreUri (export.uri))
65- .map ((export) =>
66- _urlResolver.resolve (assetUri, toMetaExtension (export.uri)))
67- .where ((uri) => ! seen.contains (uri))
68- .map ((uri) async {
64+ return Future .wait (ngMeta.ngDeps.exports
65+ .where ((export) => ! isDartCoreUri (export.uri))
66+ .map ((export) =>
67+ _urlResolver.resolve (assetUri, toMetaExtension (export.uri)))
68+ .where ((uri) => ! seen.contains (uri))
69+ .map ((uri) async {
6970 seen.add (uri);
7071 try {
7172 final exportAssetId = fromUri (uri);
72- if (await reader.hasInput (exportAssetId)) {
73- var exportNgMetaJson = await reader.readAsString (exportAssetId);
74- if (exportNgMetaJson == null ) return null ;
75- var exportNgMeta = new NgMeta .fromJson (JSON .decode (exportNgMetaJson));
76- await _linkDirectiveMetadataRecursive (
77- exportNgMeta, reader, exportAssetId, seen);
78- if (exportNgMeta != null ) {
79- ngMeta.addAll (exportNgMeta);
80- }
73+ final exportNgMeta = await _readNgMeta (reader, exportAssetId);
74+ if (exportNgMeta != null ) {
75+ await _linkRecursive (exportNgMeta, reader, exportAssetId, seen);
76+ ngMeta.addAll (exportNgMeta);
8177 }
8278 } catch (err, st) {
8379 // Log and continue.
8480 logger.warning ('Failed to fetch $uri . Message: $err .\n $st ' );
8581 }
86- }))
87- .then ((_) => ngMeta);
82+ }));
8883}
0 commit comments