blob: 8a8e9de23bf5db545c07f39ca093646cd9185130 [file] [log] [blame]
/**
* @deprecated
*/
export enum ScriptRunPhase {
/**
* Executed before any Javascript is executed.
*/
Start,
/**
* Executed after the document is ready.
*/
Main,
}
/**
* @deprecated
*/
export enum ScriptEnvironment {
ContentScript,
InjectedScript,
}
/**
* @deprecated
*/
export enum ScriptPage {
CommunityConsole,
}
/**
* @deprecated
*/
export const ScriptRunPhaseToRunTime: Record<
ScriptRunPhase,
chrome.userScripts.RunAt
> = {
[ScriptRunPhase.Start]: 'document_start',
[ScriptRunPhase.Main]: 'document_idle',
};
/**
* @deprecated
*/
export const ScriptEnvironmentToExecutionWorld: Record<
ScriptEnvironment,
chrome.scripting.ExecutionWorld
> = {
[ScriptEnvironment.ContentScript]: 'ISOLATED',
[ScriptEnvironment.InjectedScript]: 'MAIN',
};
export type ConcreteScript = { new (): Script };
export default abstract class Script {
/**
* Used to indicate that this script should run after the members of the
* provided array.
*/
readonly runAfter: ConcreteScript[] = [];
/**
* 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.
* @deprecated
*/
abstract readonly page: ScriptPage;
/**
* Environment where the script should be executed.
* @deprecated
*/
abstract readonly environment: ScriptEnvironment;
/**
* If {@link environment} is {@link ScriptEnvironment.ContentScript}, phase of
* the page loading when the script should be executed.
* @deprecated
*/
abstract readonly runPhase?: ScriptRunPhase;
/**
* Method which contains the logic of the script.
*/
abstract execute(): void;
}