Home Manual Reference Source Test Repository

src/types/types.js

/**
 * @typedef {object} PluginConfig
 *
 * @property {string}   name - Defines the name of the plugin; if no `target` entry is present the name
 *                             doubles as the target (please see target).
 *
 * @property {string}   [target] - Defines the target NPM module to load or defines a local file (full
 *                                 path or relative to current working directory to load.
 *
 * @property {string}   [instance] - Defines an existing object instance to use as the plugin.
 *
 * @property {object}   [options] - Defines an object of options for the plugin.
 */

/**
 * @typedef {object} PluginData
 *
 * @property {string}   name - The name of the plugin.
 *
 * @property {string}   scopedName - The name of the plugin with the plugin managers event prepend string.
 *
 * @property {string}   target - Defines the target NPM module to loaded or defines a local file (full
 *                               path or relative to current working directory to load.
 *
 * @property {string}   targetEscaped - Provides the target, but properly escaped for RegExp usage.
 *
 * @property {string}   type - The type of plugin: `instance`, `require-module`, or `require-path`.
 *
 * @property {object}   options - Defines an object of options for the plugin.
 *
 * @property {string}   managerEventPrepend - The plugin manager event prepend string.
 */

/**
 * @typedef {object} PluginManagerOptions
 *
 * @property {boolean}   [pluginsEnabled] - If false all plugins are disabled.
 *
 * @property {boolean}   [noEventAdd] - If true this prevents plugins from being added by `plugin:add` and
 *                                      `plugin:add:all` events forcing direct method invocation for addition.
 *
 * @property {boolean}   [noEventDestroy] - If true this prevents the plugin mananger from being destroyed by
 *                                          `plugin:destroy:manager` forcing direct method invocation for destruction.
 *
 * @property {boolean}   [noEventRemoval] - If true this prevents plugins from being removed by `plugin:remove` and
 *                                          `plugin:remove:all` events forcing direct method invocation for removal.
 *
 * @property {boolean}   [throwNoMethod] - If true then when a method fails to be invoked by any plugin an exception
 *                                         will be thrown.
 *
 * @property {boolean}   [throwNoPlugin] - If true then when no plugin is matched to be invoked an exception will be
 *                                         thrown.
 */

/**
 * @external {EventProxy} https://docs.typhonjs.io/typhonjs-backbone-esnext/backbone-esnext-events/class/src/EventProxy.js~EventProxy.html
 */

/**
 * @external {TyphonEvents} https://docs.typhonjs.io/typhonjs-backbone-esnext/backbone-esnext-events/class/src/TyphonEvents.js~TyphonEvents.html
 */