// Copyright (c) 2022, 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; // TODO: https://github.com/dart-lang/webdev/issues/2508 // ignore: deprecated_member_use import 'package:js/js.dart'; import 'utils.dart'; enum _LogLevel { info, warn, error } void debugLog(String msg, {String? prefix, bool verbose = false}) { _log(msg, prefix: prefix, verbose: verbose); } void debugWarn(String msg, {String? prefix, bool verbose = false}) { _log(msg, prefix: prefix, level: _LogLevel.warn, verbose: verbose); } void debugError(String msg, {String? prefix, bool verbose = false}) { _log(msg, prefix: prefix, level: _LogLevel.error, verbose: verbose); } void _log( String msg, { bool verbose = false, _LogLevel? level, String? prefix, }) { if (!verbose && !isDevMode) return; final logMsg = prefix != null ? '[$prefix] $msg' : msg; final logLevel = level ?? _LogLevel.info; switch (logLevel) { case _LogLevel.error: _console.error(logMsg); case _LogLevel.warn: _console.warn(logMsg); case _LogLevel.info: _console.log(logMsg); } } @JS('console') external _Console get _console; @JS() @anonymous class _Console { external void log( String header, [ String style1, String style2, String style3, ]); external void warn( String header, [ String style1, String style2, String style3, ]); external void error( String header, [ String style1, String style2, String style3, ]); }