sentry_link 0.3.0 sentry_link: ^0.3.0 copied to clipboard
Automatic capture of exceptions and GraphQL errors for the gql eco-system, like graphql and ferry
import 'dart:io';
import 'package:graphql/client.dart';
import 'package:sentry/sentry.dart';
import 'package:sentry_link/sentry_link.dart';
Future<void> main() {
return Sentry.init(
(options) {
options.dsn =
'https://c8f216b28d814d2ca83e52fb735da535@o266569.ingest.sentry.io/5558444';
options.tracesSampleRate = 1;
options.beforeBreadcrumb = graphQlFilter();
options.addGqlExtractors();
options.addSentryLinkInAppExcludes();
},
appRunner: example,
);
}
Future<void> example() async {
final link = Link.from([
SentryGql.link(
shouldStartTransaction: true,
graphQlErrorsMarkTransactionAsFailed: true,
),
HttpLink(
'https://graphqlzero.almansi.me/api',
httpClient: SentryHttpClient(),
parser: SentryResponseParser(),
serializer: SentryRequestSerializer(),
),
]);
final client = GraphQLClient(
cache: GraphQLCache(),
link: link,
);
final QueryOptions options = QueryOptions(
operationName: 'LoadPosts',
document: gql(
r'''
query LoadPosts($id: ID!) {
post(id: $id) {
id
# this one is intentionally wrong, the last char 'e' is missing
titl
body
}
}
''',
),
variables: {
'id': 50,
},
);
final result = await client.query(options);
print(result.toString());
await Future<void>.delayed(Duration(seconds: 2));
exit(0);
}