Skip to content

Class: Addon<TPath, TEventMap>

utilities/addon.Addon

A special sub-class of Module used for the root module of an add-on.

This sub-class has a static register method that add-ons should call to properly inject themselves into FrankerFaceZ once their scripts have loaded. register is called automatically by add-ons build from the official add-ons repository.

Type parameters

NameType
TPathextends string = ""
TEventMapextends ModuleEvents = ModuleEvents

Hierarchy

  • Module<TPath, TEventMap>

    Addon

Constructors

constructor

new Addon<TPath, TEventMap>(name?, parent?): Addon<TPath, TEventMap>

Type parameters

NameType
TPathextends string = ""
TEventMapextends ModuleEvents = ModuleEvents

Parameters

NameType
name?string
parent?GenericModule

Returns

Addon<TPath, TEventMap>

Overrides

Module.constructor

Defined in

src/utilities/addon.ts:24

Properties

should_enable

Optional should_enable: boolean

For use in modules that are direct children of "core" or "site". If this is set to true, the module will be enabled when FrankerFaceZ is initialized.

Inherited from

Module.should_enable

Defined in

src/utilities/module.ts:116

Accessors

addon_id

get addon_id(): undefined | string

If this module is part of an add-on, the add-on's ID.

Returns

undefined | string

Inherited from

Module.addon_id

Defined in

src/utilities/module.ts:209


addon_root

get addon_root(): undefined | GenericModule

If this module is part of an add-on, the add-on's root module.

Returns

undefined | GenericModule

Inherited from

Module.addon_root

Defined in

src/utilities/module.ts:211


enabled

get enabled(): boolean

Whether or not the module is State.Enabled.

Returns

boolean

Inherited from

Module.enabled

Defined in

src/utilities/module.ts:204


enabling

get enabling(): boolean

Whether or not the module is State.Enabling.

Returns

boolean

Inherited from

Module.enabling

Defined in

src/utilities/module.ts:206


load_state

get load_state(): LoadState

The current LoadState of this module.

Returns

LoadState

Inherited from

Module.load_state

Defined in

src/utilities/module.ts:196


loaded

get loaded(): boolean

Whether or not the module is LoadState.Loaded.

Returns

boolean

Inherited from

Module.loaded

Defined in

src/utilities/module.ts:199


loading

get loading(): boolean

Whether or not the module is LoadState.Loading.

Returns

boolean

Inherited from

Module.loading

Defined in

src/utilities/module.ts:201


log

get log(): Logger

A Logger instance for this module.

Returns

Logger

Inherited from

Module.log

Defined in

src/utilities/module.ts:214

set log(log): void

Parameters

NameType
logLogger

Returns

void

Inherited from

Module.log

Defined in

src/utilities/module.ts:224


path

get path(): TPath

Returns

TPath

Inherited from

Module.path

Defined in

src/utilities/events.ts:507


state

get state(): State

The current State of this module.

Returns

State

Inherited from

Module.state

Defined in

src/utilities/module.ts:193

Methods

_time

_time(event): void

Record a timing event. The timing system is not yet finished.

Parameters

NameTypeDescription
eventanyThe timing event to record.

Returns

void

Inherited from

Module._time

Defined in

src/utilities/module.ts:237


abs_path

abs_path(path): string

Parameters

NameType
pathstring

Returns

string

Inherited from

Module.abs_path

Defined in

src/utilities/events.ts:516


canDisable

canDisable(): boolean

Determine whether or not this module can be disabled. This checks not only this module's state, but the state of all modules that depend on this module.

Returns

boolean

Inherited from

Module.canDisable

Defined in

src/utilities/module.ts:361


canUnload

canUnload(): boolean

Determine whether or not this module can be unloaded. This checks not only this module's state, but the state of all modules that depend on this module.

Returns

boolean

Inherited from

Module.canUnload

Defined in

src/utilities/module.ts:352


disable

disable(): undefined | null | Promise<void>

Disable this module. If the module has no onDisable method, but it has an onEnable method, then this will throw an error.

As part of disabling this module, all modules that depend on this module will be disabled first. All modules that depend on this module as a load dependency will be unloaded first.

Please note that, if any of those dependencies cannot be unloaded or disabled, this will fail.

Returns

undefined | null | Promise<void>

Inherited from

Module.disable

Defined in

src/utilities/module.ts:336


emit

emit<K>(event, ...args): void

Type parameters

NameType
Kextends string

Parameters

NameType
eventK
...argsTEventMap[K]

Returns

void

Inherited from

Module.emit

Defined in

src/utilities/events.ts:609


enable

