Constructor
new App(optionsopt)
| Name | Type | Attributes | Description | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options | Object | <optional> | App options. Properties
|
- Source
Members
applet :string
If app runs in applet mode, this will be the applet's name.
- string
- Source
applets :Array
Applets container.
- Array
- Source
args :Array.<string>
Program arguments.
$ node index.js arg1 arg2
...
console.log(this.args) // it should print: ['arg1', 'arg2']
- Array.<string>
- Source
- See
- module:Lib.parseArgsArgv
argv :Object
Program options.
- Dash (
-) breaks the string into object keys - While colon (
:) is used as namespace separator. If no namespace found, it is saved under_key.
Values are parsed automatically. See dotenv-parse-variables for details.
$ node index.js --my-name-first=John --my-name-last=Doe --my-birthDay=secret --nameSpace:path-subPath=true
...
// {
// _: {
// my: {
// name: { first: 'John', last: 'Doe' },
// birthDay: 'secret'
// }
// },
// nameSpace: { path: { subPath: true } }
// }
- Object
- Source
- See
- module:Lib.parseArgsArgv
baseClass
All plugin's base class are saved here as key-value pairs with plugin name as its key. The special key Base && Tools is for Base & Tools class so anytime you want to create your own plugin, just use something like this:
class MyPlugin extends this.app.baseClass.Base {
... your class
}- Source
boxen
Placeholder for boxen that will get imported from bajoCli later during boot process.
- Source
configHandlers :Array.<TAppConfigHandler>
Config handlers.
By default, there are two built-in handlers available: .js and .json. Use plugins to add more, e.g bajo-config lets you to use .yaml/.yml and .toml.
- Array.<TAppConfigHandler>
- Source
envVars :Object
Environment variables. Support dotenv (.env) file too!
- Underscore (
_) translates key to camel-cased one - Double underscores (
__) breaks the key into object keys - While dot (
.) is used as namespace separator. If no namespace found, it is saved under_key.
Values are also parsed automatically using dotenv-parse-variables.
Example:
MY_KEY=secret→{ _: { myKey: 'secret' } }MY_KEY__SUB_KEY=supersecret→{ _: { myKey: { subKey: 'supersecret' } } }MY_NS.MY_NAME=John→{ myNs: { myName: 'John' } }
- Object
- Source
- See
- module:Lib.parseEnv
getConfigFormats
Helper method to list all supported config formats.
- Source
lib :TAppLib
Gives you direct access to the most commonly used 3rd party library in a Bajo based app. No manual import necessary, always available, anywhere, anytime!
Example:
const { camelCase, kebabCase } = this.app.lib._
console.log(camelCase('Elit commodo sit et aliqua'))
- TAppLib
- Source
log :Log
Instance of system log.
- Source
options :Object
Copy of provided options.
- Object
- Source
pluginPkgs :Array
Plugin's package names container. This is the list of plugins to load. It is read from package.json and .plugins file by default, but you can override it by providing options.plugins at constructor.
- Array
- Source
runAt :Date
Date/time when your app start.
- Date
- Source
startPlugin
Start a plugin.
- Source
stopPlugin
Stop a plugin.
- Source
(static, constant) this.envs :TAppEnv
App environments.
- Source
(static, constant) this.mainNs :string
Your main namespace. And yes, you suppose to NOT CHANGE this.
- string
- Default Value
- 'main'
- Source
Methods
addPlugin(plugin, baseClassopt)
Add and save plugin and it's base class definition (if provided).
| Name | Type | Attributes | Description |
|---|---|---|---|
plugin | TPlugin | A valid bajo plugin. | |
baseClass | Object | <optional> | Base class definition. |
- Source
(async) boot() → {App}
Boot process:
- Parsing program arguments, options and environment values
- Create Bajo instance & initialize it
- Run in applet mode if
-aor--appletis given
After boot process is completed, event bajo:afterBootCompleted is emitted.
If app mode is applet, it runs your choosen applet instead.
- Source
- bajo:afterBootCompleted
- Type:
- App
dump(…args)
Dumping variable on screen. Like console.log with configurable options. Useful for quick debugging and testing. You can also use it to dump variables in production without worrying about performance because it is using Bajo's built-in cache to store the result of util's inspect, so it will only be processed once for each unique variable.
Any argument passed to this method will be displayed on screen. If the last argument is a boolean true, app will quit rightaway after dumping.
If you have bajoCli plugin installed, variables will be displayed in a nice box using boxen package. Otherwise, it will fallback to console.log with util's inspect result.
To have more control on how the variable is displayed, you can set options in Bajo's config under dump key. See Bajo#config for details.
| Name | Type | Attributes | Description |
|---|---|---|---|
args | any | <repeatable> | Variables to dump. |
- Source
exit(signalopt)
Terminate the app and back to console.
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
signal | string | <optional> | SIGINT | Signal to send. |
- Source
getAllNs() → {Array.<string>}
Get all loaded plugin namespaces.
- Source
- Type:
- Array.<string>
getAllPlugins() → {Array.<TPlugin>}
Get all plugins loaded plugins.
- Source
- Type:
- Array.<TPlugin>
getPlugin(name, silentopt) → {Object}
Get plugin by its namespace.
| Name | Type | Attributes | Description |
|---|---|---|---|
name | string | Plugin name/namespace or alias. | |
silent | boolean | <optional> | If |
- Source
Plugin object.
- Type:
- Object
getPluginDataDir(name, ensureDiropt) → {string}
Get plugin data directory
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
name | string | Plugin name (namespace) or alias. | ||
ensureDir | boolean | <optional> | true | Set |
- Source
- Type:
- string
getPluginFile(file) → {string}
Resolve file path from:
- local/absolute file
- TNsPath (
myPlugin:/path/to/file.txt) - file under node_modules, e.g.
myPlugin:node_modules/some-package/file.txt
| Name | Type | Description |
|---|---|---|
file | string | File path, see above for supported types. |
- Source
Resolved file path.
- Type:
- string
getPlugins(nssopt) → {Array.<TPlugin>}
Get loaded plugins.
| Name | Type | Attributes | Description |
|---|---|---|---|
nss | Array.<string> | <optional> | Array of namespaces. If empty, it returns all loaded plugins. |
- Source
- Type:
- Array.<TPlugin>
loadIntl(ns)
Load internationalization & languages files for particular plugin.
| Name | Type | Description |
|---|---|---|
ns | string | Plugin name. |
- Source
t(ns, text, …params) → {string}
Translate text and interpolate with given args.
There is a shortcut to this method attached on all plugins. You'll normally call that shorcut instead of this method, because it is bound to plugin's name already
... within your main plugin
const translated = this.app.t('main', 'My cute cat is %s', 'purring')
// or
const translated = this.t('My cute cat is %s', 'purring')
| Name | Type | Attributes | Description |
|---|---|---|---|
ns | string | Namespace. | |
text | string | Text to translate. | |
params | any | <repeatable> | Arguments. |
- Source
- Type:
- string
te(ns, text) → {boolean}
Check whether translation text/key exists
| Name | Type | Description |
|---|---|---|
ns | string | Namespace. |
text | string | Text to translate. |
- Source
- Type:
- boolean