drop package_resolver dependency and remove packageRoot support (#11)

Closes #10
diff --git a/.travis.yml b/.travis.yml
index a16db93..de32a3b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,7 +5,7 @@
 
 dart:
   - dev
-  - 2.4.0
+  - 2.7.0
 
 dart_task:
   - test: -p chrome,vm
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9af1b28..5bfef35 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,13 @@
-## 2.0.0-dev
+## 2.0.0
 
-* **Breaking** The `sdkRoot` argument must be an `Uri`. Use `Uri.parse` for use
+### Breaking Changes
+
+* Removed dependency on `package_resolver` and changed the apis to accept a
+  `Map<String, Uri>` which maps package names to the base uri to resolve the
+  `package:` uris for those packages.
+* The `sdkRoot` argument must be an `Uri`. Use `Uri.parse` for use
   cases previously passing a `String`.
-* **Breaking** The deprecated `packageRoot` argument has been removed.
+* The deprecated `packageRoot` argument has been removed.
 
 ## 1.1.5
 
diff --git a/lib/source_map_stack_trace.dart b/lib/source_map_stack_trace.dart
index ae6967a..fd1226a 100644
--- a/lib/source_map_stack_trace.dart
+++ b/lib/source_map_stack_trace.dart
@@ -2,7 +2,6 @@
 // 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:package_resolver/package_resolver.dart';
 import 'package:path/path.dart' as p;
 import 'package:source_maps/source_maps.dart';
 import 'package:stack_trace/stack_trace.dart';
@@ -13,19 +12,18 @@
 /// [minified] indicates whether or not the dart2js code was minified. If it
 /// hasn't, this tries to clean up the stack frame member names.
 ///
-/// If [packageResolver] is passed, it's used to reconstruct `package:` URIs for
-/// stack frames that come from packages.
+/// The [packageMap] maps package names to the base uri used to resolve the
+/// `package:` uris for those packages. It is used to  it's used to reconstruct
+/// `package:` URIs for stack frames that come from packages.
 ///
 /// [sdkRoot] is the URI surfaced in the stack traces for SDK libraries.
 /// If it's passed, stack frames from the SDK will have `dart:` URLs.
 StackTrace mapStackTrace(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false, SyncPackageResolver packageResolver, Uri sdkRoot}) {
+    {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
   if (stackTrace is Chain) {
     return Chain(stackTrace.traces.map((trace) {
       return Trace.from(mapStackTrace(sourceMap, trace,
-          minified: minified,
-          packageResolver: packageResolver,
-          sdkRoot: sdkRoot));
+          minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
     }));
   }
 
@@ -52,21 +50,14 @@
     var sourceUrl = span.sourceUrl.toString();
     if (sdkRoot != null && p.url.isWithin(sdkLib, sourceUrl)) {
       sourceUrl = 'dart:' + p.url.relative(sourceUrl, from: sdkLib);
-    } else if (packageResolver != null) {
-      if (packageResolver.packageRoot != null &&
-          p.url.isWithin(packageResolver.packageRoot.toString(), sourceUrl)) {
-        sourceUrl = 'package:' +
-            p.url.relative(sourceUrl,
-                from: packageResolver.packageRoot.toString());
-      } else if (packageResolver.packageConfigMap != null) {
-        for (var package in packageResolver.packageConfigMap.keys) {
-          var packageUrl = packageResolver.packageConfigMap[package].toString();
-          if (!p.url.isWithin(packageUrl, sourceUrl)) continue;
+    } else if (packageMap != null) {
+      for (var package in packageMap.keys) {
+        var packageUrl = packageMap[package].toString();
+        if (!p.url.isWithin(packageUrl, sourceUrl)) continue;
 
-          sourceUrl =
-              'package:$package/' + p.url.relative(sourceUrl, from: packageUrl);
-          break;
-        }
+        sourceUrl =
+            'package:$package/' + p.url.relative(sourceUrl, from: packageUrl);
+        break;
       }
     }
 
diff --git a/pubspec.yaml b/pubspec.yaml
index 3c1c82d..919d5d0 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,22 +1,32 @@
 name: source_map_stack_trace
-version: 2.0.0-dev
-
+version: 2.0.0
 description: A package for applying source maps to stack traces.
-author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/source_map_stack_trace
 
 environment:
-  sdk: '>=2.4.0 <3.0.0'
+  sdk: '>=2.7.0 <3.0.0'
 
 dependencies:
-  package_resolver: ^1.0.0
   path: ^1.0.0
   stack_trace: ^1.0.0
   source_maps: ^0.10.2
 
 dev_dependencies:
+  source_span: ^1.6.0
   test: ^1.12.0
   pedantic: ^1.0.0
 
 dependency_overrides:
-  test_core: ^0.3.0
+  # Required to get a valid pub solve until package:test updates
+  test_core:
+    git:
+      url: https://github.com/dart-lang/test.git
+      ref: drop-package-resolver
+      path: pkgs/test_core
+  test:
+    git:
+      url: https://github.com/dart-lang/test.git
+      ref: drop-package-resolver
+      path: pkgs/test
+  package_config: ^1.9.1
+    
diff --git a/test/source_map_stack_trace_test.dart b/test/source_map_stack_trace_test.dart
index a7b8deb..9f13306 100644
--- a/test/source_map_stack_trace_test.dart
+++ b/test/source_map_stack_trace_test.dart
@@ -2,7 +2,6 @@
 // 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:package_resolver/package_resolver.dart';
 import 'package:path/path.dart' as p;
 import 'package:source_maps/source_maps.dart';
 import 'package:source_span/source_span.dart';
@@ -20,6 +19,11 @@
               SourceLocation(18, line: 15, column: 0), '\n' * 10)))
     .build('foo.dart.js.map'));
 
