browser.mjs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { createConsola as createConsola$1 } from './core.mjs';
  2. export { Consola, LogLevels, LogTypes } from './core.mjs';
  3. class BrowserReporter {
  4. options;
  5. defaultColor;
  6. levelColorMap;
  7. typeColorMap;
  8. constructor(options) {
  9. this.options = { ...options };
  10. this.defaultColor = "#7f8c8d";
  11. this.levelColorMap = {
  12. 0: "#c0392b",
  13. // Red
  14. 1: "#f39c12",
  15. // Yellow
  16. 3: "#00BCD4"
  17. // Cyan
  18. };
  19. this.typeColorMap = {
  20. success: "#2ecc71"
  21. // Green
  22. };
  23. }
  24. _getLogFn(level) {
  25. if (level < 1) {
  26. return console.__error || console.error;
  27. }
  28. if (level === 1) {
  29. return console.__warn || console.warn;
  30. }
  31. return console.__log || console.log;
  32. }
  33. log(logObj) {
  34. const consoleLogFn = this._getLogFn(logObj.level);
  35. const type = logObj.type === "log" ? "" : logObj.type;
  36. const tag = logObj.tag || "";
  37. const color = this.typeColorMap[logObj.type] || this.levelColorMap[logObj.level] || this.defaultColor;
  38. const style = `
  39. background: ${color};
  40. border-radius: 0.5em;
  41. color: white;
  42. font-weight: bold;
  43. padding: 2px 0.5em;
  44. `;
  45. const badge = `%c${[tag, type].filter(Boolean).join(":")}`;
  46. if (typeof logObj.args[0] === "string") {
  47. consoleLogFn(
  48. `${badge}%c ${logObj.args[0]}`,
  49. style,
  50. // Empty string as style resets to default console style
  51. "",
  52. ...logObj.args.slice(1)
  53. );
  54. } else {
  55. consoleLogFn(badge, style, ...logObj.args);
  56. }
  57. }
  58. }
  59. function createConsola(options = {}) {
  60. const consola2 = createConsola$1({
  61. reporters: options.reporters || [new BrowserReporter({})],
  62. prompt(message, options2 = {}) {
  63. if (options2.type === "confirm") {
  64. return Promise.resolve(confirm(message));
  65. }
  66. return Promise.resolve(prompt(message));
  67. },
  68. ...options
  69. });
  70. return consola2;
  71. }
  72. const consola = createConsola();
  73. export { consola, createConsola, consola as default };