//////////////////////////////////////////////////////
// BEWARE: DO NOT EDIT MANUALLY! Changes will be lost!
//////////////////////////////////////////////////////
import { ExtensionTypes } from "./extensionTypes";
import { Manifest } from "./manifest";
/**
* Namespace: browser.userScripts
*/
export namespace UserScripts {
/**
* Details of a user script
*/
interface UserScriptOptions {
/**
* The list of JS files to inject
*/
js: ExtensionTypes.ExtensionFileOrCode[];
/**
* An opaque user script metadata value
* Optional.
*/
scriptMetadata?: ExtensionTypes.PlainJSONValue;
matches: Manifest.MatchPattern[];
/**
* Optional.
*/
excludeMatches?: Manifest.MatchPattern[];
/**
* Optional.
*/
includeGlobs?: string[];
/**
* Optional.
*/
excludeGlobs?: string[];
/**
* If allFrames is true
, implies that the JavaScript should be injected into all frames of current page.
* By default, it's false
and is only injected into the top frame.
* Optional.
*/
allFrames?: boolean;
/**
* If matchAboutBlank is true, then the code is also injected in about:blank and about:srcdoc frames if your extension has
* access to its parent document. Code cannot be inserted in top-level about:-frames. By default it is false
.
* Optional.
*/
matchAboutBlank?: boolean;
/**
* The soonest that the JavaScript will be injected into the tab. Defaults to "document_idle".
* Optional.
*/
runAt?: ExtensionTypes.RunAt;
/**
* limit the set of matched tabs to those that belong to the given cookie store id
* Optional.
*/
cookieStoreId?: string[] | string;
}
/**
* An object that represents a user script registered programmatically
*/
interface RegisteredUserScript {
/**
* The ID of the user script specified in the API call. This property must not start with a '_' as it's reserved as a
* prefix for generated script IDs.
*/
id: string;
/**
* If allFrames is true
, implies that the JavaScript should be injected into all frames of current page.
* By default, it's false
and is only injected into the top frame.
* Optional.
*/
allFrames?: boolean;
/**
* The list of ScriptSource objects defining sources of scripts to be injected into matching pages.
*/
js: ScriptSource[];
/**
* At least one of matches or includeGlobs should be non-empty. The script runs in documents whose URL match either pattern.
* Optional.
*/
matches?: Manifest.MatchPattern[];
/**
* Optional.
*/
excludeMatches?: Manifest.MatchPattern[];
/**
* At least one of matches or includeGlobs should be non-empty. The script runs in documents whose URL match either pattern.
* Optional.
*/
includeGlobs?: string[];
/**
* Optional.
*/
excludeGlobs?: string[];
/**
* The soonest that the JavaScript will be injected into the tab. Defaults to "document_idle".
* Optional.
*/
runAt?: ExtensionTypes.RunAt;
/**
* The JavaScript script for a script to execute within. Defaults to "USER_SCRIPT".
* Optional.
*/
world?: ExecutionWorld;
/**
* If specified, specifies a specific user script world ID to execute in. Only valid if `world` is omitted or is
* `USER_SCRIPT`. If `worldId` is omitted, the script will execute in the default user script world ("").
* Values with leading underscores (`_`) are reserved. The maximum length is 256.
* Optional.
*/
worldId?: string;
}
/**
* The JavaScript world for a script to execute within. USER_SCRIPT
is the default execution environment of
* user scripts, MAIN
is the web page's execution environment.
*/
type ExecutionWorld = "MAIN" | "USER_SCRIPT";
/**
* Optional filter to use with getScripts() and unregister().
*/
interface UserScriptFilter {
/**
* Optional.
*/
ids?: string[];
}
/**
* Object with file xor code property. Equivalent to the ExtensionFileOrCode, except the file remains a relative URL.
*/
type ScriptSource = ScriptSourceC1Type | ScriptSourceC2Type;
/**
* The configuration of a USER_SCRIPT world.
*/
interface WorldProperties {
/**
* The identifier of the world. Values with leading underscores (`_`) are reserved. The maximum length is 256.
* Defaults to the default USER_SCRIPT world ("").
* Optional.
*/
worldId?: string;
/**
* The world's Content Security Policy. Defaults to the CSP of regular content scripts,
* which prohibits dynamic code execution such as eval.
* Optional.
*/
csp?: string;
/**
* Whether the runtime.sendMessage and runtime.connect methods are exposed. Defaults to not exposing these messaging APIs.
* Optional.
*/
messaging?: boolean;
}
/**
* An object that represents a user script registered programmatically
*/
interface RegisterCallbackLegacyRegisteredUserScriptType {
/**
* Unregister a user script registered programmatically
*/
unregister(): Promise;
}
interface UpdateScriptsItemType extends Omit {
/**
* Optional.
*/
js?: ScriptSource[];
}
interface ScriptSourceC1Type {
/**
* The path of the JavaScript file to inject relative to the extension's root directory.
*/
file: string;
}
interface ScriptSourceC2Type {
code: string;
}
interface Static {
/**
* Register a user script programmatically given its $(ref:userScripts.UserScriptOptions),
* and resolves to an object with the unregister() function
*/
register(userScriptOptions: UserScriptOptions): Promise;
/**
* Registers one or more user scripts for this extension.
*
* @param scripts List of user scripts to be registered.
*/
register(scripts: RegisteredUserScript[]): void;
/**
* Updates one or more user scripts for this extension.
*
* @param scripts List of user scripts to be updated.
*/
update(scripts: UpdateScriptsItemType[]): void;
/**
* Unregisters all dynamically-registered user scripts for this extension.
*
* @param filter Optional. If specified, this method unregisters only the user scripts that match it.
*/
unregister(filter?: UserScriptFilter): void;
/**
* Returns all dynamically-registered user scripts for this extension.
*
* @param filter Optional. If specified, this method returns only the user scripts that match it.
*/
getScripts(filter?: UserScriptFilter): Promise;
/**
* Configures the environment for scripts running in a USER_SCRIPT world.
*
* @param properties The desired configuration for a USER_SCRIPT world.
*/
configureWorld(properties: WorldProperties): void;
/**
* Resets the configuration for a given world. That world will fall back to the default world's configuration.
*
* @param worldId Optional. The ID of the USER_SCRIPT world to reset. If omitted or empty,
* resets the default world's configuration.
*/
resetWorldConfiguration(worldId?: string): void;
/**
* Returns all registered USER_SCRIPT world configurations.
*/
getWorldConfigurations(): Promise;
}
}