+final _packageMap = {
+  'bar': Uri.parse('packages/bar'),
+  'foo': Uri.parse('packages/foo'),
+};
+
 void main() {
   test('maps a JS line and column to a Dart line and span', () {
     var trace = Trace.parse('foo.dart.js 10:11  foo');
@@ -89,9 +93,7 @@
 
     var bundle = [sourceMapJson1, sourceMapJson2];
     var mapping = parseJsonExtended(bundle);
-    var frames = _mapTrace(mapping, trace,
-            packageResolver: SyncPackageResolver.root('packages/'))
-        .frames;
+    var frames = _mapTrace(mapping, trace, packageMap: _packageMap).frames;
 
     expect(frames.length, equals(3));
 
@@ -127,26 +129,6 @@
     expect(frame.column, equals(4));
   });
 
-  test('uses package: URIs for frames within packageResolver.packageRoot', () {
-    var trace = Trace.parse('foo.dart.js 10  foo');
-    var builder = SourceMapBuilder()
-      ..addSpan(
-          SourceMapSpan.identifier(
-              SourceLocation(1,
-                  line: 1, column: 3, sourceUrl: 'packages/foo/foo.dart'),
-              'qux'),
-          SourceSpan(SourceLocation(8, line: 5, column: 0),
-              SourceLocation(12, line: 9, column: 1), '\n' * 4));
-
-    var mapping = parseJson(builder.build('foo.dart.js.map'));
-    var mappedTrace = _mapTrace(mapping, trace,
-        packageResolver: SyncPackageResolver.root('packages/'));
-    var frame = mappedTrace.frames.first;
-    expect(frame.uri, equals(Uri.parse('package:foo/foo.dart')));
-    expect(frame.line, equals(2));
-    expect(frame.column, equals(4));
-  });
-
   test('uses package: URIs for frames within a packageResolver.packageMap URL',
       () {
     var trace = Trace.parse('foo.dart.js 10  foo');
@@ -160,9 +142,7 @@
               SourceLocation(12, line: 9, column: 1), '\n' * 4));
 
     var mapping = parseJson(builder.build('foo.dart.js.map'));
-    var mappedTrace = _mapTrace(mapping, trace,
-        packageResolver:
-            SyncPackageResolver.config({'foo': Uri.parse('packages/foo')}));
+    var mappedTrace = _mapTrace(mapping, trace, packageMap: _packageMap);
     var frame = mappedTrace.frames.first;
     expect(frame.uri, equals(Uri.parse('package:foo/foo.dart')));
     expect(frame.line, equals(2));
@@ -264,17 +244,17 @@
 /// Like [mapStackTrace], but is guaranteed to return a [Trace] so it can be
 /// inspected.
 Trace _mapTrace(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false, SyncPackageResolver packageResolver, Uri sdkRoot}) {
+    {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
   return Trace.from(mapStackTrace(sourceMap, stackTrace,
-      minified: minified, packageResolver: packageResolver, sdkRoot: sdkRoot));
+      minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
 }
 
 /// Like [mapStackTrace], but is guaranteed to return a [Chain] so it can be
 /// inspected.
 Chain _mapChain(Mapping sourceMap, StackTrace stackTrace,
-    {bool minified = false, SyncPackageResolver packageResolver, Uri sdkRoot}) {
+    {bool minified = false, Map<String, Uri> packageMap, Uri sdkRoot}) {
   return Chain.forTrace(mapStackTrace(sourceMap, stackTrace,
-      minified: minified, packageResolver: packageResolver, sdkRoot: sdkRoot));
+      minified: minified, packageMap: packageMap, sdkRoot: sdkRoot));
 }
 
 /// Runs the mapper's prettification logic on [member] and returns the result.