enable(): undefined | null | Promise<void>

Enable this module. If the module has no onEnable method and the module is considered LoadState.Loaded immediately, then the module will be considered State.Enabled immediately.

All of the module's requires dependencies will be enabled before the state updates and this returns.

Modules are automatically loaded before being enabled.

Returns

undefined | null | Promise<void>

Inherited from

Module.enable

Defined in

src/utilities/module.ts:311


events

events(): string[]

Returns

string[]

Inherited from

Module.events

Defined in

src/utilities/events.ts:627


eventsWithChildren

eventsWithChildren(): string[]

Returns

string[]

Inherited from

Module.eventsWithChildren

Defined in

src/utilities/events.ts:616


getAddonProxy

getAddonProxy(addon_id, addon, root, caller): Module<"", ModuleEvents>

Optional. This method is called when a module belonging to an Addon attempts to () or () this module. This can be used to return a Proxy for the purpose of adjusting API responses or record keeping.

Parameters

NameTypeDescription
addon_idstringThe ID of the add-on requesting the module.
addonAddonInfoThe manifest of the add-on requesting the module.
rootGenericModuleThe root Addon module.
callerGenericModuleThe specific Module making the request.

Returns

Module<"", ModuleEvents>

Inherited from

Module.getAddonProxy

Defined in

src/utilities/module.ts:108


hasListeners

hasListeners<K>(event): boolean

Type parameters

NameType
Kextends string

Parameters

NameType
eventK

Returns

boolean

Inherited from

Module.hasListeners

Defined in

src/utilities/events.ts:605


hasModule

hasModule(name): boolean

Parameters

NameType
namestring

Returns

boolean

Inherited from

Module.hasModule

Defined in

src/utilities/module.ts:803


inject

inject(name, module?, require?): null | GenericModule

Parameters

NameTypeDefault value
namenull | string | Module<"", ModuleEvents>undefined
module?null | typeof Module | GenericModuleundefined
requirebooleantrue

Returns

null | GenericModule

Inherited from

Module.inject

Defined in

src/utilities/module.ts:850


injectAs

injectAs(variable, name, module?, require?): null | GenericModule

Parameters

NameTypeDefault value
variablestringundefined
namenull | string | Module<"", ModuleEvents>undefined
module?null | typeof Module | GenericModuleundefined
requirebooleantrue

Returns

null | GenericModule

Inherited from

Module.injectAs

Defined in

src/utilities/module.ts:911


listeners

listeners<K>(event): ListenerInfo<any[]>[]

Type parameters

NameType
Kextends string

Parameters

NameType
eventK

Returns

ListenerInfo<any[]>[]

Inherited from

Module.listeners

Defined in

src/utilities/events.ts:601


load

load(): undefined | null | Promise<void>

Load this module. If the module has no onLoad method and no load_requires modules listed, then it will be considered LoadState.Loaded immediately.

All of the module's load_requires dependencies will be enabled before the load state updates and this returns.

Modules are automatically loaded before being enabled.

Returns

undefined | null | Promise<void>

Inherited from

Module.load

Defined in

src/utilities/module.ts:261


loadFromContext

loadFromContext(ctx, log?): Promise<Record<string, Module<"", ModuleEvents>>>

Attempt to load a set of child modules from a require.context object. This searches the default exports, as well as exports named module specifically. Each discovered module will be registered and injected onto this module.

Parameters

NameTypeDescription
ctxRequireContextThe context to load from.
log?LoggerA logger to use for logging errors. If not provided, this will default to this module's default logger.

Returns

Promise<Record<string, Module<"", ModuleEvents>>>

A map of all loaded modules.

Inherited from

Module.loadFromContext

Defined in

src/utilities/module.ts:1052


makeEvent

makeEvent<TData>(data): TypedFFZEvent<TData>

Create a new FFZEvent instance. This is a convenience method that wraps ()

Type parameters

NameType
TDataextends Record<string, any> = {}

Parameters

NameType
dataTData

Returns

TypedFFZEvent<TData>

Inherited from

Module.makeEvent

Defined in

src/utilities/events.ts:118


makeWaitableEvent

makeWaitableEvent<TData, TReturn>(data): TypedFFZWaitableEvent<TData, TReturn>

Create a new FFZWaitableEvent instance. This is a convenience method that wraps ()

Type parameters

NameType
TDataextends Record<string, any> = {}
TReturnvoid

Parameters

NameType
dataTData

Returns

TypedFFZWaitableEvent<TData, TReturn>

Inherited from

Module.makeWaitableEvent

Defined in

src/utilities/events.ts:128


many

