blob: 0f9b64a500641619cd49f456b12cc951e80f4692 [file] [log] [blame]
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
import 'dds_impl.dart';
/// Converts from `package:` URIs to resolved file paths.
class PackageUriConverter {
PackageUriConverter(this.dds);
Future<Map<String, dynamic>> convert(json_rpc.Parameters parameters) async {
final isolateId = parameters['isolateId'].asString;
final uris = parameters['uris'].asList;
final useLocalResolver = parameters['local'].asBoolOr(false);
final params = <String, dynamic>{
'isolateId': isolateId,
'uris': uris,
};
final result = await dds.vmServiceClient.sendRequest(
'lookupResolvedPackageUris',
params,
);
final converter = dds.uriConverter;
if (converter != null && useLocalResolver) {
final vmUris = result['uris'];
final localUris = uris.map((x) => converter(x as String)).toList();
final resultUris = <String?>[
for (var i = 0; i < vmUris.length; i++) localUris[i] ?? vmUris[i],
];
return <String, dynamic>{
'type': 'UriList',
'uris': resultUris,
};
}
return result;
}
final DartDevelopmentServiceImpl dds;
}