MFDC-REPL
MFDC's own internal REPL command line interface.
This project provides the executable mrepl
which has the following functionality over regular REPL:
-
Babel pre-compiler (
babel
plugin) - All code is automatically compiled via BabelJS before it is run - making things like arrow functions available on older Node releases -
Lodash (
lodash
plugin) - lodash is provided aslodash
,l
and__
-
Moment (
moment
plugin) - moment is provided asmoment
-
Mongoose project support (
mongoose
plugin) - If the files./config/index.js
,./config/db.js
and./models/index.js
are found they are loaded in that order (with./models/index.js
expected to return an object containing the available compiled schemas. Models are then provided in thedb
object. e.g.db.users.find()
will return all users. -
STDIN slurping (
stdin
plugin) - Any piped input into the program is provied as theinput
variable. Automatic decoding of the variable will be attempted byJSON.parse()
otherwise it will be a raw string. - History saving - History saing is enabled by default
Installation
Simply run the following:
sudo npm install -g mfdc-repl
You should now be able to run the REPL interface with:
mrepl
Plugins
Plugins are provided in the plugins/
folder within the main script file.
Each plugin is a simple JavaScript file which is expected to expose a function taking a callback and the main app
argument. Each plugin can decorate the properties of the program and return the callback when finished.
Some usefully exposed properties:
Property path | Type | Default | Description |
---|---|---|---|
app |
Object | Complex | The main application object - an instance of a commander definition |
app.verbose |
Number | 0 | Verbosity level |
app.plugin |
Array | ['./plugins'] |
Globs to search for plugins |
app.repl |
Object | Complex | Repl options when creating the interface |
app.repl.globals |
Object | {} |
Any exported globals that should be available inside the REPL session |
app.repl.eval |
Array | [] |
Array of evaluation functions to run. Each Eval is run as a compose pipeline with the final output being returned to the REPL session |
inspect.depth |
Number | 2 | How deeply to examine objects when printing results to the console |
inspect.colors |
Boolean | true |
Whether colors are enabled when printing results to the console |