Internal helpers called by Bajo and other classes. It should remains hidden and not to be imported by any program.
- Source
Methods
(async, static) bootOrder()
Setup plugins boot orders by reading plugin's .bootorder file if provided.
- Source
(async, static) bootPlugins()
Iterate through all plugins loaded and do:
- build configs
- ensure names & aliases uniqueness
- ensure dependencies are met
- collect hooks
- run plugins
- Source
(async, static) buildBaseConfig()
Building bajo base config. Mostly dealing with directory setups:
- determine base directory
- check whether data directory is valid. If not exist, create one inside app dir
- ensure data config directory is there
- ensure tmp dir is there
- read the list of plugins from
.pluginsfile
- Source
(async, static) buildConfigs()
Build configurations
- Source
(async, static) buildExtConfig()
Bajo extra config:
- reading config file
- merge config with arguments & environments values
- Set environment (
devorprod)
- Source
(async, static) buildPlugins()
Building all plugins:
- load from app's pluginPkgs
- iterate through the list and build related plugins
- making sure main plugin is there. If not, create from template
- attach these plugins to the app instance
- Source
(async, static) checkDependencies()
Ensure dependencies are met
- Source
(async, static) checkNameAliases()
Ensure for names and aliases to be unique and no clashes with other plugins
- Source
(async, static) collectConfigHandlers()
Collect all config handlers, including the one provided by plugins
- Source
(async, static) collectHooks()
Collect and build hooks and push them to the bajo's hook system
- Source
(async, static) exitHandler()
Attach plugins exit handlers and make sure the app shutdowns gracefully
- Source
(static) findDeep(item, paths) → {string}
Find item deep in paths.
| Name | Type | Description |
|---|---|---|
item | string | Item to find. |
paths | Array | Array of path to look for. |
- Source
- Type:
- string
(static) freeze(obj, shallowopt)
Freeze object.
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
obj | Object | Object to freeze. | ||
shallow | boolean | <optional> | false | If |
- Source
(async, static) importModule(file, optionsopt) → {any}
Import file/module from any loaded plugins.
E.g. your plugin structure looks like this:
|- src
| |- lib
| | |- my-module.js
|- index.js
|- package.json
And this is how to import my-module.js:
const { importModule } = this.app.bajo
const myModule = await importModule('myPlugin:/src/lib/my-module.js')
| Name | Type | Attributes | Default | Description | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
file | TNsPathPairs | File to import. | ||||||||||||||||||||||
options | Object | <optional> | {} | Options. Properties
|
- Source
- Type:
- any
(async, static) run()
Finally, run all plugins
- Source
(async, static) runAsApplet()
If app is in applet mode, this little helper should take care plugin's applet boot process
- Source
- event:{ns}:beforeAppletRun
- event:{ns}:afterAppletRun