| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file | 
|  | 2 // for details. All rights reserved. Use of this source code is governed by a | 
|  | 3 // BSD-style license that can be found in the LICENSE file. | 
|  | 4 | 
|  | 5 library package_config.packages; | 
|  | 6 | 
|  | 7 import "dart:async" show Future; | 
|  | 8 import "discovery.dart" show findPackages; | 
|  | 9 import "src/packages_impl.dart"; | 
|  | 10 | 
|  | 11 /// A package resolution strategy. | 
|  | 12 /// | 
|  | 13 /// Allows converting a `package:` URI to a different kind of URI. | 
|  | 14 /// | 
|  | 15 /// May also allow listing the available packages and converting | 
|  | 16 /// to a `Map<String, Uri>` that gives the base location of each available | 
|  | 17 /// package. In some cases there is no way to find the available packages, | 
|  | 18 /// in which case [packages] and [asMap] will throw if used. | 
|  | 19 /// One such case is if the packages are resolved relative to a | 
|  | 20 /// `packages/` directory available over HTTP. | 
|  | 21 abstract class Packages { | 
|  | 22 | 
|  | 23   /// A [Packages] resolver containing no packages. | 
|  | 24   /// | 
|  | 25   /// This constant object is returned by [find] above if no | 
|  | 26   /// package resolution strategy is found. | 
|  | 27   static const Packages noPackages = const NoPackages(); | 
|  | 28 | 
|  | 29   /// Create a `Packages` object based on a map from package name to base URI. | 
|  | 30   /// | 
|  | 31   /// The resulting `Packages` object will resolve package URIs by using this | 
|  | 32   /// map. | 
|  | 33   /// There is no validation of the map containing only valid package names, | 
|  | 34   factory Packages(Map<String, Uri> packageMapping) => | 
|  | 35       new MapPackages(packageMapping); | 
|  | 36 | 
|  | 37   /// Attempts to find a package resolution strategy for a Dart script. | 
|  | 38   /// | 
|  | 39   /// The [baseLocation] should point to a Dart script or to its directory. | 
|  | 40   /// The function goes through the following steps in order to search for | 
|  | 41   /// a packages resolution strategy: | 
|  | 42   /// | 
|  | 43   /// * First check if a `.packages` file in the script's directory. | 
|  | 44   ///   If a file is found, its content is loaded and interpreted as a map | 
|  | 45   ///   from package names to package location URIs. | 
|  | 46   ///   If loading or parsing of the file fails, so does this function. | 
|  | 47   /// * Then if `baseLocation` is not a `file:` URI, | 
|  | 48   ///   assume that a `packages/` directory exists in the script's directory, | 
|  | 49   ///   and return a `Packages` object that resolves package URIs as | 
|  | 50   ///   paths into that directory. | 
|  | 51   /// * If `baseLocation` is a `file:` URI, instead *check* whether | 
|  | 52   ///   a `packages/` directory exists in the script directory. | 
|  | 53   ///   If it does, return a `Packages` object that resolves package URIs | 
|  | 54   ///   as paths into that directory. This `Packages` object is able to | 
|  | 55   ///   read the directory and see which packages are available. | 
|  | 56   /// * Otherwise, check each directory in the parent path of `baseLocation` | 
|  | 57   ///   for the existence of a `.packages` file. If one is found, it is loaded | 
|  | 58   ///   just as in the first step. | 
|  | 59   /// * If no file is found before reaching the file system root, | 
|  | 60   ///   the constant [noPacakages] is returned. It's a `Packages` object | 
|  | 61   ///   with no available packages. | 
|  | 62   /// | 
|  | 63   static Future<Packages> find(Uri baseLocation) => findPackages(baseLocation); | 
|  | 64 | 
|  | 65   /// Resolve a package URI into a non-package URI. | 
|  | 66   /// | 
|  | 67   /// Translates a `package:` URI, according to the package resolution | 
|  | 68   /// strategy, into a URI that can be loaded. | 
|  | 69   /// By default, only `file`, `http` and `https` URIs are returned. | 
|  | 70   /// Custom `Packages` objects may return other URIs. | 
|  | 71   /// | 
|  | 72   /// If resolution fails because a package with the requested package name | 
|  | 73   /// is not available, the [notFound] function is called. | 
|  | 74   /// If no `notFound` function is provided, it defaults to throwing an error. | 
|  | 75   /// | 
|  | 76   /// The [packageUri] must be a valid package URI. | 
|  | 77   Uri resolve(Uri packageUri, {Uri notFound(Uri packageUri)}); | 
|  | 78 | 
|  | 79   /// Return the names of the available packages. | 
|  | 80   /// | 
|  | 81   /// Returns an iterable that allows iterating the names of available packages. | 
|  | 82   /// | 
|  | 83   /// Some `Packages` objects are unable to find the package names, | 
|  | 84   /// and getting `packages` from such a `Packages` object will throw. | 
|  | 85   Iterable<String> get packages; | 
|  | 86 | 
|  | 87   /// Return the names-to-base-URI mapping of the available packages. | 
|  | 88   /// | 
|  | 89   /// Returns a map from package name to a base URI. | 
|  | 90   /// The [resolve] method will resolve a package URI with a specific package | 
|  | 91   /// name to a path extending the base URI that this map gives for that | 
|  | 92   /// package name. | 
|  | 93   /// | 
|  | 94   /// Some `Packages` objects are unable to find the package names, | 
|  | 95   /// and calling `asMap` on such a `Packages` object will throw. | 
|  | 96   Map<String, Uri> asMap(); | 
|  | 97 } | 
| OLD | NEW | 
|---|