many<K>(event, ttl, fn, ctx?, priority?, prepend?): void

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
ttlnumberundefined
fnEventListener<TEventMap[K]>undefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

void

Inherited from

Module.many

Defined in

src/utilities/module.ts:741


off

off<K>(event?, fn?, ctx?): void

Type parameters

NameType
Kextends string

Parameters

NameType
event?K
fn?EventListener
ctx?any

Returns

void

Inherited from

Module.off

Defined in

src/utilities/module.ts:773


offContext

offContext<K>(event, ctx?): void

Type parameters

NameType
Kextends string

Parameters

NameType
eventK
ctx?any

Returns

void

Inherited from

Module.offContext

Defined in

src/utilities/events.ts:274


on

on<K>(event, fn, ctx?, priority?, prepend?): void

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
fnEventListener<TEventMap[K]>undefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

void

Inherited from

Module.on

Defined in

src/utilities/module.ts:709


onDisable

onDisable(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being disabled. The module will not be set to State.Disabled until after this method returns. Promises are supported.

Returns

void | Promise<void>

Inherited from

Module.onDisable

Defined in

src/utilities/module.ts:345


onEnable

onEnable(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being enabled. The module will not be set to State.Enabled until after this method returns. Promises are supported.

When this is called, all modules that this module requires will already be enabled and injected modules will have been injected.

Returns

void | Promise<void>

Inherited from

Module.onEnable

Defined in

src/utilities/module.ts:323


onLoad

onLoad(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being loaded. The module will not be set to LoadState.Loaded until after this method returns. Promises are supported.

When this is called, all modules that this module load_requires will already be enabled and injected modules will have been injected.

Returns

void | Promise<void>

Inherited from

Module.onLoad

Defined in

src/utilities/module.ts:273


onUnload

onUnload(): void | Promise<void>

Optional. If this method is defined, it will be called when the module is being unloaded. The module will not be set to LoadState.Unloaded until after this method returns. Promises are supported.

When this is called, all modules that depend on this module will already have been disabled.

Returns

void | Promise<void>

Inherited from

Module.onUnload

Defined in

src/utilities/module.ts:299


once

once<K>(event, fn, ctx?, priority?, prepend?): void

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
fnEventListener<TEventMap[K]>undefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

void

Inherited from

Module.once

Defined in

src/utilities/module.ts:725


populate

populate(ctx, log?): Promise<Record<string, Module<"", ModuleEvents>>>

Parameters

NameType
ctxRequireContext
log?Logger

Returns

Promise<Record<string, Module<"", ModuleEvents>>>

Deprecated

See

loadFromContext

Defined in

src/utilities/addon.ts:35


register

register(name, module, inject_reference?): Module<any, ModuleEvents>

Parameters

NameTypeDefault value
namestringundefined
moduletypeof Moduleundefined
inject_referencebooleanfalse

Returns

Module<any, ModuleEvents>

Inherited from

Module.register

Defined in

src/utilities/module.ts:973


resolve

resolve(name): null | Module<"", ModuleEvents>

Parameters

NameType
namestring | Module<"", ModuleEvents>

Returns

null | Module<"", ModuleEvents>

Inherited from

Module.resolve

Defined in

src/utilities/module.ts:791


unload

unload(): undefined | null | Promise<void>

Unload this module. If the module has no onUnload method, but it has an onLoad method, then this will throw an error.

When this is called, if this module is currently enabled, it will be disabled first. As part of that, all modules that depend on this module will also be disabled first. All modules that depend on this module as a load dependency will be unloaded first.

Please note that, if any of those dependencies cannot be unloaded or disabled, this will fail.

Returns

undefined | null | Promise<void>

Inherited from

Module.unload

Defined in

src/utilities/module.ts:287


waitFor

waitFor<K>(event, ctx?, priority?, prepend?): Promise<TEventMap[K]>

Type parameters

NameType
Kextends string

Parameters

NameTypeDefault value
eventKundefined
ctx?anyundefined
priority?numberundefined
prependbooleanfalse

Returns

Promise<TEventMap[K]>

Inherited from

Module.waitFor

Defined in

src/utilities/module.ts:759


register

register(id?, info?): void

Register this add-on with the FrankerFaceZ module system. This should be called as soon as your add-on class is available and ready to be enabled. The AddonManager class will then call enable on this module (assuming the user wants the add-on to be enabled.)

Parameters

NameTypeDescription
id?string | AddonInfoThis add-on's ID, or an AddonInfo object.
info?AddonInfoAn optional AddonInfo object if id was not set to an AddonInfo object.

Returns

void

Defined in

src/utilities/addon.ts:49