Class: Module<TPath, TEventMap>
utilities/module.Module
A Module represents a distinct logical component of FrankerFaceZ. Modules can be loaded or unloaded at runtime, and they have a robust event system. Every add-on consists of one or more Module. There are separate modules for every system in FrankerFaceZ, such as localization, emotes, badges, chat rendering, etc.
If you are creating an add-on, you might use Module directly if you're using more than one module. If your add-on only has one module, then it should use the Addon subclass.
Type parameters
Name | Type | Description |
---|---|---|
TPath | extends string = "" | The absolute path where this module will be mounted in the module tree. Providing this string allows relative events to be used. |
TEventMap | extends ModuleEvents = ModuleEvents | A map of all event types that you're expecting to use. This may include events from other modules that you plan to use. You should import the type objects used by those other modules. |
Hierarchy
HierarchicalEventEmitter
<TPath
,TEventMap
>↳
Module
↳↳
LoadTracker
↳↳
Addon
↳↳
CSSTweaks
↳↳
Metadata
Constructors
constructor
• new Module<TPath
, TEventMap
>(name?
, parent?
, addon?
): Module
<TPath
, TEventMap
>
Type parameters
Name | Type |
---|---|
TPath | extends string = "" |
TEventMap | extends ModuleEvents = ModuleEvents |
Parameters
Name | Type |
---|---|
name? | string |
parent? | GenericModule |
addon? | boolean |
Returns
Module
<TPath
, TEventMap
>
Overrides
HierarchicalEventEmitter.constructor
Defined in
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.
Defined in
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
Defined in
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
Defined in
enabled
• get
enabled(): boolean
Whether or not the module is State.Enabled.
Returns
boolean
Defined in
enabling
• get
enabling(): boolean
Whether or not the module is State.Enabling.
Returns
boolean
Defined in
load_state
• get
load_state(): LoadState
The current LoadState of this module.
Returns
Defined in
loaded
• get
loaded(): boolean
Whether or not the module is LoadState.Loaded.
Returns
boolean
Defined in
loading
• get
loading(): boolean
Whether or not the module is LoadState.Loading.
Returns
boolean
Defined in
log
• get
log(): Logger
A Logger instance for this module.
Returns
Defined in
• set
log(log
): void
Parameters
Name | Type |
---|---|
log | Logger |
Returns
void
Defined in
path
• get
path(): TPath
Returns
TPath
Inherited from
EventEmitter.path
Defined in
state
• get
state(): State
The current State of this module.
Returns
Defined in
Methods
_time
▸ _time(event
): void
Record a timing event. The timing system is not yet finished.
Parameters
Name | Type | Description |
---|---|---|
event | any | The timing event to record. |
Returns
void
Defined in
abs_path
▸ abs_path(path
): string
Parameters
Name | Type |
---|---|
path | string |
Returns
string
Inherited from
HierarchicalEventEmitter.abs_path
Defined in
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
Defined in
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
Defined in
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
>
Defined in
emit
▸ emit<K
>(event
, ...args
): void
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type |
---|---|
event | K |
...args | TEventMap [K ] |
Returns
void
Inherited from
Defined in
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
>
Defined in
events
▸ events(): string
[]
Returns
string
[]
Inherited from
HierarchicalEventEmitter.events
Defined in
eventsWithChildren
▸ eventsWithChildren(): string
[]
Returns
string
[]
Inherited from
HierarchicalEventEmitter.eventsWithChildren
Defined in
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
Name | Type | Description |
---|---|---|
addon_id | string | The ID of the add-on requesting the module. |
addon | AddonInfo | The manifest of the add-on requesting the module. |
root | GenericModule | The root Addon module. |
caller | GenericModule | The specific Module making the request. |
Returns
Module
<""
, ModuleEvents
>
Defined in
hasListeners
▸ hasListeners<K
>(event
): boolean
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type |
---|---|
event | K |
Returns
boolean
Inherited from
HierarchicalEventEmitter.hasListeners
Defined in
hasModule
▸ hasModule(name
): boolean
Parameters
Name | Type |
---|---|
name | string |
Returns
boolean
Defined in
inject
▸ inject(name
, module?
, require?
): null
| GenericModule
Parameters
Name | Type | Default value |
---|---|---|
name | null | string | Module <"" , ModuleEvents > | undefined |
module? | null | typeof Module | GenericModule | undefined |
require | boolean | true |
Returns
null
| GenericModule
Defined in
injectAs
▸ injectAs(variable
, name
, module?
, require?
): null
| GenericModule
Parameters
Name | Type | Default value |
---|---|---|
variable | string | undefined |
name | null | string | Module <"" , ModuleEvents > | undefined |
module? | null | typeof Module | GenericModule | undefined |
require | boolean | true |
Returns
null
| GenericModule
Defined in
listeners
▸ listeners<K
>(event
): ListenerInfo
<any
[]>[]
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type |
---|---|
event | K |
Returns
ListenerInfo
<any
[]>[]
Inherited from
HierarchicalEventEmitter.listeners
Defined in
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
>
Defined in
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
Name | Type | Description |
---|---|---|
ctx | RequireContext | The context to load from. |
log? | Logger | A 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.
Defined in
makeEvent
▸ makeEvent<TData
>(data
): TypedFFZEvent
<TData
>
Create a new FFZEvent instance. This is a convenience method that wraps ()
Type parameters
Name | Type |
---|---|
TData | extends Record <string , any > = {} |
Parameters
Name | Type |
---|---|
data | TData |
Returns
TypedFFZEvent
<TData
>
Inherited from
HierarchicalEventEmitter.makeEvent
Defined in
makeWaitableEvent
▸ makeWaitableEvent<TData
, TReturn
>(data
): TypedFFZWaitableEvent
<TData
, TReturn
>
Create a new FFZWaitableEvent instance. This is a convenience method that wraps ()
Type parameters
Name | Type |
---|---|
TData | extends Record <string , any > = {} |
TReturn | void |
Parameters
Name | Type |
---|---|
data | TData |
Returns
TypedFFZWaitableEvent
<TData
, TReturn
>
Inherited from
HierarchicalEventEmitter.makeWaitableEvent
Defined in
many
▸ many<K
>(event
, ttl
, fn
, ctx?
, priority?
, prepend?
): void
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type | Default value |
---|---|---|
event | K | undefined |
ttl | number | undefined |
fn | EventListener <TEventMap [K ]> | undefined |
ctx? | any | undefined |
priority? | number | undefined |
prepend | boolean | false |
Returns
void
Overrides
Defined in
off
▸ off<K
>(event?
, fn?
, ctx?
): void
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type |
---|---|
event? | K |
fn? | EventListener |
ctx? | any |
Returns
void
Overrides
Defined in
offContext
▸ offContext<K
>(event
, ctx?
): void
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type |
---|---|
event | K |
ctx? | any |
Returns
void
Inherited from
HierarchicalEventEmitter.offContext
Defined in
on
▸ on<K
>(event
, fn
, ctx?
, priority?
, prepend?
): void
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type | Default value |
---|---|---|
event | K | undefined |
fn | EventListener <TEventMap [K ]> | undefined |
ctx? | any | undefined |
priority? | number | undefined |
prepend | boolean | false |
Returns
void
Overrides
Defined in
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
>
Defined in
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
>
Defined in
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
>
Defined in
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
>
Defined in
once
▸ once<K
>(event
, fn
, ctx?
, priority?
, prepend?
): void
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type | Default value |
---|---|---|
event | K | undefined |
fn | EventListener <TEventMap [K ]> | undefined |
ctx? | any | undefined |
priority? | number | undefined |
prepend | boolean | false |
Returns
void
Overrides
Defined in
register
▸ register(name
, module
, inject_reference?
): Module
<any
, ModuleEvents
>
Parameters
Name | Type | Default value |
---|---|---|
name | string | undefined |
module | typeof Module | undefined |
inject_reference | boolean | false |
Returns
Module
<any
, ModuleEvents
>
Defined in
resolve
▸ resolve(name
): null
| Module
<""
, ModuleEvents
>
Parameters
Name | Type |
---|---|
name | string | Module <"" , ModuleEvents > |
Returns
null
| Module
<""
, ModuleEvents
>
Defined in
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
>
Defined in
waitFor
▸ waitFor<K
>(event
, ctx?
, priority?
, prepend?
): Promise
<TEventMap
[K
]>
Type parameters
Name | Type |
---|---|
K | extends string |
Parameters
Name | Type | Default value |
---|---|---|
event | K | undefined |
ctx? | any | undefined |
priority? | number | undefined |
prepend | boolean | false |
Returns
Promise
<TEventMap
[K
]>
Overrides
HierarchicalEventEmitter.waitFor