0.7.13 • Published 3 years ago

fruster-bus v0.7.13

Weekly downloads
305
License
MIT
Repository
github
Last release
3 years ago

Fruster Bus Wrapper

Promisifies NATS Client and makes it aware of Fruster messages.

Usage

Add to your project:

npm install fruster-bus --save

Add this to your file:

var bus = require('fruster-bus');

Connect to bus:

# Pass in multiple if NATS cluster
bus.connect(['nats://localhost:4222'])

Publish message:

bus.publish('a.subject', { foo: 'bar' });

Send request and handle response:

bus.request('a.subject', {})
  .then(handleMessage)
  .catch(handleError);

Send request with 500 ms timeout:

bus.request('a.subject', {}, 500)
  .then(handleMessage)
  .catch(handleError);

Subscribe:

bus.subscribe('a.subject', function(req, replyTo) {
  // return response by publishing to replyTo
  bus.publish(replyTo, { /* your response msg */ });
});

Subscibe and return response:

bus.subscribe('a.subject', function(req) {    
  // return of callback will be sent as response to `toReply`
  return { status: 200 };      
});

Subscribe and return response as promise:

bus.subscribe('user.get', function(req) {          
  // ok to return a promise that resolves response message
  return getUser(req.msg.data.userId).then(function(user) {
    return { status: 200 /*... */ };
  });      
});

All subscriptions will create a queue group by default with name of subject. Pass in boolean false as last argument to disable queue group:

bus.subscribe("user.get", handle, false);

Permissions for subscribe

Must be logged in to access. Anyone logged in can access, no matter permissions.

bus.subscribe('a.subject', function(req) {    
  // return of callback will be sent as response to `toReply`
  return { status: 200 };      
})
.mustBeLoggedIn();

Must have specific permissions to access. When using permissions .mustBeLoggedIn() is not required since permissions only work on logged in users anyway.

bus.subscribe('a.subject', function(req) {    
  // return of callback will be sent as response to `toReply`
  return { status: 200 };      
})
.permissions(["user.get", "user.create"]);

Open to public without any permissions.

bus.subscribe('a.subject', function(req) {    
  // return of callback will be sent as response to `toReply`
  return { status: 200 };      
});

Defining permissions

A permission is defined in the following way {{entity}}.{{action}}. E.g. user.create. The action can be a wildcard, accepting any action within that entity.

Defining params

Fruster bus features a specific fruster bus param definition for http requests.

"http.post.user.:userId" - Translates to "http.post.user.*" in NATS.

Any param defined with a colon (:userId) will be accessible from the subscription handler via the object request.params

Run in mocked mode

Nats client will run in mocked mode if connection string is nats://mock. All messages will be published and subscribing from memory and not connecting to an actual bus. Needless to say, but this is only for development purposes, i.e. running tests wo the need to spin up NATS server.

Test

You need gnatsd to run tests. Read installation instructions here.

npm test
0.7.13

3 years ago

0.7.12

3 years ago

0.7.12-5

3 years ago

0.7.12-4

3 years ago

0.7.12-3

3 years ago

0.7.12-2

3 years ago

0.7.12-1

3 years ago

0.7.12-0

3 years ago

0.7.11

4 years ago

0.7.10

4 years ago

0.7.9

4 years ago

0.7.8

4 years ago

0.7.7

4 years ago

0.7.6

4 years ago

0.7.4

4 years ago

0.7.5

4 years ago

0.7.3

4 years ago

0.7.2

4 years ago

0.7.1

4 years ago

0.7.0

4 years ago

0.5.10

4 years ago

0.5.9

5 years ago

0.5.8

5 years ago

0.5.7

5 years ago

0.5.6-alpha.1

5 years ago

0.5.6

5 years ago

0.5.5

5 years ago

0.5.4

5 years ago

0.5.3

5 years ago

0.5.2

5 years ago

0.5.1-alpha.1

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.2

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.4

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.27

6 years ago

0.2.26

6 years ago

0.2.25

6 years ago

0.2.24

6 years ago

0.2.23

6 years ago

0.2.22

6 years ago

0.2.20

6 years ago

0.2.19

6 years ago

0.2.18

6 years ago

0.2.17

6 years ago

0.2.16

6 years ago

0.2.15

6 years ago

0.2.14

6 years ago

0.2.13

6 years ago

0.2.12

6 years ago

0.2.11

6 years ago

0.2.10

7 years ago

0.2.9

7 years ago

0.2.8

7 years ago

0.2.7

7 years ago

0.2.6

7 years ago

0.2.5

7 years ago

0.2.4

7 years ago

0.2.4-alpha

7 years ago

0.2.3-alpha

7 years ago

0.2.2-alpha

7 years ago

0.2.1-alpha

7 years ago

0.1.12

7 years ago

0.2.0-alpha

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.19

7 years ago

0.0.18

7 years ago

0.0.17

8 years ago

0.0.16

8 years ago

0.0.15

8 years ago

0.0.14

8 years ago

0.0.13

8 years ago

0.0.12

8 years ago

0.0.11

8 years ago

0.0.10

8 years ago

0.0.9

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago

1.0.0

8 years ago