library pub.barback;
import 'package:barback/barback.dart';
import 'package:path/path.dart' as p;
import 'version.dart';
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")
};
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/', '')));
}
AssetId packagesUrlToId(Uri url) {
  var parts = p.url.split(url.path);
  if (parts.isNotEmpty && parts.first == "/") parts = parts.skip(1).toList();
  if (parts.isEmpty) return null;
  var index = parts.indexOf("packages");
  if (index == -1) return null;
  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);
}
