logger.d.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import * as Rx from 'rxjs';
  2. import { Command, CommandIdentifier } from './command';
  3. export declare class Logger {
  4. private readonly hide;
  5. private readonly raw;
  6. private readonly prefixFormat?;
  7. private readonly commandLength;
  8. private readonly dateFormatter;
  9. private chalk;
  10. /**
  11. * How many characters should a prefix have.
  12. * Prefixes shorter than this will be padded with spaces to the right.
  13. */
  14. private prefixLength;
  15. /**
  16. * Last character emitted, and from which command.
  17. * If `undefined`, then nothing has been logged yet.
  18. */
  19. private lastWrite?;
  20. /**
  21. * Observable that emits when there's been output logged.
  22. * If `command` is is `undefined`, then the log is for a global event.
  23. */
  24. readonly output: Rx.Subject<{
  25. command: Command | undefined;
  26. text: string;
  27. }>;
  28. constructor({ hide, prefixFormat, commandLength, raw, timestampFormat, }: {
  29. /**
  30. * Which commands should have their output hidden.
  31. */
  32. hide?: CommandIdentifier[];
  33. /**
  34. * Whether output should be formatted to include prefixes and whether "event" logs will be
  35. * logged.
  36. */
  37. raw?: boolean;
  38. /**
  39. * The prefix format to use when logging a command's output.
  40. * Defaults to the command's index.
  41. */
  42. prefixFormat?: string;
  43. /**
  44. * How many characters should a prefix have at most when the format is `command`.
  45. */
  46. commandLength?: number;
  47. /**
  48. * Date format used when logging date/time.
  49. * @see https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
  50. */
  51. timestampFormat?: string;
  52. });
  53. /**
  54. * Toggles colors on/off globally.
  55. */
  56. toggleColors(on: boolean): void;
  57. private shortenText;
  58. private getPrefixesFor;
  59. getPrefixContent(command: Command): {
  60. type: 'default' | 'template';
  61. value: string;
  62. } | undefined;
  63. getPrefix(command: Command): string;
  64. setPrefixLength(length: number): void;
  65. colorText(command: Command, text: string): string;
  66. /**
  67. * Logs an event for a command (e.g. start, stop).
  68. *
  69. * If raw mode is on, then nothing is logged.
  70. */
  71. logCommandEvent(text: string, command: Command): void;
  72. logCommandText(text: string, command: Command): void;
  73. /**
  74. * Logs a global event (e.g. sending signals to processes).
  75. *
  76. * If raw mode is on, then nothing is logged.
  77. */
  78. logGlobalEvent(text: string): void;
  79. /**
  80. * Logs a table from an input object array, like `console.table`.
  81. *
  82. * Each row is a single input item, and they are presented in the input order.
  83. */
  84. logTable(tableContents: Record<string, unknown>[]): void;
  85. log(prefix: string, text: string, command?: Command): void;
  86. emit(command: Command | undefined, text: string): void;
  87. }