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.