@@ -22,10 +22,11 @@ import 'package:stream_transform/stream_transform.dart';
22
22
/// ```
23
23
///
24
24
/// Doesn't implement [AssetReader] : for cases that need an [AssetReader] ,
25
- /// use this class to read the files then write them into an
26
- /// `InMemoryAssetReaderWriter ` .
25
+ /// use this class to read the files then write them into a `TestReaderWriter` .
26
+ /// To copy all the sources see `TestReaderWriter.testing.loadIsolateSources ` .
27
27
class PackageAssetReader {
28
- final PackageConfig _packageConfig;
28
+ /// The package config.
29
+ final PackageConfig packageConfig;
29
30
30
31
/// What package is the originating build occurring in.
31
32
final String ? _rootPackage;
@@ -39,7 +40,7 @@ class PackageAssetReader {
39
40
/// new PackageAssetReader(
40
41
/// await loadPackageConfigUri(await Isolate.packageConfig));
41
42
/// ```
42
- PackageAssetReader (this ._packageConfig , [this ._rootPackage]);
43
+ PackageAssetReader (this .packageConfig , [this ._rootPackage]);
43
44
44
45
/// A [PackageAssetReader] with a single [packageRoot] configured.
45
46
///
@@ -96,7 +97,7 @@ class PackageAssetReader {
96
97
File ? _resolve (AssetId id) {
97
98
final uri = id.uri;
98
99
if (uri.isScheme ('package' )) {
99
- final uri = _packageConfig .resolve (id.uri);
100
+ final uri = packageConfig .resolve (id.uri);
100
101
if (uri != null ) {
101
102
return File .fromUri (uri);
102
103
}
@@ -112,7 +113,7 @@ class PackageAssetReader {
112
113
final rootPackage = _rootPackage;
113
114
final root =
114
115
rootPackage != null
115
- ? _packageConfig [rootPackage]? .root.toFilePath ()
116
+ ? packageConfig [rootPackage]? .root.toFilePath ()
116
117
: null ;
117
118
if (root != null && Directory (p.join (root, 'lib' )).existsSync ()) {
118
119
return root;
@@ -129,26 +130,33 @@ class PackageAssetReader {
129
130
'explicit `package`.' ,
130
131
);
131
132
}
132
- var packageLibDir = _packageConfig [package]? .packageUriRoot;
133
+ var packageLibDir = packageConfig [package]? .packageUriRoot;
133
134
if (packageLibDir == null ) return const Stream .empty ();
134
-
135
- var packageFiles = Directory .fromUri (packageLibDir)
136
- .list (recursive: true )
137
- .whereType <File >()
138
- .map (
139
- (f) =>
140
- p.join ('lib' , p.relative (f.path, from: p.fromUri (packageLibDir))),
141
- );
135
+ var result = const Stream <String >.empty ();
136
+ final directory = Directory .fromUri (packageLibDir);
137
+ if (directory.existsSync ()) {
138
+ result = result.merge (
139
+ Directory .fromUri (packageLibDir)
140
+ .list (recursive: true )
141
+ .whereType <File >()
142
+ .map (
143
+ (f) => p.join (
144
+ 'lib' ,
145
+ p.relative (f.path, from: p.fromUri (packageLibDir)),
146
+ ),
147
+ ),
148
+ );
149
+ }
142
150
if (package == _rootPackage) {
143
- packageFiles = packageFiles .merge (
151
+ result = result .merge (
144
152
Directory (_rootPackagePath)
145
153
.list (recursive: true )
146
154
.whereType <File >()
147
155
.map ((f) => p.relative (f.path, from: _rootPackagePath))
148
156
.where ((p) => ! (p.startsWith ('packages/' ) || p.startsWith ('lib/' ))),
149
157
);
150
158
}
151
- return packageFiles .where (glob.matches).map ((p) => AssetId (package! , p));
159
+ return result .where (glob.matches).map ((p) => AssetId (package! , p));
152
160
}
153
161
154
162
Future <bool > canRead (AssetId id) =>
0 commit comments