Open marandaneto opened 1 year ago
Dart SDK compiles but it does not work either.
We have to guard every call that depends on dart.library.html
or dart.library.io
to a no-op call. we do this most of the time but there are probably a few exceptions not considered because we always assume it's either one or the other.
runtime parsing can also be improved, currently (dart2wasm used in tests and introduced in #2113) we get this:
{
event_id: dd5764b21ef04faa84c5c9c4a4e54447,
timestamp: 2024-06-20T17: 43: 53.646Z,
platform: other,
user: {
ip_address: {
{
auto
}
}
},
sdk: {
name: sentry.dart.browser,
version: 8.3.0,
packages: [
{
name: pub: sentry,
version: 8.3.0
}
]
},
exception: {
values: [
{
type: _Exception,
value: Exception,
stacktrace: {
frames: [
{
filename: unparsed,
function: at_rootRunUnarytear-offtrampoline(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
6756
]: 0xd9fef),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
},
{
filename: unparsed,
function: at_rootRunUnary(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
2929
]: 0x86136),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
},
{
filename: unparsed,
function: atclosurewrapperatfile: ///Users/ivan/dev/tools/flutter/bin/cache/dart-sdk/lib/_internal/wasm/lib/async_patch.dart: 83: 16trampoline(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
5634
]: 0xc3c13),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
},
{
filename: unparsed,
function: at_awaitHelperclosureatfile: ///Users/ivan/dev/tools/flutter/bin/cache/dart-sdk/lib/_internal/wasm/lib/async_patch.dart: 83: 16(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
5628
]: 0xc3b39),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
},
{
filename: unparsed,
function: atDeclarer.testclosureatfile: ///Users/ivan/.pub-cache/hosted/pub.dev/test_api-0.7.2/lib/src/backend/declarer.dart: 213: 22inner(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
6573
]: 0xd758e),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
},
{
filename: unparsed,
function: atclosurewrapperatfile: ///Users/ivan/dev/sentry-dart/dart/test/sentry_client_test.dart: 121: 7trampoline(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
1146
]: 0x5bdf9),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
},
{
filename: unparsed,
function: atmainclosureatfile: ///Users/ivan/dev/sentry-dart/dart/test/sentry_client_test.dart: 121: 7(http: //localhost: 60835/MHrTmoJ7AVBxEfI0R9zMcjvHD1kUs8gC/test/sentry_client_test.dart.browser_test.dart.wasm: wasm-function[
942
]: 0x58b01),
abs_path: http: //localhost: 60835/unparsed,
in_app: true
}
]
}
}
]
}
}
Description
JS package -> https://github.com/getsentry/sentry-javascript/tree/develop/packages/wasm The SDK needs to fill the
debug_meta
property with the image list. Flutter Web probably exposes theWebAssembly.Module
as well, if not, we can leverage that by using the JS SDK directly. The Dart plugin should upload the DWARF files.SDKs cannot depend on
html
packages nor its transitive dependencies https://docs.flutter.dev/platform-integration/web/wasm#requires-preview-js-interop-to-access-browser-and-js-apisSentry Flutter SDK isn't compatible as of now. Sentry Dart SDK compiles just fine.
Blocked by https://github.com/flutter/flutter/issues/127564 as well