2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
+ import 'package:build_runner_core/build_runner_core.dart' ;
6
+
5
7
import '../asset/reader.dart' ;
8
+ import '../asset/writer.dart' ;
6
9
import 'asset_finder.dart' ;
7
10
import 'asset_path_provider.dart' ;
8
11
import 'filesystem.dart' ;
9
12
import 'filesystem_cache.dart' ;
13
+ import 'generated_asset_hider.dart' ;
10
14
import 'reader_writer.dart' ;
11
15
12
16
/// Provides access to the state backing an [AssetReader] .
13
17
extension AssetReaderStateExtension on AssetReader {
14
- /// Returns a new instance with optionally updated [cache] .
18
+ /// Returns a new instance with optionally updated [cache] and/or [generatedAssetHider] .
15
19
AssetReaderWriter copyWith ({
16
- AssetPathProvider ? assetPathProvider,
17
20
FilesystemCache ? cache,
21
+ GeneratedAssetHider ? generatedAssetHider,
18
22
}) {
19
23
_requireIsAssetReaderState ();
20
24
return (this as AssetReaderState ).copyWith (
21
- assetPathProvider: assetPathProvider,
22
25
cache: cache,
26
+ generatedAssetHider: generatedAssetHider,
23
27
);
24
28
}
25
29
30
+ AssetFinder get assetFinder {
31
+ _requireIsAssetReaderState ();
32
+ return (this as AssetReaderState ).assetFinder;
33
+ }
34
+
35
+ AssetPathProvider get assetPathProvider {
36
+ _requireIsAssetReaderState ();
37
+ return (this as AssetReaderState ).assetPathProvider;
38
+ }
39
+
40
+ GeneratedAssetHider get generatedAssetHider {
41
+ _requireIsAssetReaderState ();
42
+ return (this as AssetReaderState ).generatedAssetHider;
43
+ }
44
+
26
45
Filesystem get filesystem {
27
46
_requireIsAssetReaderState ();
28
47
return (this as AssetReaderState ).filesystem;
@@ -33,14 +52,25 @@ extension AssetReaderStateExtension on AssetReader {
33
52
return (this as AssetReaderState ).cache;
34
53
}
35
54
36
- AssetFinder get assetFinder {
37
- _requireIsAssetReaderState ();
38
- return (this as AssetReaderState ).assetFinder;
55
+ /// Throws if `this` is not an [AssetReaderState] .
56
+ void _requireIsAssetReaderState () {
57
+ if (this is ! AssetReaderState ) {
58
+ throw StateError (
59
+ '`AssetReader` must implement `AssetReaderState`: $this ' ,
60
+ );
61
+ }
39
62
}
63
+ }
40
64
41
- AssetPathProvider get assetPathProvider {
65
+ /// Provides access to the state backing an [AssetWriter] .
66
+ extension AssetWriterStateExtension on RunnerAssetWriter {
67
+ /// Returns a new instance with optionally updated [generatedAssetHider] .
68
+ RunnerAssetWriter copyWith ({GeneratedAssetHider ? generatedAssetHider}) {
42
69
_requireIsAssetReaderState ();
43
- return (this as AssetReaderState ).assetPathProvider;
70
+ return (this as AssetReaderState ).copyWith (
71
+ generatedAssetHider: generatedAssetHider,
72
+ )
73
+ as RunnerAssetWriter ;
44
74
}
45
75
46
76
/// Throws if `this` is not an [AssetReaderState] .
@@ -55,21 +85,12 @@ extension AssetReaderStateExtension on AssetReader {
55
85
56
86
/// The state backing an [AssetReader] .
57
87
abstract interface class AssetReaderState {
58
- /// Returns a new instance with optionally updated [assetPathProvider ] and/or [cache ] .
88
+ /// Returns a new instance with optionally updated [cache ] and/or [generatedAssetHider ] .
59
89
AssetReaderWriter copyWith ({
60
- AssetPathProvider ? assetPathProvider,
61
90
FilesystemCache ? cache,
91
+ GeneratedAssetHider ? generatedAssetHider,
62
92
});
63
93
64
- /// The [Filesystem] that this reader reads from.
65
- ///
66
- /// Warning: this access to the filesystem bypasses reader functionality
67
- /// such as read tracking, caching and visibility restriction.
68
- Filesystem get filesystem;
69
-
70
- /// The [FilesystemCache] that this reader uses for caching.
71
- FilesystemCache get cache;
72
-
73
94
/// The [AssetFinder] associated with this reader.
74
95
///
75
96
/// All readers have an [AssetFinder] , but the functionality it provides,
@@ -78,4 +99,16 @@ abstract interface class AssetReaderState {
78
99
79
100
/// The [AssetPathProvider] associated with this reader.
80
101
AssetPathProvider get assetPathProvider;
102
+
103
+ /// The [GeneratedAssetHider] associated with this reader.
104
+ GeneratedAssetHider get generatedAssetHider;
105
+
106
+ /// The [Filesystem] that this reader reads from.
107
+ ///
108
+ /// Warning: this access to the filesystem bypasses reader functionality
109
+ /// such as read tracking, caching and visibility restriction.
110
+ Filesystem get filesystem;
111
+
112
+ /// The [FilesystemCache] that this reader uses for caching.
113
+ FilesystemCache get cache;
81
114
}
0 commit comments