@@ -21,6 +21,7 @@ import 'path_to_asset_id.dart';
21
21
22
22
const _performancePath = r'$perf' ;
23
23
final _graphPath = r'$graph' ;
24
+ final _assetsDigestPath = r'$assetDigests' ;
24
25
final _buildUpdatesProtocol = r'$livereload' ;
25
26
final _buildUpdatesMessage = 'update' ;
26
27
final entrypointExtensionMarker = '/* ENTRYPOINT_EXTENTION_MARKER */' ;
@@ -79,6 +80,9 @@ class ServeHandler implements BuildState {
79
80
if (request.url.path == _performancePath) {
80
81
return _performanceHandler (request);
81
82
}
83
+ if (request.url.path == _assetsDigestPath) {
84
+ return _assetsDigestHandler (request, rootDir);
85
+ }
82
86
if (request.url.path.startsWith (_graphPath)) {
83
87
var graphHandler = await _assetGraphHandler;
84
88
return await graphHandler.handle (
@@ -112,6 +116,24 @@ class ServeHandler implements BuildState {
112
116
headers: {HttpHeaders .contentTypeHeader: 'text/html' });
113
117
}
114
118
119
+ Future <shelf.Response > _assetsDigestHandler (
120
+ shelf.Request request, String rootDir) async {
121
+ var assertPathList = jsonDecode (await request.readAsString ()) as List ;
122
+ var rootPackage = _state.packageGraph.root.name;
123
+ var results = < String , String > {};
124
+ for (String path in assertPathList) {
125
+ try {
126
+ var assetId = pathToAssetId (rootPackage, rootDir, p.url.split (path));
127
+ var digest = await _state.reader.digest (assetId);
128
+ results[path] = digest.toString ();
129
+ } on AssetNotFoundException {
130
+ results.remove (path);
131
+ }
132
+ }
133
+ return new shelf.Response .ok (jsonEncode (results),
134
+ headers: {HttpHeaders .contentTypeHeader: 'application/json' });
135
+ }
136
+
115
137
void _warnForEmptyDirectory (String rootDir) {
116
138
if (! _state.assetGraph
117
139
.packageNodes (_rootPackage)
0 commit comments