export enum ScriptRunPhase {
  /**
   * Executed before any Javascript is executed.
   */
  Start,
  /**
   * Executed after the document is ready.
   */
  Main,
}

export enum ScriptEnvironment {
  ContentScript,
  InjectedScript,
}

export enum ScriptPage {
  CommunityConsole,
}

export const ScriptRunPhaseToRunTime: Record<
  ScriptRunPhase,
  chrome.userScripts.RunAt
> = {
  [ScriptRunPhase.Start]: 'document_start',
  [ScriptRunPhase.Main]: 'document_idle',
};

export const ScriptEnvironmentToExecutionWorld: Record<
  ScriptEnvironment,
  chrome.scripting.ExecutionWorld
> = {
  [ScriptEnvironment.ContentScript]: 'ISOLATED',
  [ScriptEnvironment.InjectedScript]: 'MAIN',
};

export type ConcreteScript = { new (): Script };

export default abstract class Script {
  /**
   * Priority with which the script is executed. Scripts with a lower value are
   * executed first.
   */
  readonly priority: number = 2 ** 31;

  /**
   * Page where the script should be executed.
   */
  abstract readonly page: ScriptPage;

  /**
   * Environment where the script should be executed.
   */
  abstract readonly environment: ScriptEnvironment;

  /**
   * If {@link environment} is {@link ScriptEnvironment.ContentScript}, phase of
   * the page loading when the script should be executed.
   */
  abstract readonly runPhase?: ScriptRunPhase;

  /**
   * Method which contains the logic of the script.
   */
  abstract execute(): void;
}
