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