TxRouteContainer

Wrapper classes around inversifyJS container library. You can create a component by inject all its dependencies.

  • Create a component R1Component using TxRouteContainer injector.

 // define a component something like this.
 @injectable()
 export class Q1Component {
  @inject(TxTYPES.TxRoutePoint) routepoint;
 
   constructor() {
   }
 
   async init() {
     ...
   }
}

 // prepare injector for Q1Component - this done one time.
 TxRouteContainer.setDriver(TxConnectorExpress);
 TxRouteContainer.addComponent<R1Component>(R1Component, 'R1Component');
    
 // create new 'R1Component' component under the name 'R1COMPONENT::ROUTE::CONTAINER'
 co = TxRouteContainer.get('Q1Component', 'R1COMPONENT::ROUTE::CONTAINER');

 // send something to queue.
 co.routepoint.route.next(..);
  • Create a component R2 which has some other member in it.

// define R2Component which has other member.
@injectable()
export class QMember {
  @inject('QMember::name') name: string;
 
  constructor() {}
  ....
}

@injectable()
export class R3Component {
 @inject(TxTYPES.TxRoutePoint) routepoint;
 @inject('RMember') rmember: RMember;

 constructor() {}

 async init() { ... }

 getRMember() { 
  return this.rmember; 
 }
}

// prepare injector for R2Component, this done once
TxRouteContainer.setDriver(TxConnectorExpress);
TxRouteContainer.addComponent<R1Component>(R3Component, 'R3Component');
TxRouteContainer.addBind<RMember>(RMember, 'RMember');

// create 'R3Component' where name 'tsemach' is inject into RMember of R2Component
TxRouteContainer.addBindConstantValue<string>('RMember::name', 'tsemach');        
cp = TxRouteContainer.get('R3Component', 'R3COMPONENT::ROUTE::CONTAINER');

Last updated