entwine

0.1.0 • Public • Published

Entwine

Entwine

Immutable dependency injection in Node.js inspired (very) heavily by Component.

Installation

npm install --save entwine

Usage

let entwine = require('entwine');
 
//
// Database component
//
 
class Database extends entwine.component({config: {}, conn: nul}) {
  start() {
    let self = this;
 
    return connectToDatabase(this.config).then(conn => self.set('conn', conn));
  }
 
  stop() {
    let self = this;
 
    return disconnectFromDatabase(this.conn).then(() => self.remove('conn'));
  }
}
 
function database(config) {
  return new Database({config: config});
}
 
//
// Server component
//
 
class Server extends entwine.component({config: {}, socket: null, database: null}) {
  start() {
    let self = this;
 
    return listenOnPort(this.config).then(socket => self.set('socket', socket));
  }
 
  stop() {
    let self = this;
 
    return unlistenOnPort(this.config).then(() => self.remove('socket'));
  }
}
 
function server(config) {
  return new Server({config: config});
}
 
//
// System
//
 
entwine.system({
  server: server(serverConfig),
  database: database(databaseConfig)
},{
  server: ['database']
}).start().then(s => {
  console.log('system started');
  return s.stop();
}).then(() => {
  console.log('system stopped');
});
 

Package Sidebar

Install

npm i entwine

Weekly Downloads

0

Version

0.1.0

License

MIT

Last publish

Collaborators

  • wkf