embed-shell
v1.0.0
Published
embed-shell ===========
Downloads
2
Readme
embed-shell
embed-shell is a utility module for embedding an interactive shell with some sane defaults.
Anytime .clear
is used within the shell it will reset the context to the initial state and
will clear the require.cache
of references to modules not loaded from node_modules
. The
.clearCache
command will reset the require.cache
but will otherwise leave the repl context
unchanged.
If you use mongoose
be aware that resetting the context will also reset the state of any Model
registred to any Connection
. If you create the server with a fully qualified path to a file
that initializes your models this will be required after the context has been cleared.
Currently node
supports await
within the top level of a REPL only if invoked with
--experimental-repl-await
. A REPL shell created by this module will, by default, monitor the
shell context and if a promise is assigned to a variable it will add a then
handler that will
upon either resolve/reject of the promise assign the result to the context variable. If the
rejection is an object it will assign true to the __rejected
property of that object.
Events
| event | callback | notes |
|------------|---------------------|-------|
| cleared
| (ctx: repl.Context) | emitted after clearing the require.cache
you can listen to this event to do additional customization of the context. |
| reset
| (ctx: repl.Context) | emitted after the context has been cleared. (Any mongoose models and schemas are cleared prior to the reset event being emitted. If you supplied a path to a file that can refresh them it will be required.) |
| shutdown
| () | emitted when the repl exits or closes |
Usage
const path = require('path');
const { Server } = require('./');
const server = new Server(__dirname, {
context: { active: true, name: 'Bob', occupation: 'Builder' },
modelsPath: path.resolve(__dirname, 'test', 'fixtures', 'models'),
prompt: 'example> ',
});
server.start();