/**
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

export enum MessageSource {
  Babel,
  Forget,
  Playground,
}

export enum MessageLevel {
  Info,
  Warning,
  Error,
}

export interface Message {
  title: string;
  level: MessageLevel;
  source: MessageSource; // Can be used to further style messages differently.
  codeframe: string | undefined;
}

export function createMessage(
  message: string,
  level: MessageLevel,
  source: MessageSource,
): Message {
  const [title, ...body] = message.split('\n');
  const codeframe = body.length > 0 ? body.join('\n') : undefined;

  return {
    source,
    level,
    title,
    codeframe,
  };
}