diff --git a/CHANGELOG.md b/CHANGELOG.md index 790ffdd688..db00731adb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Ref: Event now is SentryEvent and added GPU #121 - Feat: before breadcrumb and scope ref. #122 - Ref: Hint is passed across Sentry static class, Hub and Client #124 +- Ref: Remove stackFrameFilter in favor of beforeSendCallback #125 # `package:sentry` changelog diff --git a/dart/lib/src/client.dart b/dart/lib/src/client.dart index cfc05058d7..437306c8e5 100644 --- a/dart/lib/src/client.dart +++ b/dart/lib/src/client.dart @@ -8,7 +8,6 @@ import 'client_stub.dart' if (dart.library.html) 'browser_client.dart' if (dart.library.io) 'io_client.dart'; import 'protocol.dart'; -import 'stack_trace.dart'; import 'utils.dart'; import 'version.dart'; @@ -97,7 +96,6 @@ abstract class SentryClient { /// Reports an [event] to Sentry.io. Future captureEvent( SentryEvent event, { - StackFrameFilter stackFrameFilter, Scope scope, dynamic hint, }) async { @@ -128,7 +126,6 @@ abstract class SentryClient { mergeAttributes( event.toJson( - stackFrameFilter: stackFrameFilter, origin: origin, ), into: data, diff --git a/dart/lib/src/noop_client.dart b/dart/lib/src/noop_client.dart index 06a2a2e8af..223ee17bc4 100644 --- a/dart/lib/src/noop_client.dart +++ b/dart/lib/src/noop_client.dart @@ -4,7 +4,6 @@ import 'client.dart'; import 'protocol.dart'; import 'scope.dart'; import 'sentry_options.dart'; -import 'stack_trace.dart'; class NoOpSentryClient implements SentryClient { NoOpSentryClient._(); @@ -37,7 +36,6 @@ class NoOpSentryClient implements SentryClient { @override Future captureEvent( SentryEvent event, { - StackFrameFilter stackFrameFilter, Scope scope, dynamic hint, }) => @@ -45,7 +43,7 @@ class NoOpSentryClient implements SentryClient { @override Future captureException( - dynamic throwable, { + throwable, { dynamic stackTrace, Scope scope, dynamic hint, diff --git a/dart/lib/src/protocol/sentry_event.dart b/dart/lib/src/protocol/sentry_event.dart index 142ce218d2..25452363b1 100644 --- a/dart/lib/src/protocol/sentry_event.dart +++ b/dart/lib/src/protocol/sentry_event.dart @@ -193,8 +193,7 @@ class SentryEvent { ); /// Serializes this event to JSON. - Map toJson( - {StackFrameFilter stackFrameFilter, String origin}) { + Map toJson({String origin}) { final json = {}; if (eventId != null) { @@ -254,7 +253,6 @@ class SentryEvent { json['stacktrace'] = { 'frames': encodeStackTrace( exception.stackTrace, - stackFrameFilter: stackFrameFilter, origin: origin, ), }; @@ -265,7 +263,6 @@ class SentryEvent { json['stacktrace'] = { 'frames': encodeStackTrace( stackTrace, - stackFrameFilter: stackFrameFilter, origin: origin, ), }; diff --git a/dart/lib/src/stack_trace.dart b/dart/lib/src/stack_trace.dart index 0edc106a7e..299c9bb10d 100644 --- a/dart/lib/src/stack_trace.dart +++ b/dart/lib/src/stack_trace.dart @@ -4,16 +4,6 @@ import 'package:stack_trace/stack_trace.dart'; -/// Used to filter or modify stack frames before sending the stack trace. -/// -/// The input stack frames are in the Sentry.io JSON format. The output -/// stack frames must follow the same format. -/// -/// Detailed documentation about the stack trace format is on Sentry.io's -/// web-site: https://docs.sentry.io/development/sdk-dev/overview/. -typedef StackFrameFilter = List> Function( - List>); - /// Sentry.io JSON encoding of a stack frame for the asynchronous suspension, /// which is the gap between asynchronous calls. const Map asynchronousGapFrameJson = { @@ -25,7 +15,6 @@ const Map asynchronousGapFrameJson = { /// [stackTrace] must be [String] or [StackTrace]. List> encodeStackTrace( dynamic stackTrace, { - StackFrameFilter stackFrameFilter, String origin, }) { assert(stackTrace is String || stackTrace is StackTrace); @@ -47,8 +36,7 @@ List> encodeStackTrace( } } - final jsonFrames = frames.reversed.toList(); - return stackFrameFilter != null ? stackFrameFilter(jsonFrames) : jsonFrames; + return frames.reversed.toList(); } Map encodeStackTraceFrame(Frame frame, {String origin}) { diff --git a/dart/test/event_test.dart b/dart/test/event_test.dart index b9ed7b73e1..81abef84c8 100644 --- a/dart/test/event_test.dart +++ b/dart/test/event_test.dart @@ -131,7 +131,6 @@ void main() { 'stacktrace': { 'frames': encodeStackTrace( error.stackTrace, - stackFrameFilter: null, origin: null, ) } diff --git a/dart/test/hub_test.dart b/dart/test/hub_test.dart index 97cb566081..24527b7364 100644 --- a/dart/test/hub_test.dart +++ b/dart/test/hub_test.dart @@ -57,7 +57,6 @@ void main() { client.captureEvent( fakeEvent, scope: captureAnyNamed('scope'), - stackFrameFilter: null, ), ).captured.first, Scope(options), @@ -112,7 +111,6 @@ void main() { client.captureEvent( fakeEvent, scope: captureAnyNamed('scope'), - stackFrameFilter: null, ), ).captured.first, Scope(SentryOptions(dsn: fakeDsn)) @@ -145,7 +143,6 @@ void main() { client2.captureEvent( fakeEvent, scope: anyNamed('scope'), - stackFrameFilter: null, ), ).called(1); }); diff --git a/dart/test/sentry_test.dart b/dart/test/sentry_test.dart index 6f4067a1eb..de992ff0f6 100644 --- a/dart/test/sentry_test.dart +++ b/dart/test/sentry_test.dart @@ -24,7 +24,6 @@ void main() { client.captureEvent( fakeEvent, scope: anyNamed('scope'), - stackFrameFilter: null, ), ).called(1); }); diff --git a/dart/test/stack_trace_test.dart b/dart/test/stack_trace_test.dart index d0aa7b94ff..947fdc6551 100644 --- a/dart/test/stack_trace_test.dart +++ b/dart/test/stack_trace_test.dart @@ -79,24 +79,25 @@ void main() { ]); }); - test('allows changing the stack frame list before sending', () { - // ignore: omit_local_variable_types - final StackFrameFilter filter = - (list) => list.where((f) => f['abs_path'] != 'secret.dart').toList(); +// TODO: use beforeSend to filter stack frames +// test('allows changing the stack frame list before sending', () { +// // ignore: omit_local_variable_types +// final StackFrameFilter filter = +// (list) => list.where((f) => f['abs_path'] != 'secret.dart').toList(); - expect(encodeStackTrace(''' -#0 baz (file:///pathto/test.dart:50:3) -#1 bar (file:///pathto/secret.dart:46:9) - ''', stackFrameFilter: filter), [ - { - 'abs_path': 'test.dart', - 'function': 'baz', - 'lineno': 50, - 'colno': 3, - 'in_app': true, - 'filename': 'test.dart' - }, - ]); - }); +// expect(encodeStackTrace(''' +// #0 baz (file:///pathto/test.dart:50:3) +// #1 bar (file:///pathto/secret.dart:46:9) +// ''', stackFrameFilter: filter), [ +// { +// 'abs_path': 'test.dart', +// 'function': 'baz', +// 'lineno': 50, +// 'colno': 3, +// 'in_app': true, +// 'filename': 'test.dart' +// }, +// ]); +// }); }); }