| // 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, |
| ]); |
| } |