trailpack
Trailpack Interface. Trailpacks extend the functionality of the Trails
framework. (Application functionality should be extended using
Microservices).
Usage
This module is a class which should be extended by all trailpacks.
Implement
See archetype/index.js
for more details.
const Trailpack = require('trailpack')
class ExampleTrailpack extends Trailpack {
constructor (app) {
super(app, {
config: require('./config'),
api: require('./api'),
pkg: require('./package')
})
}
validate () {
if (!this.app.config.example) throw new Error('config.example not set!')
}
configure () {
this.app.config.example.happy = true
}
initialize () {
setInterval(() => this.log.debug('happy?', this.app.config.example.happy), 1000)
}
}
Configure
See archetype/config/trailpack.js
for more details.
module.exports = {
provides: {
},
lifecycle: {
}
}
Lifecycle
app.start
- Validate
- Configure
- Initialize
app.ready
API
constructor(app, definition)
Instantiate the Trailpack. definition
is an object which contains three
optional properties: config
, api
, pkg
. Trailpack configuration is merged
into the application configuration.
validate()
Validate the preconditions for proper functioning of this trailpack. For
example, if this trailpack requires that a database is configured in
config/database.js
, this method should validate this. This method should incur
no side-effects. Do not alter any extant configuration.
configure()
Extend the configuration (config/
, or app.config
) of the application, or
add new configuration objects. This method is run before the application
has loaded. You can alter application configuration here.
initialize()
If you need to bind any event listeners, start servers, connect to databases,
all of that should be done in initialize. Here, all of the configuration is
loaded and finalized.
Contributing
We love contributions! Please see our Contribution Guide
for more information.
License
MIT