Skip to content

Commit

Permalink
Rewrite components for ES6 (#37)
Browse files Browse the repository at this point in the history
  • Loading branch information
dashersw committed Jun 3, 2017
1 parent 5dc6e1c commit 410e2d9
Show file tree
Hide file tree
Showing 22 changed files with 874 additions and 892 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -2,3 +2,4 @@ node_modules
.idea
.vscode
jsconfig.json
dist
1 change: 1 addition & 0 deletions .npmignore
Expand Up @@ -3,3 +3,4 @@
benchmark
examples
jsconfig.json
src
4 changes: 2 additions & 2 deletions examples/monitor.js
@@ -1,3 +1,3 @@
var cote = require('../');
const cote = require('../');

new cote.Monitor({name: 'Monitor'});
new cote.Monitor({ name: 'Monitor' });
2 changes: 1 addition & 1 deletion examples/monitoring-tool.js
@@ -1,3 +1,3 @@
var cote = require('../');
const cote = require('../');

new cote.MonitoringTool(process.env.PORT);
18 changes: 10 additions & 8 deletions examples/requester.js
@@ -1,30 +1,32 @@
var Requester = require('../').Requester;
'use strict';

var randomRequest = new Requester({
const Requester = require('../').Requester;

const randomRequest = new Requester({
name: 'randomReq',
// namespace: 'rnd',
requests: ['randomRequest', 'promised request']
requests: ['randomRequest', 'promised request'],
});

function makeRequest() {
var req = {
const req = {
type: 'randomRequest',
val: ~~(Math.random() * 10)
val: ~~(Math.random() * 10),
};
console.log('sending request cb', req);
randomRequest.send(req, function(res) {
console.log('request cb', req, 'answer', res);
});

var reqPromise = {
const reqPromise = {
type: 'promised request',
val: ~~(Math.random() * 10)
val: ~~(Math.random() * 10),
};

console.log('sending request promise', reqPromise);
randomRequest.send(reqPromise).then((res) => {
console.log('request promise', reqPromise, 'answer', res);
}).catch(e => console.log('rejected', e));
}).catch((e) => console.log('rejected', e));
}

makeRequest();
Expand Down
12 changes: 7 additions & 5 deletions examples/responder.js
@@ -1,23 +1,25 @@
var Responder = require('../').Responder;
'use strict';

const Responder = require('../').Responder;

// Instantiate a new Responder component.
var randomResponder = new Responder({
const randomResponder = new Responder({
name: 'randomRep',
// namespace: 'rnd',
respondsTo: ['randomRequest', 'promised request'] // types of requests this responder
respondsTo: ['randomRequest', 'promised request'], // types of requests this responder
// can respond to.
});

// request handlers are like any event handler.
randomResponder.on('randomRequest', function(req, cb) {
var answer = ~~(Math.random() * 10);
const answer = ~~(Math.random() * 10);
console.log('request', req.val, 'answering with', answer);
cb(answer);
});

// request handlers are like any event handler.
randomResponder.on('promised request', function(req) {
var answer = ~~(Math.random() * 10);
const answer = ~~(Math.random() * 10);

return new Promise((resolve, reject) => {
console.log('promise request', req.val, 'answering with', answer);
Expand Down
6 changes: 3 additions & 3 deletions examples/subscriber.js
@@ -1,9 +1,9 @@
var Subscriber = require('../').Subscriber;
const Subscriber = require('../').Subscriber;

var randomSubscriber = new Subscriber({
const randomSubscriber = new Subscriber({
name: 'randomSub',
// namespace:'rnd',
subscribesTo: ['randomUpdate']
subscribesTo: ['randomUpdate'],
});

randomSubscriber.on('randomUpdate', function(req) {
Expand Down
58 changes: 49 additions & 9 deletions package.json
Expand Up @@ -12,28 +12,68 @@
"fault-tolerant"
],
"description": "A Node.js library for building zero-configuration microservices.",
"scripts": {
"build": "babel src --presets babel-preset-es2015 -D -d dist -s",
"clean": "rm -rf dist",
"lint": "eslint src test",
"lint-fix": "eslint --fix src test",
"prepublish": "npm run build"
},
"author": {
"name": "Armagan Amcalar",
"email": "armagan@amcalar.com"
},
"main": "dist/index.js",
"license": "MIT",
"repository": "dashersw/cote",
"engines": {
"node": ">=v0.10.0"
"node": ">=v4.0.0"
},
"dependencies": {
"@dashersw/axon": "2.0.3",
"charm": "0.1.2",
"colors": "0.x.x",
"eventemitter2": "0.4.x",
"lodash": "4.13.1",
"@dashersw/axon": "2.0.5",
"charm": "1.0.2",
"colors": "1.1.2",
"eventemitter2": "4.1.0",
"lodash": "4.17.4",
"node-discover": "0.4.0",
"node-uuid": "1.4.7",
"uuid": "3.0.1",
"portfinder": "1.0.13",
"socket.io": "1.7.3"
"socket.io": "2.0.1"
},
"devDependencies": {
"async": "^2.3.0",
"babel-cli": "^6.18.0",
"babel-preset-es2015": "^6.24.1",
"commander": "2.2.0",
"eslint": "^3.19.0",
"eslint-config-google": "^0.7.1",
"humanize-number": "0.0.2",
"commander": "2.2.0"
"socket.io-client": "2.0.1"
},
"eslintConfig": {
"env": {
"node": true
},
"parserOptions": {
"ecmaVersion": 6
},
"extends": [
"google"
],
"rules": {
"require-jsdoc": "off",
"new-cap": "off",
"guard-for-in": "off",
"object-curly-spacing": [
"error",
"always"
],
"max-len": [
"error",
{
"code": 120
}
]
}
}
}
57 changes: 57 additions & 0 deletions src/components/component.js
@@ -0,0 +1,57 @@
const EventEmitter = require('eventemitter2').EventEmitter2;
const Discovery = require('./discovery');

module.exports = class Component extends EventEmitter {
constructor(advertisement, discoveryOptions) {
super({
wildcard: true, // should the event emitter use wildcards.
delimiter: '::', // the delimiter used to segment namespaces, defaults to `.`.
newListener: false, // if you want to emit the newListener event set to true.
maxListeners: 2000, // the max number of listeners that can be assigned to an event, defaults to 10.
});

advertisement.key = this.constructor.environment + '$$' + (advertisement.key || '');

this.advertisement = advertisement;
this.advertisement.axon_type = this.type;

this.discoveryOptions = discoveryOptions || {};
this.discoveryOptions.address = this.discoveryOptions.address ||
'0.0.0.0';
}

startDiscovery() {
this.discovery = new Discovery(this.advertisement,
this.discoveryOptions);

this.discovery.on('added', (obj) => {
if (
obj.advertisement.axon_type != this.oppo ||
obj.advertisement.key != this.advertisement.key ||
this.advertisement.namespace != obj.advertisement.namespace
) return;

this.onAdded(obj);
this.emit('cote:added', obj);
});
this.discovery.on('removed', (obj) => {
if (
obj.advertisement.axon_type != this.oppo ||
obj.advertisement.key != this.advertisement.key ||
this.advertisement.namespace != obj.advertisement.namespace
) return;

this.onRemoved(obj);
this.emit('cote:removed', obj);
});
}

onAdded() { };

onRemoved() { };

close() {
this.sock && this.sock.close();
this.discovery && this.discovery.stop();
}
};
23 changes: 23 additions & 0 deletions src/components/configurable.js
@@ -0,0 +1,23 @@
'use strict';

module.exports = (Base) => class Configurable extends Base {
static get environment() {
return this.constructor._environment || '';
}

static setEnvironment(environment) {
if (!environment) return;

this.constructor._environment = environment + ':';
}


static get useHostNames() {
return this.constructor._useHostNames || false;
}


static setUseHostNames(useHostNames) {
this.constructor._useHostNames = useHostNames;
};
};

0 comments on commit 410e2d9

Please sign in to comment.