| // 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'; |
| // 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( |
| DebugInfo( |
| 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?, |
| ), |
| ); |
| } |