Socket
Socket
Sign inDemoInstall

consul

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

consul - npm Package Compare versions

Comparing version 0.21.0 to 0.22.0

test.js

92

lib/consul.js

@@ -71,4 +71,13 @@ /**

if (opts.promisify) {
this._promisify(opts.promisify);
try {
if (opts.promisify) {
if (typeof opts.promisify === 'function') {
papi.tools.promisify(this, opts.promisify);
} else {
papi.tools.promisify(this);
}
}
} catch (err) {
err.message = 'promisify: ' + err.message;
throw err;
}

@@ -122,82 +131,7 @@ }

Consul.walk = Consul.prototype.walk = function(obj, name, tree) {
if (arguments.length !== 3) {
obj = Consul;
name = 'Consul';
tree = { name: name };
}
Object.keys(obj.prototype).forEach(function(key) {
var v = obj.prototype[key];
if (!key.match(/^[a-z]+/)) return;
if (!tree.methods) tree.methods = {};
tree.methods[key] = {
name: key,
value: v,
};
var meta = obj.meta || {};
tree.methods[key].type = meta[key] && meta[key].type || 'callback';
});
Object.keys(obj).forEach(function(key) {
var v = obj[key];
if (!key.match(/^[A-Z]+/)) return;
if (!tree.objects) tree.objects = {};
tree.objects[key] = {
name: key,
value: v,
};
Consul.walk(v, key, tree.objects[key]);
});
return tree;
Consul.walk = Consul.prototype.walk = function() {
return papi.tools.walk(Consul);
};
/**
* Inject promises
*/
Consul.prototype._promisify = function(promisify) {
if (typeof promisify !== 'function') {
throw new Error('promisify must be a function');
}
var patch = function(client, tree) {
Object.keys(tree.methods).forEach(function(key) {
var method = tree.methods[key];
var fn = client[method.name];
if (method.type === 'callback') {
client[method.name] = function() {
if (typeof arguments[arguments.length - 1] === 'function') {
return fn.apply(client, arguments);
}
var args = Array.prototype.slice.call(arguments);
return promisify(function(callback) {
args.push(callback);
return fn.apply(client, args);
});
};
}
});
if (tree.objects) {
Object.keys(tree.objects).forEach(function(key) {
patch(client[key.toLowerCase()], tree.objects[key]);
});
}
};
patch(this, this.walk());
};
/**
* Module exports.

@@ -204,0 +138,0 @@ */

@@ -23,2 +23,8 @@ /**

/**
* Object meta
*/
Kv.meta = {};
/**
* Get

@@ -182,2 +188,4 @@ */

Kv.meta.delete = { type: 'alias' };
Kv.prototype.delete = Kv.prototype.del;

@@ -184,0 +192,0 @@

{
"name": "consul",
"version": "0.21.0",
"version": "0.22.0",
"description": "Consul client",
"main": "./lib",
"dependencies": {
"papi": "^0.24.0"
"papi": "^0.25.0"
},

@@ -9,0 +9,0 @@ "devDependencies": {

@@ -13,2 +13,5 @@ # Consul [![Build Status](https://travis-ci.org/silas/node-consul.png?branch=master)](https://travis-ci.org/silas/node-consul)

* [Consul](#init)
* [Callback](#callback)
* [Promise](#promise)
* [Common Options](#common-options)
* [ACL](#acl)

@@ -41,3 +44,3 @@ * [Agent](#agent)

* defaults (Object, optional): default options for method calls
* promisify (Function, optional): wrap callback methods to return a Promise, see [promisify](#promisify)
* promisify (Boolean|Function, optional): convert callback methods to Promises

@@ -59,5 +62,12 @@ Usage

<a name="common-method-options"></a>
### Common Method Options
<a name="promise"></a>
### Promise
Promise support can be enabled by setting `promisify` to `true` in Node `>= 0.12` or passing a wrapper (ex: `bluebird.fromCallback`) in older versions.
If you need access to the `res` object you can create a custom wrapper ([see example below](#promise-wrapper).
<a name="common-options"></a>
### Common Options
These options will be passed along with any method call, although only certain endpoints support them. See the [HTTP API][consul-docs-api] for more information.

@@ -1578,16 +1588,30 @@

<a name="promisify"></a>
### Promisify
<a name="promise-wrapper"></a>
### Promise Wrapper
_Experimental_
``` javascript
var Bluebird = require('bluebird');
Wrap callback methods using the `promisify` option in [Consul](#init).
function fromCallback(fn) {
return new Bluebird(function(resolve, reject) {
try {
return fn(function(err, data, res) {
if (err) {
err.res = res;
return reject(err);
}
return resolve([data, res]);
});
} catch (err) {
return reject(err);
}
});
}
``` javascript
var bluebird = require('bluebird');
var consul = require('consul')({ promisify: bluebird.fromCallback });
var consul = require('consul')({ promisify: fromCallback });
consul.kv.set('test', 'hello world').then(function() {
consul.kv.keys().then(function(data) {
consul.kv.keys().spread(function(data, res) {
console.log('data:', data);
console.log('headers:', res.headers);
});

@@ -1594,0 +1618,0 @@ });

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc