bajo 2.21.0 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsdoc.conf.json +1 -1
- package/class/app.js +139 -115
- package/class/bajo.js +96 -89
- package/class/base.js +25 -9
- package/class/cache.js +32 -19
- package/class/err.js +11 -9
- package/class/log.js +102 -52
- package/class/plugin.js +45 -35
- package/class/print.js +45 -44
- package/class/tools.js +7 -1
- package/docs/App.html +1 -23
- package/docs/Bajo.html +1 -6
- package/docs/Base.html +1 -1
- package/docs/Cache.html +1 -1
- package/docs/Err.html +2 -2
- package/docs/Log.html +4 -4
- package/docs/Plugin.html +1 -1
- package/docs/Print.html +1 -1
- package/docs/Tools.html +1 -1
- package/docs/class_app.js.html +141 -117
- package/docs/class_bajo.js.html +98 -91
- package/docs/class_base.js.html +27 -11
- package/docs/class_cache.js.html +34 -21
- package/docs/class_err.js.html +13 -11
- package/docs/class_log.js.html +104 -54
- package/docs/class_plugin.js.html +47 -37
- package/docs/class_print.js.html +47 -46
- package/docs/class_tools.js.html +9 -3
- package/docs/data/search.json +1 -1
- package/docs/global.html +1 -1
- package/docs/index.html +1 -1
- package/docs/index.js.html +8 -4
- package/docs/{class__helper.js.html → lib_helper.js.html} +208 -96
- package/docs/lib_hook.js.html +231 -0
- package/docs/module-Helper.html +8 -1
- package/docs/module-Hook.html +3 -0
- package/docs/module-Lib.html +1 -8
- package/index.js +6 -2
- package/{class/_helper.js → lib/helper.js} +206 -94
- package/lib/hook.js +228 -0
- package/package.json +1 -1
- package/wiki/CHANGES.md +10 -0
- package/docs/class_helper_bajo.js.html +0 -398
- package/docs/class_helper_base.js.html +0 -246
- package/docs/class_misc_err.js.html +0 -129
- package/docs/class_misc_log.js.html +0 -210
- package/docs/class_misc_print.js.html +0 -267
- package/docs/lib_current-loc.js.html +0 -36
- package/docs/lib_find-deep.js.html +0 -27
- package/docs/lib_formats.js.html +0 -68
- package/docs/lib_freeze.js.html +0 -54
- package/docs/lib_import-module.js.html +0 -61
- package/docs/lib_index.js.html +0 -9
- package/docs/lib_log-levels.js.html +0 -38
- package/docs/lib_parse-args-argv.js.html +0 -83
- package/docs/lib_parse-env.js.html +0 -53
- package/docs/lib_resolve-path.js.html +0 -27
- package/docs/lib_shim.js.html +0 -40
- package/docs/module-Helper_Bajo.html +0 -3
- package/docs/module-Helper_Base.html +0 -3
- package/lib/find-deep.js +0 -24
- package/lib/formats.js +0 -65
- package/lib/freeze.js +0 -51
- package/lib/import-module.js +0 -58
- package/lib/index.js +0 -6
- package/lib/log-levels.js +0 -35
package/class/print.js
CHANGED
|
@@ -7,11 +7,13 @@ import Tools from './tools.js'
|
|
|
7
7
|
const { isPlainObject } = lodash
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* @typedef
|
|
11
|
-
* @
|
|
12
|
-
* @
|
|
13
|
-
* @property {boolean} [
|
|
14
|
-
* @property {
|
|
10
|
+
* @typedef TOptions
|
|
11
|
+
* @memberof Print
|
|
12
|
+
* @type {Object}
|
|
13
|
+
* @property {boolean} [showDatetime=false] - Show actual date & time
|
|
14
|
+
* @property {boolean} [showCounter=false] - Show as counter
|
|
15
|
+
* @property {boolean} [silent] - Suppress any messages. Defaults to the one set in {@tutorial config}
|
|
16
|
+
* @property {Object} [ora] - {@link https://github.com/sindresorhus/ora#api|Ora's options} object
|
|
15
17
|
* @see {@link Print}
|
|
16
18
|
*/
|
|
17
19
|
|
|
@@ -26,15 +28,14 @@ const { isPlainObject } = lodash
|
|
|
26
28
|
class Print extends Tools {
|
|
27
29
|
/**
|
|
28
30
|
* @param {Plugin} plugin Plugin instance.
|
|
29
|
-
* @param {
|
|
31
|
+
* @param {Print.TOptions} [options={}] Options object.
|
|
30
32
|
*/
|
|
31
33
|
constructor (plugin, options = {}) {
|
|
32
34
|
super(plugin)
|
|
33
35
|
|
|
34
36
|
/**
|
|
35
37
|
* Options object.
|
|
36
|
-
*
|
|
37
|
-
* @type {TPrintOptions}
|
|
38
|
+
* @type {Print.TOptions}
|
|
38
39
|
*/
|
|
39
40
|
this.options = options
|
|
40
41
|
if (this.app.applet) {
|
|
@@ -43,16 +44,14 @@ class Print extends Tools {
|
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
47
|
+
* Start time of the instance, used to calculate elapsed time.
|
|
48
48
|
* @type {Object}
|
|
49
|
-
* @see {@link https://day.js.org|dayjs}
|
|
49
|
+
* @see {@link https://day.js.org|dayjs}
|
|
50
50
|
*/
|
|
51
51
|
this.startTime = this.app.lib.dayjs()
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* ora instance
|
|
55
|
-
*
|
|
56
55
|
* @see {@link https://github.com/sindresorhus/ora|ora}
|
|
57
56
|
*/
|
|
58
57
|
this.ora = ora(this.options.ora)
|
|
@@ -63,7 +62,8 @@ class Print extends Tools {
|
|
|
63
62
|
* Setting spinner options; override the one passed at constructor.
|
|
64
63
|
*
|
|
65
64
|
* @method
|
|
66
|
-
* @param {any[]} [args=[]] Array of options. If the last argument is an object, it will be used to override ora options
|
|
65
|
+
* @param {any[]} - [args=[]] Array of options. If the last argument is an object, it will be used to override ora options
|
|
66
|
+
* @returns {void}
|
|
67
67
|
*/
|
|
68
68
|
setOpts = (args = []) => {
|
|
69
69
|
const { silent } = this.app.bajo.config
|
|
@@ -74,10 +74,10 @@ class Print extends Tools {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
|
-
* Translate, prefixed with counter and/or datetime etc.
|
|
77
|
+
* Translate text, prefixed with counter and/or datetime etc.
|
|
78
78
|
*
|
|
79
|
-
* @param {string} text Text to
|
|
80
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora's options.
|
|
79
|
+
* @param {string} text - Text to translate
|
|
80
|
+
* @param {...any} [args] - Any variable to interpolate text translation. If the last argument is an object, it will be used to override ora's options.
|
|
81
81
|
* @returns {string}
|
|
82
82
|
*/
|
|
83
83
|
buildText = (text, ...args) => {
|
|
@@ -95,9 +95,9 @@ class Print extends Tools {
|
|
|
95
95
|
* Set spinner's text,
|
|
96
96
|
*
|
|
97
97
|
* @method
|
|
98
|
-
* @param {string} text Text to use
|
|
99
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora's options
|
|
100
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
98
|
+
* @param {string} text - Text to use
|
|
99
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora's options
|
|
100
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
101
101
|
*/
|
|
102
102
|
setText = (text, ...args) => {
|
|
103
103
|
text = this.buildText(text, ...args)
|
|
@@ -109,7 +109,7 @@ class Print extends Tools {
|
|
|
109
109
|
* Get elapsed time since instance is created.
|
|
110
110
|
*
|
|
111
111
|
* @method
|
|
112
|
-
* @param {string} [unit=hms] Unit's time. Put 'hms' (default) to get hour, minute, second format or of any format supported by {@link https://day.js.org/docs/en/display/difference|dayjs}
|
|
112
|
+
* @param {string} [unit='hms'] - Unit's time. Put 'hms' (default) to get hour, minute, second format or of any format supported by {@link https://day.js.org/docs/en/display/difference|dayjs}
|
|
113
113
|
* @returns {string} Elapsed time since start
|
|
114
114
|
* @see {@link https://day.js.org/docs/en/display/difference|dayjs duration format}
|
|
115
115
|
*/
|
|
@@ -120,12 +120,12 @@ class Print extends Tools {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
/**
|
|
123
|
-
* Start the spinner
|
|
123
|
+
* Start the spinner.
|
|
124
124
|
*
|
|
125
125
|
* @method
|
|
126
|
-
* @param {string} text Text to use
|
|
127
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora's options
|
|
128
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
126
|
+
* @param {string} text - Text to use
|
|
127
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora's options
|
|
128
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
129
129
|
*/
|
|
130
130
|
start = (text, ...args) => {
|
|
131
131
|
this.setOpts(args)
|
|
@@ -138,7 +138,7 @@ class Print extends Tools {
|
|
|
138
138
|
* Stop the spinner.
|
|
139
139
|
*
|
|
140
140
|
* @method
|
|
141
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
141
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
142
142
|
*/
|
|
143
143
|
stop = () => {
|
|
144
144
|
this.ora.stop()
|
|
@@ -146,12 +146,12 @@ class Print extends Tools {
|
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
/**
|
|
149
|
-
* Print success message, prefixed with a check icon
|
|
149
|
+
* Print success message, prefixed with a check icon
|
|
150
150
|
*
|
|
151
151
|
* @method
|
|
152
|
-
* @param {string} text Text to use
|
|
153
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora options.
|
|
154
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
152
|
+
* @param {string} text - Text to use
|
|
153
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora options.
|
|
154
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
155
155
|
*/
|
|
156
156
|
succeed = (text, ...args) => {
|
|
157
157
|
this.setText(text, ...args)
|
|
@@ -163,9 +163,9 @@ class Print extends Tools {
|
|
|
163
163
|
* Print failed message, prefixed with a cross icon.
|
|
164
164
|
*
|
|
165
165
|
* @method
|
|
166
|
-
* @param {string} text Text to use
|
|
167
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
168
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
166
|
+
* @param {string} text - Text to use
|
|
167
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
168
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
169
169
|
*/
|
|
170
170
|
fail = (text, ...args) => {
|
|
171
171
|
this.setText(text, ...args)
|
|
@@ -177,9 +177,9 @@ class Print extends Tools {
|
|
|
177
177
|
* Print warning message, prefixed with a warn icon.
|
|
178
178
|
*
|
|
179
179
|
* @method
|
|
180
|
-
* @param {string} text Text to use
|
|
181
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
182
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
180
|
+
* @param {string} text - Text to use
|
|
181
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
182
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
183
183
|
*/
|
|
184
184
|
warn = (text, ...args) => {
|
|
185
185
|
this.setText(text, ...args)
|
|
@@ -191,9 +191,9 @@ class Print extends Tools {
|
|
|
191
191
|
* Print information message, prefixed with an info icon.
|
|
192
192
|
*
|
|
193
193
|
* @method
|
|
194
|
-
* @param {string} text Text to use
|
|
195
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
196
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
194
|
+
* @param {string} text - Text to use
|
|
195
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
196
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
197
197
|
*/
|
|
198
198
|
info = (text, ...args) => {
|
|
199
199
|
this.setText(text, ...args)
|
|
@@ -205,7 +205,7 @@ class Print extends Tools {
|
|
|
205
205
|
* Clear spinner text.
|
|
206
206
|
*
|
|
207
207
|
* @method
|
|
208
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
208
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
209
209
|
*/
|
|
210
210
|
clear = () => {
|
|
211
211
|
this.ora.clear()
|
|
@@ -216,7 +216,7 @@ class Print extends Tools {
|
|
|
216
216
|
* Force render spinner.
|
|
217
217
|
*
|
|
218
218
|
* @method
|
|
219
|
-
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
219
|
+
* @returns {Print} Return the instance itself, usefull for method chaining
|
|
220
220
|
*/
|
|
221
221
|
render = () => {
|
|
222
222
|
this.ora.render()
|
|
@@ -224,11 +224,12 @@ class Print extends Tools {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
/**
|
|
227
|
-
* Print failed message, prefixed with a cross icon and exit.
|
|
227
|
+
* Print failed message, prefixed with a cross icon and exit application abruptly.
|
|
228
228
|
*
|
|
229
229
|
* @method
|
|
230
|
-
* @param {string} text Text to use
|
|
231
|
-
* @param {...any} [args] Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
230
|
+
* @param {string} text - Text to use
|
|
231
|
+
* @param {...any} [args] - Any variable to interpolate text. If the last argument is an object, it will be used to override ora options
|
|
232
|
+
* @returns {void}
|
|
232
233
|
*/
|
|
233
234
|
fatal = (text, ...args) => {
|
|
234
235
|
if (text instanceof Error) {
|
|
@@ -245,7 +246,7 @@ class Print extends Tools {
|
|
|
245
246
|
* Create a new print instance.
|
|
246
247
|
*
|
|
247
248
|
* @method
|
|
248
|
-
* @param {
|
|
249
|
+
* @param {App.TOptions} [options] Options object. If not provided, defaults to the current options.
|
|
249
250
|
* @returns {Print} Return new print instance.
|
|
250
251
|
*/
|
|
251
252
|
spinner = (options) => {
|
package/class/tools.js
CHANGED
|
@@ -19,9 +19,11 @@ class Tools {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Force bind methods to self (
|
|
22
|
+
* Force bind methods to self (`this`).
|
|
23
23
|
*
|
|
24
|
+
* @method
|
|
24
25
|
* @param {string[]} names - Method's names
|
|
26
|
+
* @returns {void}
|
|
25
27
|
*/
|
|
26
28
|
selfBind (names) {
|
|
27
29
|
for (const name of names) {
|
|
@@ -31,6 +33,10 @@ class Tools {
|
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* Dispose internal references.
|
|
36
|
+
*
|
|
37
|
+
* @async
|
|
38
|
+
* @method
|
|
39
|
+
* @returns {Promise<void>}
|
|
34
40
|
*/
|
|
35
41
|
dispose = async () => {
|
|
36
42
|
this.app = null
|
package/docs/App.html
CHANGED
|
@@ -1,25 +1,3 @@
|
|
|
1
1
|
<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Class: App</title><!--[if lt IE 9]>
|
|
2
2
|
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
3
|
-
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="light"><div class="sidebar-container"><div class="sidebar" id="sidebar"><a href="/" class="sidebar-title sidebar-title-anchor">Bajo API</a><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="App.html">App</a></div><div class="sidebar-section-children"><a href="Bajo.html">Bajo</a></div><div class="sidebar-section-children"><a href="Base.html">Base</a></div><div class="sidebar-section-children"><a href="Cache.html">Cache</a></div><div class="sidebar-section-children"><a href="Err.html">Err</a></div><div class="sidebar-section-children"><a href="Log.html">Log</a></div><div class="sidebar-section-children"><a href="Plugin.html">Plugin</a></div><div class="sidebar-section-children"><a href="Print.html">Print</a></div><div class="sidebar-section-children"><a href="Tools.html">Tools</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-events"><div>Events</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#event:bajo:afterAll%257Bmethod%257D">bajo:afterAll{method}</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:afterBootComplete">bajo:afterBootComplete</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:afterBuildCollection">bajo:afterBuildCollection</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:afterCollectHooks">bajo:afterCollectHooks</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:beforeAll%257Bmethod%257D">bajo:beforeAll{method}</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:beforeBuildCollection">bajo:beforeBuildCollection</a></div><div class="sidebar-section-children"><a href="global.html#event:%257Bns%257D:after%257Bmethod%257D">{ns}:after{method}</a></div><div class="sidebar-section-children"><a href="global.html#event:%257Bns%257D:beforeAppletRun">{ns}:beforeAppletRun</a></div><div class="sidebar-section-children"><a href="global.html#event:%257Bns%257D:before%257Bmethod%257D">{ns}:before{method}</a></div><div class="sidebar-section-children"><a href="module-Helper%257Bns%257D_afterAppletRun.html">Helper{ns}:afterAppletRun</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-Helper.html">Helper</a></div><div class="sidebar-section-children"><a href="module-Lib.html">Lib</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#TAppConfigHandler">TAppConfigHandler</a></div><div class="sidebar-section-children"><a href="global.html#TAppEnv">TAppEnv</a></div><div class="sidebar-section-children"><a href="global.html#TBajoDataType">TBajoDataType</a></div><div class="sidebar-section-children"><a href="global.html#TBajoFormatResult">TBajoFormatResult</a></div><div class="sidebar-section-children"><a href="global.html#TBajoFormatType">TBajoFormatType</a></div><div class="sidebar-section-children"><a href="global.html#TLogJson">TLogJson</a></div><div class="sidebar-section-children"><a href="global.html#TLogLevels">TLogLevels</a></div><div class="sidebar-section-children"><a href="global.html#TNsPathPairs">TNsPathPairs</a></div><div class="sidebar-section-children"><a href="global.html#TNsPathResult">TNsPathResult</a></div><div class="sidebar-section-children"><a href="global.html#TPrintOptions">TPrintOptions</a></div><div class="sidebar-section-children"><a href="global.html#boot">boot</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"><div class="navbar-item"><a id="" href="https://www.npmjs.com/package/bajo" target="">NPM</a></div><div class="navbar-item"><a id="" href="https://github.com/ardhi/bajo" target="">Github</a></div><div class="navbar-item"><a id="" href="https://bajo.app" target="">Bajo</a></div></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><header><h1 id="App-title" class="has-anchor">App</h1><div class="class-description"><p>App class. This is the root. This is where all plugins call it home.</p></div></header><article><div class="container-overview"><h2 id="constructor" class="has-anchor">Constructor</h2><h3 class="name has-anchor" id="App"><span class="type-signature"></span>new App<span class="signature">(options<span class="signature-attributes">opt</span>)</span></h3><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="description last"><p>App options.</p><h6>Properties</h6><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>cwd</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Set current working directory. Defaults to the script directory.</p></td></tr><tr><td class="name"><code>plugins</code></td><td class="type"><span class="param-type">Array.<string></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Array of plugins to load. If provided, it override the list in <code>package.json</code> and <code>.plugins</code> file.</p></td></tr><tr><td class="name"><code>config</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Plugin's config object. If provided, plugin configs will no longer be read from its config files.</p></td></tr></tbody></table></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line45">line 45</a></li></ul></dd></div></dl></div><h2 id="members" class="subsection-title has-anchor">Members</h2><h3 class="name has-anchor" id="applet"><span class="type-signature"></span>applet<span class="type-signature"> :string</span></h3><div class="description"><p>If app runs in applet mode, this will be the applet's name.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line157">line 157</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="applets"><span class="type-signature"></span>applets<span class="type-signature"> :Array</span></h3><div class="description"><p>Applets container.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line89">line 89</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="args"><span class="type-signature"></span>args<span class="type-signature"> :Array.<string></span></h3><div class="description"><p>Program arguments.</p><pre class="prettyprint source"><code>$ node index.js arg1 arg2
|
|
4
|
-
...
|
|
5
|
-
console.log(this.args) // it should print: ['arg1', 'arg2']
|
|
6
|
-
</code></pre></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line171">line 171</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Lib.parseArgsArgv</li></ul></dd></div></dl><h3 class="name has-anchor" id="argv"><span class="type-signature"></span>argv<span class="type-signature"> :Object</span></h3><div class="description"><p>Program options.</p><ul><li>Dash (<code>-</code>) breaks the string into object keys</li><li>While colon (<code>:</code>) is used as namespace separator. If no namespace found, it is saved under <code>_</code> key.</li></ul><p>Values are parsed automatically. See <a href="https://github.com/ladjs/dotenv-parse-variables">dotenv-parse-variables</a> for details.</p><pre class="prettyprint source"><code>$ node index.js --my-name-first=John --my-name-last=Doe --my-birthDay=secret --nameSpace:path-subPath=true
|
|
7
|
-
...
|
|
8
|
-
// {
|
|
9
|
-
// _: {
|
|
10
|
-
// my: {
|
|
11
|
-
// name: { first: 'John', last: 'Doe' },
|
|
12
|
-
// birthDay: 'secret'
|
|
13
|
-
// }
|
|
14
|
-
// },
|
|
15
|
-
// nameSpace: { path: { subPath: true } }
|
|
16
|
-
// }
|
|
17
|
-
</code></pre></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line199">line 199</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Lib.parseArgsArgv</li></ul></dd></div></dl><h3 class="name has-anchor" id="baseClass"><span class="type-signature"></span>baseClass<span class="type-signature"></span></h3><div class="description"><p>All plugin's base class are saved here as key-value pairs with plugin name as its key. The special key <code>Base</code> && <code>Tools</code> is for <a href="Base.html">Base</a> & <a href="Tools.html">Tools</a> class so anytime you want to create your own plugin, just use something like this:</p><pre class="prettyprint source lang-javascript"><code>class MyPlugin extends this.app.baseClass.Base {
|
|
18
|
-
... your class
|
|
19
|
-
}</code></pre></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line150">line 150</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="boxen"><span class="type-signature"></span>boxen<span class="type-signature"></span></h3><div class="description"><p>Placeholder for boxen that will get imported from <code>bajoCli</code> later during boot process.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line224">line 224</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="configHandlers"><span class="type-signature"></span>configHandlers<span class="type-signature"> :Array.<<a href="global.html#TAppConfigHandler">TAppConfigHandler</a>></span></h3><div class="description"><p>Config handlers.</p><p>By default, there are two built-in handlers available: <code>.js</code>, <code>.json</code> and <code>.yml/.yaml</code>. Use plugins to add more, e.g <a href="https://github.com/ardhi/bajo-config">bajo-config</a> lets you to use <code>.toml</code>.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<<a href="global.html#TAppConfigHandler">TAppConfigHandler</a>></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line115">line 115</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="envVars"><span class="type-signature"></span>envVars<span class="type-signature"> :Object</span></h3><div class="description"><p>Environment variables. Support dotenv (<code>.env</code>) file too!</p><ul><li>Underscore (<code>_</code>) translates key to camel-cased one</li><li>Double underscores (<code>__</code>) breaks the key into object keys</li><li>While dot (<code>.</code>) is used as namespace separator. If no namespace found, it is saved under <code>_</code> key.</li></ul><p>Values are also parsed automatically using <a href="https://github.com/ladjs/dotenv-parse-variables">dotenv-parse-variables</a>.</p><p>Example:</p><ul><li><code>MY_KEY=secret</code> → <code>{ _: { myKey: 'secret' } }</code></li><li><code>MY_KEY__SUB_KEY=supersecret</code> → <code>{ _: { myKey: { subKey: 'supersecret' } } }</code></li><li><code>MY_NS.MY_NAME=John</code> → <code>{ myNs: { myName: 'John' } }</code></li></ul></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line219">line 219</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Lib.parseEnv</li></ul></dd></div></dl><h3 class="name has-anchor" id="lib"><span class="type-signature"></span>lib<span class="type-signature"> :TAppLib</span></h3><div class="description"><p>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!</p><p>Example:</p><pre class="prettyprint source lang-javascript"><code>const { camelCase, kebabCase } = this.app.lib._
|
|
20
|
-
console.log(camelCase('Elit commodo sit et aliqua'))
|
|
21
|
-
</code></pre></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">TAppLib</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line129">line 129</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="log"><span class="type-signature"></span>log<span class="type-signature"> :<a href="Log.html">Log</a></span></h3><div class="description"><p>Instance of system log.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type"><a href="Log.html">Log</a></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line138">line 138</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="options"><span class="type-signature"></span>options<span class="type-signature"> :Object</span></h3><div class="description"><p>Copy of provided options.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Object</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line58">line 58</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="pluginPkgs"><span class="type-signature"></span>pluginPkgs<span class="type-signature"> :Array</span></h3><div class="description"><p>Plugin's package names container. This is the list of plugins to load. It is read from <code>package.json</code> and <code>.plugins</code> file by default, but you can override it by providing <code>options.plugins</code> at constructor.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line96">line 96</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="runAt"><span class="type-signature"></span>runAt<span class="type-signature"> :Date</span></h3><div class="description"><p>Date/time when your app start.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Date</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line82">line 82</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="startPlugin"><span class="type-signature"></span>startPlugin<span class="type-signature"></span></h3><div class="description"><p>Start a plugin.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line580">line 580</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="stopPlugin"><span class="type-signature"></span>stopPlugin<span class="type-signature"></span></h3><div class="description"><p>Stop a plugin.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line590">line 590</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".this.envs"><span class="type-signature">(static, constant) </span>this.envs<span class="type-signature"> :<a href="global.html#TAppEnv">TAppEnv</a></span></h3><div class="description"><p>App environments.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type"><a href="global.html#TAppEnv">TAppEnv</a></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line75">line 75</a></li></ul></dd></div></dl><h3 class="name has-anchor" id=".this.mainNs"><span class="type-signature">(static, constant) </span>this.mainNs<span class="type-signature"> :string</span></h3><div class="description"><p>Your main namespace. And yes, you suppose to NOT CHANGE this.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-default bold">Default Value</dt><dd class="tag-default"><ul><li data-skip-pre-process="true">'main'</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line67">line 67</a></li></ul></dd></div></dl><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="addPlugin"><span class="type-signature"></span>addPlugin<span class="signature">(plugin, baseClass<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Add and save plugin and it's base class definition (if provided).</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>plugin</code></td><td class="type"><span class="param-type">TPlugin</span></td><td class="attributes"></td><td class="description last"><p>A valid bajo plugin.</p></td></tr><tr><td class="name"><code>baseClass</code></td><td class="type"><span class="param-type">Object</span></td><td class="attributes"><optional><br></td><td class="description last"><p>Base class definition.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line245">line 245</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="boot"><span class="type-signature">(async) </span>boot<span class="signature">()</span><span class="type-signature"> → {<a href="App.html">App</a>}</span></h3><div class="description"><p>Boot process:</p><ul><li>Parsing program arguments, options and environment values</li><li>Create <a href="Bajo.html">Bajo</a> instance & initialize it</li><li>Run in applet mode if <code>-a</code> or <code>--applet</code> is given</li></ul><p>After boot process is completed, event <code>bajo:afterBootCompleted</code> is emitted.</p><p>If app mode is <code>applet</code>, it runs your choosen applet instead.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line409">line 409</a></li></ul></dd></div></dl><div class="method-member-container flex w-100 overflow-auto mt-20"><strong>Fires:</strong><ul><li>bajo:afterBootCompleted</li></ul></div><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type"><a href="App.html">App</a></span></dd></dl></div><h3 class="name has-anchor" id="dump"><span class="type-signature"></span>dump<span class="signature">(…args)</span></h3><div class="description"><p>Dumping variable on screen. Like <code>console.log</code> 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.</p><p>Any argument passed to this method will be displayed on screen. If the last argument is a boolean <code>true</code>, app will quit rightaway after dumping.</p><p>If you have <code>bajoCli</code> plugin installed, variables will be displayed in a nice box using <code>boxen</code> package. Otherwise, it will fallback to <code>console.log</code> with util's inspect result.</p><p>To have more control on how the variable is displayed, you can set options in Bajo's config under <code>dump</code> key. See <a href="Bajo.html#config">Bajo#config</a> for details.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>args</code></td><td class="type"><span class="param-type">any</span></td><td class="attributes"><repeatable><br></td><td class="description last"><p>Variables to dump.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line373">line 373</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="exit"><span class="type-signature"></span>exit<span class="signature">(signal<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Terminate the app and back to console.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>signal</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"><optional><br></td><td class="default">SIGINT</td><td class="description last"><p>Signal to send.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line455">line 455</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="getAllNs"><span class="type-signature"></span>getAllNs<span class="signature">()</span><span class="type-signature"> → {Array.<string>}</span></h3><div class="description"><p>Get all loaded plugin namespaces.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line257">line 257</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<string></span></dd></dl></div><h3 class="name has-anchor" id="getAllPlugins"><span class="type-signature"></span>getAllPlugins<span class="signature">()</span><span class="type-signature"> → {Array.<TPlugin>}</span></h3><div class="description"><p>Get all plugins loaded plugins.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line279">line 279</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<TPlugin></span></dd></dl></div><h3 class="name has-anchor" id="getConfigFormats"><span class="type-signature"></span>getConfigFormats<span class="signature">(noDot<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Array.<string>}</span></h3><div class="description"><p>Helper method to list all supported config formats.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>noDot</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="description last"><p>If <code>true</code>, it will return the list without dot prefix.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line569">line 569</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<string></span></dd></dl></div><h3 class="name has-anchor" id="getPlugin"><span class="type-signature"></span>getPlugin<span class="signature">(name, silent<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Object}</span></h3><div class="description"><p>Get plugin by its namespace.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>Plugin name/namespace or alias.</p></td></tr><tr><td class="name"><code>silent</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="description last"><p>If <code>true</code>, silently return undefined even on error.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line291">line 291</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Plugin object.</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Object</span></dd></dl></div><h3 class="name has-anchor" id="getPluginDataDir"><span class="type-signature"></span>getPluginDataDir<span class="signature">(name, ensureDir<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {string}</span></h3><div class="description"><p>Get plugin data directory</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>name</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Plugin name (namespace) or alias.</p></td></tr><tr><td class="name"><code>ensureDir</code></td><td class="type"><span class="param-type">boolean</span></td><td class="attributes"><optional><br></td><td class="default">true</td><td class="description last"><p>Set <code>true</code> (default) to ensure directory is existed.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line319">line 319</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getPluginFile"><span class="type-signature"></span>getPluginFile<span class="signature">(file)</span><span class="type-signature"> → {string}</span></h3><div class="description"><p>Resolve file path from:</p><ul><li>local/absolute file</li><li>TNsPath (<code>myPlugin:/path/to/file.txt</code>)</li><li>file under node_modules, e.g. <code>myPlugin:node_modules/some-package/file.txt</code></li></ul></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>file</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>File path, see above for supported types.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line338">line 338</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Resolved file path.</p></div><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getPlugins"><span class="type-signature"></span>getPlugins<span class="signature">(nss<span class="signature-attributes">opt</span>)</span><span class="type-signature"> → {Array.<TPlugin>}</span></h3><div class="description"><p>Get loaded plugins.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>nss</code></td><td class="type"><span class="param-type">Array.<string></span></td><td class="attributes"><optional><br></td><td class="description last"><p>Array of namespaces. If empty, it returns all loaded plugins.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line268">line 268</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">Array.<TPlugin></span></dd></dl></div><h3 class="name has-anchor" id="loadIntl"><span class="type-signature"></span>loadIntl<span class="signature">(ns)</span></h3><div class="description"><p>Load internationalization & languages files for particular plugin.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>ns</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>Plugin name.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line466">line 466</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="t"><span class="type-signature"></span>t<span class="signature">(ns, text, …params)</span><span class="type-signature"> → {string}</span></h3><div class="description"><p>Translate text and interpolate with given <code>args</code>.</p><p>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</p><pre class="prettyprint source lang-javascript"><code>... within your main plugin
|
|
22
|
-
const translated = this.app.t('main', 'My cute cat is %s', 'purring')
|
|
23
|
-
// or
|
|
24
|
-
const translated = this.t('My cute cat is %s', 'purring')
|
|
25
|
-
</code></pre></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>ns</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>Namespace.</p></td></tr><tr><td class="name"><code>text</code></td><td class="type"><span class="param-type">string</span></td><td class="attributes"></td><td class="description last"><p>Text to translate.</p></td></tr><tr><td class="name"><code>params</code></td><td class="type"><span class="param-type">any</span></td><td class="attributes"><repeatable><br></td><td class="description last"><p>Arguments.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line535">line 535</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="te"><span class="type-signature"></span>te<span class="signature">(ns, text)</span><span class="type-signature"> → {boolean}</span></h3><div class="description"><p>Check whether translation text/key exists</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>ns</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>Namespace.</p></td></tr><tr><td class="name"><code>text</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>Text to translate.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line557">line 557</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type: </dt><dd><span class="param-type">boolean</span></dd></dl></div></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><a href="/" class="sidebar-title sidebar-title-anchor">Bajo API</a><div class="mobile-nav-links"><div class="navbar-item"><a id="" href="https://www.npmjs.com/package/bajo" target="">NPM</a></div><div class="navbar-item"><a id="" href="https://github.com/ardhi/bajo" target="">Github</a></div><div class="navbar-item"><a id="" href="https://bajo.app" target="">Bajo</a></div></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="App.html">App</a></div><div class="sidebar-section-children"><a href="Bajo.html">Bajo</a></div><div class="sidebar-section-children"><a href="Base.html">Base</a></div><div class="sidebar-section-children"><a href="Cache.html">Cache</a></div><div class="sidebar-section-children"><a href="Err.html">Err</a></div><div class="sidebar-section-children"><a href="Log.html">Log</a></div><div class="sidebar-section-children"><a href="Plugin.html">Plugin</a></div><div class="sidebar-section-children"><a href="Print.html">Print</a></div><div class="sidebar-section-children"><a href="Tools.html">Tools</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-events"><div>Events</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#event:bajo:afterAll%257Bmethod%257D">bajo:afterAll{method}</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:afterBootComplete">bajo:afterBootComplete</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:afterBuildCollection">bajo:afterBuildCollection</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:afterCollectHooks">bajo:afterCollectHooks</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:beforeAll%257Bmethod%257D">bajo:beforeAll{method}</a></div><div class="sidebar-section-children"><a href="global.html#event:bajo:beforeBuildCollection">bajo:beforeBuildCollection</a></div><div class="sidebar-section-children"><a href="global.html#event:%257Bns%257D:after%257Bmethod%257D">{ns}:after{method}</a></div><div class="sidebar-section-children"><a href="global.html#event:%257Bns%257D:beforeAppletRun">{ns}:beforeAppletRun</a></div><div class="sidebar-section-children"><a href="global.html#event:%257Bns%257D:before%257Bmethod%257D">{ns}:before{method}</a></div><div class="sidebar-section-children"><a href="module-Helper%257Bns%257D_afterAppletRun.html">Helper{ns}:afterAppletRun</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-Helper.html">Helper</a></div><div class="sidebar-section-children"><a href="module-Lib.html">Lib</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#TAppConfigHandler">TAppConfigHandler</a></div><div class="sidebar-section-children"><a href="global.html#TAppEnv">TAppEnv</a></div><div class="sidebar-section-children"><a href="global.html#TBajoDataType">TBajoDataType</a></div><div class="sidebar-section-children"><a href="global.html#TBajoFormatResult">TBajoFormatResult</a></div><div class="sidebar-section-children"><a href="global.html#TBajoFormatType">TBajoFormatType</a></div><div class="sidebar-section-children"><a href="global.html#TLogJson">TLogJson</a></div><div class="sidebar-section-children"><a href="global.html#TLogLevels">TLogLevels</a></div><div class="sidebar-section-children"><a href="global.html#TNsPathPairs">TNsPathPairs</a></div><div class="sidebar-section-children"><a href="global.html#TNsPathResult">TNsPathResult</a></div><div class="sidebar-section-children"><a href="global.html#TPrintOptions">TPrintOptions</a></div><div class="sidebar-section-children"><a href="global.html#boot">boot</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>
|
|
3
|
+
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="light"><div class="sidebar-container"><div class="sidebar" id="sidebar"><a href="/" class="sidebar-title sidebar-title-anchor">Bajo API</a><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="App.html">App</a></div><div class="sidebar-section-children"><a href="Bajo.html">Bajo</a></div><div class="sidebar-section-children"><a href="Base.html">Base</a></div><div class="sidebar-section-children"><a href="Cache.html">Cache</a></div><div class="sidebar-section-children"><a href="Err.html">Err</a></div><div class="sidebar-section-children"><a href="Log.html">Log</a></div><div class="sidebar-section-children"><a href="Plugin.html">Plugin</a></div><div class="sidebar-section-children"><a href="Print.html">Print</a></div><div class="sidebar-section-children"><a href="Tools.html">Tools</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="module-Helper.html">Helper</a></div><div class="sidebar-section-children"><a href="module-Hook.html">Hook</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-global"><div>Global</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="global.html#boot">boot</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"><div class="navbar-item"><a id="" href="https://www.npmjs.com/package/bajo" target="">NPM</a></div><div class="navbar-item"><a id="" href="https://github.com/ardhi/bajo" target="">Github</a></div><div class="navbar-item"><a id="" href="https://bajo.app" target="">Bajo</a></div></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><header><h1 id="App-title" class="has-anchor">App</h1><div class="class-description"><p>App class. This is the root. This is where all plugins call it home.</p></div></header><article><div class="container-overview"><h2 id="constructor" class="has-anchor">Constructor</h2><h3 class="name has-anchor" id="App"><span class="type-signature"></span>new App<span class="signature">(options<span class="signature-attributes">opt</span>)</span></h3><div class="description"><p>Constructor.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th>Attributes</th><th>Default</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>options</code></td><td class="type"><span class="param-type"><a href="App.html#.TOptions">App.<wbr>TOptions</a></span></td><td class="attributes"><optional><br></td><td class="default">{}</td><td class="description last"><p>Options object.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line80">line 80</a></li></ul></dd></div></dl></div><h2 id="members" class="subsection-title has-anchor">Members</h2><h3 class="name has-anchor" id="applet"><span class="type-signature"></span>applet<span class="type-signature"> :string</span></h3><div class="description"><p>If app runs in applet mode, this will be the applet's name.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">string</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line170">line 170</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="applets"><span class="type-signature"></span>applets<span class="type-signature"> :Array</span></h3><div class="description"><p>Applets container.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array</span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line114">line 114</a></li></ul></dd></div></dl><h3 class="name has-anchor" id="args"><span class="type-signature"></span>args<span class="type-signature"> :Array.<string></span></h3><div class="description"><p>Parsed program arguments.</p></div><div class="member-item-container flex"><strong>Type:</strong><ul><li><span class="param-type">Array.<string></span></li></ul></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="class_app.js.html">class/app.js</a>, <a href="class_app.js.html#line181">line 181</a></li></ul></dd></div><div class="details-item-container"><dt class="tag-see bold">See</dt><dd class="tag-see"><ul><li>module:Helper.parseArgsArgv</li></ul></dd></div></dl><b>Example</b><div class="rel"><pre class="prettyprint"><code>$ node index.js arg1 arg2
|