// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file // 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. @JS() library; import 'dart:convert'; // TODO: https://github.com/dart-lang/webdev/issues/2508 // ignore: deprecated_member_use import 'dart:html'; // TODO: https://github.com/dart-lang/webdev/issues/2508 // ignore: deprecated_member_use import 'dart:js'; import 'package:dwds/data/debug_info.dart'; import 'package:dwds/data/serializers.dart'; // TODO: https://github.com/dart-lang/webdev/issues/2508 // ignore: deprecated_member_use import 'package:js/js.dart'; void main() { final debugInfoJson = _readDartDebugInfo(); document.dispatchEvent(CustomEvent('dart-app-ready', detail: debugInfoJson)); } String _readDartDebugInfo() { final windowContext = JsObject.fromBrowserObject(window); return jsonEncode( serializers.serialize( DebugInfo( (b) => b ..appEntrypointPath = windowContext['\$dartEntrypointPath'] as String? ..appId = windowContext['\$dartAppId'] as String? ..appInstanceId = windowContext['\$dartAppInstanceId'] as String? ..appOrigin = window.location.origin ..appUrl = window.location.href ..extensionUrl = windowContext['\$dartExtensionUri'] as String? ..isInternalBuild = windowContext['\$isInternalBuild'] as bool? ..isFlutterApp = windowContext['\$isFlutterApp'] as bool?, ), ), ); }