blob: 5be9ba6223d36b38f2b63107c5cc7490b422753a [file] [log] [blame] [edit]
// 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?,
),
);
}