@scalecube/scalecube-js

0.0.6 • Public • Published

Scalecube-js

First version for scalecube js Implemented only the Microservices basic pattern only local services without remote services (no gossip or SWIM) Support CommonJS and ES6 modules with TS & Flow support

First version documention will improve ;-)

usage

/// With proxies

const greetingService = Microservices
  .builder()
  .services(new GreetingService(), new GreetingService())
  .build()
  .proxy()
  .api(GreetingService)
  .create();  
greetingService.hello();

const greetingService = Microservices
  .builder()
  .services(new GreetingService(), new GreetingService())
  .build()
  .proxy()
  .api(GreetingService)
  .create();
greetingService.repeatToStream().subscribe(...);

/// direct 
const microservices = Microservices.builder()
  .services(new GreetingService())
  .build();

const dispatcher = microservices.dispatcher().create();

const message: Message = {
  serviceName: 'GreetingService',
  method: 'hello',
  data: {user: 'Idan'}
};


dispatcher.invoke(message);

const microservices = Microservices.builder()
  .services(new GreetingService())
  .build();

const dispatcher = microservices.dispatcher().create();

const message: Message = {
  serviceName: 'GreetingService',
  method: 'repeatToStream',
  data: [ 'Hello', 'Hey', 'Yo' ]
};

dispatcher.listen(message).subscribe();

/// loaders

// on demand
const greetingService = Microservices
.builder()
.serviceLoaders(
  {
    loader: () => ({
      then: (func) => {
        ImportGreetingService
          .then((GreetingService) => func(new GreetingService.default()))
      }
    }),
    serviceClass: GreetingService
  })
.build()
.proxy()
.api(GreetingService)
.create();

// on start
const greetingService = Microservices
.builder()
.serviceLoaders(
  {
    loader: () => new Promise((resolve, reject) =>
      ImportGreetingService.then((GreetingService) => resolve(mockFn(GreetingService))).catch(e => reject(e))
    ),
    serviceClass: GreetingService
  })
.build()
.proxy()
.api(GreetingService)
.create();

For more details how to use it see the tests

Run/Debug

Install yarn/npm install
Build npm build
Run test npm test

To run/debug jest tests:

Version

MAJOR version when you make incompatible API changes,

MINOR version when you add functionality in a backwards-compatible manner, and

PATCH version when you make backwards-compatible bug fixes.

Package Sidebar

Install

npm i @scalecube/scalecube-js

Weekly Downloads

3

Version

0.0.6

License

ISC

Last publish

Collaborators

  • viktor.pyshnenko
  • idokatz
  • scalecube-js-user-developer
  • ronen.nachmias
  • idanilt
  • scalecube-ci
  • skolomiiets