Constructor
new App(cwd)
Name | Type | Description |
---|---|---|
cwd | string | Current working dirctory |
- Source
Members
applet :string
If app runs in applet mode, this will be the applet's name
- string
- Source
applets :Array
Applets
- Array
- Source
args :Array.<string>
Program arguments
$ node index.js arg1 arg2
...
console.log(this.args) // it should print: ['arg1', 'arg2']
- Array.<string>
- Source
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
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
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'))
- Source
log :Log
Instance of system log
- Source
pluginClass
All plugin's class definitions are saved here as key-value pairs with plugin name as its key. The special key base
is for Base's class so anytime you want to create your own plugin, just use something like this:
class MyPlugin extends this.app.pluginClass.base {
... your class
}
- Source
pluginPkgs :Array
List of all loaded plugin's package names
- Array
- Source
runAt :Date
Date/time when your app start
- Date
- Source
(static, constant) envs :TAppEnv
App environments
- Source
(static, constant) mainNs :string
Your main namespace. And yes, you suppose to NOT CHANGE this
- string
- Default Value
- 'main'
- Source
Methods
addPlugin(plugin, pluginClassopt)
Add and save plugin and it's class definition (if provided)
Name | Type | Attributes | Description |
---|---|---|---|
plugin | TPlugin | A valid bajo plugin | |
pluginClass | Object | <optional> | Plugin's class definition |
- Source
(async) boot() → {App}
Booting the app.
- Source
- Type:
- App
dump(…args)
Dumping variable on screen. Like console.log
but with max 10 depth.
Name | Type | Attributes | Description |
---|---|---|---|
args | any | <repeatable> | any arguments passed will be displayed on screen. If the last argument is a boolean 'true', app will quit rightaway |
- 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 namesspaces
- Source
- Type:
- Array.<string>
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