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