Index: sdk/lib/_internal/pub_generated/lib/src/barback.dart |
diff --git a/sdk/lib/_internal/pub_generated/lib/src/barback.dart b/sdk/lib/_internal/pub_generated/lib/src/barback.dart |
index 3a26b723dc3b0899252a0dae1033dfb0a1f56d97..ea7e650557dd98a7c5cb9a20e52422a2364ca1ca 100644 |
--- a/sdk/lib/_internal/pub_generated/lib/src/barback.dart |
+++ b/sdk/lib/_internal/pub_generated/lib/src/barback.dart |
@@ -1,30 +1,88 @@ |
+// Copyright (c) 2013, 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. |
+ |
library pub.barback; |
+ |
import 'package:barback/barback.dart'; |
import 'package:path/path.dart' as p; |
import 'package:pub_semver/pub_semver.dart'; |
+ |
+/// The currently supported versions of packages that this version of pub works |
+/// with. |
+/// |
+/// Pub implicitly constrains these packages to these versions as long as |
+/// barback is a dependency. |
+/// |
+/// Users' transformers are loaded in an isolate that uses the entrypoint |
+/// package's dependency versions. However, that isolate also loads code |
+/// provided by pub (`asset/dart/transformer_isolate.dart` and associated |
+/// files). This code uses these packages as well, so these constraints exist to |
+/// ensure that its usage of the packages remains valid. |
+/// |
+/// Most constraints here are like normal version constraints in that their |
+/// upper bound is the next major version of the package (or minor version for |
+/// pre-1.0.0 packages). If a new major version of the package is released, |
+/// these *must* be incremented to synchronize with that. |
+/// |
+/// The constraint on barback is different. Its upper bound is the next *patch* |
+/// version of barback—that is, the next version with new features. This is |
+/// because most barback features need additional serialization code to be fully |
+/// supported in pub, even if they're otherwise backwards-compatible. |
+/// |
+/// Whenever a new minor or patch version of barback is published, this *must* |
+/// be incremented to synchronize with that. See the barback [compatibility |
+/// documentation][compat] for details on the relationship between this |
+/// constraint and barback's version. |
+/// |
+/// [compat]: https://gist.github.com/nex3/10942218 |
final pubConstraints = { |
"barback": new VersionConstraint.parse(">=0.13.0 <0.15.3"), |
"source_span": new VersionConstraint.parse(">=1.0.0 <2.0.0"), |
"stack_trace": new VersionConstraint.parse(">=0.9.1 <2.0.0") |
}; |
+ |
+/// Converts [id] to a "package:" URI. |
+/// |
+/// This will throw an [ArgumentError] if [id] doesn't represent a library in |
+/// `lib/`. |
Uri idToPackageUri(AssetId id) { |
if (!id.path.startsWith('lib/')) { |
throw new ArgumentError("Asset id $id doesn't identify a library."); |
} |
+ |
return new Uri( |
scheme: 'package', |
path: p.url.join(id.package, id.path.replaceFirst('lib/', ''))); |
} |
+ |
+/// Converts [uri] into an [AssetId] if its path is within "packages". |
+/// |
+/// If the URL contains a special directory, but lacks a following package name, |
+/// throws a [FormatException]. |
+/// |
+/// If the URI doesn't contain one of those special directories, returns null. |
AssetId packagesUrlToId(Uri url) { |
var parts = p.url.split(url.path); |
+ |
+ // Strip the leading "/" from the URL. |
if (parts.isNotEmpty && parts.first == "/") parts = parts.skip(1).toList(); |
+ |
if (parts.isEmpty) return null; |
+ |
+ // Check for "packages" in the URL. |
+ // TODO(rnystrom): If we rewrite "package:" imports to relative imports that |
+ // point to a canonical "packages" directory, we can limit "packages" to the |
+ // root of the URL as well. See: #16649. |
var index = parts.indexOf("packages"); |
if (index == -1) return null; |
+ |
+ // There should be a package name after "packages". |
if (parts.length <= index + 1) { |
throw new FormatException( |
'Invalid URL path "${url.path}". Expected package name ' 'after "packages".'); |
} |
+ |
var package = parts[index + 1]; |
var assetPath = p.url.join("lib", p.url.joinAll(parts.skip(index + 2))); |
return new AssetId(package, assetPath); |