| // 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 'dart:isolate'; |
| |
| import 'package:package_config/package_config.dart'; |
| |
| /// The [PackageConfig] parsed from the current isolates package config file. |
| final Future<PackageConfig> currentPackageConfig = () async { |
| return loadPackageConfigUri(await Isolate.packageConfig); |
| }(); |
| |
| /// Adds methods to convert to a package map on [PackageConfig]. |
| extension PackageMap on PackageConfig { |
| /// A package map exactly matching the current package config |
| Map<String, Uri> toPackageMap() => |
| {for (var package in packages) package.name: package.packageUriRoot}; |
| |
| /// A package map with all the current packages but where the uris are all |
| /// of the form 'packages/${package.name}'. |
| Map<String, Uri> toPackagesDirPackageMap() => { |
| for (var package in packages) |
| package.name: Uri.parse('packages/${package.name}') |
| }; |
| } |