in build_runner/lib/src/server/asset_graph_handler.dart [71:141]
Future<shelf.Response> _handleQuery(String query, String rootDir,
{String? filter}) async {
var filterGlob = filter != null ? Glob(filter) : null;
var pipeIndex = query.indexOf('|');
AssetId assetId;
if (pipeIndex < 0) {
var querySplit = query.split('/');
assetId = pathToAssetId(
_rootPackage, querySplit.first, querySplit.skip(1).toList());
if (!_assetGraph.contains(assetId)) {
var secondTry = pathToAssetId(_rootPackage, rootDir, querySplit);
if (!_assetGraph.contains(secondTry)) {
return shelf.Response.notFound(
'Could not find asset for path "$query". Tried:\n'
'- $assetId\n'
'- $secondTry');
}
assetId = secondTry;
}
} else {
assetId = AssetId.parse(query);
if (!_assetGraph.contains(assetId)) {
return shelf.Response.notFound(
'Could not find asset in build graph: $assetId');
}
}
var node = _assetGraph.get(assetId)!;
var currentEdge = 0;
var nodes = [
{'id': '${node.id}', 'label': '${node.id}'}
];
var edges = <Map<String, String>>[];
for (final output in node.outputs) {
if (filterGlob != null && !filterGlob.matches(output.toString())) {
continue;
}
edges.add(
{'from': '${node.id}', 'to': '$output', 'id': 'e${currentEdge++}'});
nodes.add({'id': '$output', 'label': '$output'});
}
if (node is NodeWithInputs) {
for (final input in node.inputs) {
if (filterGlob != null && !filterGlob.matches(input.toString())) {
continue;
}
edges.add(
{'from': '$input', 'to': '${node.id}', 'id': 'e${currentEdge++}'});
nodes.add({'id': '$input', 'label': '$input'});
}
}
var result = <String, dynamic>{
'primary': {
'id': '${node.id}',
'hidden': node is GeneratedAssetNode ? node.isHidden : null,
'state': node is NodeWithInputs ? '${node.state}' : null,
'wasOutput': node is GeneratedAssetNode ? node.wasOutput : null,
'isFailure': node is GeneratedAssetNode ? node.isFailure : null,
'phaseNumber': node is NodeWithInputs ? node.phaseNumber : null,
'type': node.runtimeType.toString(),
'glob': node is GlobAssetNode ? node.glob.pattern : null,
'lastKnownDigest': node.lastKnownDigest.toString(),
},
'edges': edges,
'nodes': nodes,
};
return _jsonResponse(_jsonUtf8Encoder.convert(result));
}