Skip to content

Commit 991ad4b

Browse files
authored
Merge pull request #11 from RyLeeHarrison/master
updated: docs, test, source
2 parents 6765fad + 36e96f8 commit 991ad4b

File tree

6 files changed

+179
-136
lines changed

6 files changed

+179
-136
lines changed

.eslintrc.json

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
{
22
"env": {
3+
"es6": true,
34
"browser": true,
45
"node": true,
56
"mocha": true
67
},
8+
9+
"parserOptions": {
10+
"ecmaVersion": 2017
11+
},
12+
713
"rules": {
814
"quotes": [
915
1,
@@ -21,7 +27,9 @@
2127
"indent": [
2228
2,
2329
2,
24-
{"SwitchCase": 1}
30+
{
31+
"SwitchCase": 1
32+
}
2533
],
2634
"brace-style": [
2735
2,
@@ -46,8 +54,10 @@
4654
"always"
4755
],
4856
"keyword-spacing": [
49-
2,
50-
{"after": true}
57+
2,
58+
{
59+
"after": true
60+
}
5161
],
5262
"space-before-blocks": 2,
5363
"spaced-comment": [
@@ -59,9 +69,9 @@
5969
],
6070
"markers": [
6171
"eslint",
62-
"jshint",
72+
"jshint",
6373
"global"
64-
]
74+
]
6575
}
6676
],
6777
"strict": [
@@ -72,4 +82,4 @@
7282
"camelcase": 0,
7383
"new-cap": 0
7484
}
75-
}
85+
}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ logs
33
*.log
44
npm-debug.log*
55

6+
*.lock
7+
68
# Runtime data
79
pids
810
*.pid

README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@ The API is the same as [MQTT.js](https://github.com/mqttjs/MQTT.js#api), except
3131
## Example
3232

3333
```javascript
34-
var MQTT = require("async-mqtt");
34+
const MQTT = require("async-mqtt");
3535

36-
var client = MQTT.connect("tcp://somehost.com:1883");
36+
const client = MQTT.connect("tcp://somehost.com:1883");
3737

3838
// When passing async functions as event listeners, make sure to have a try catch block
39-
client.on("connect", doStuff);
4039

41-
async function doStuff() {
40+
const doStuff = async () => {
4241

4342
console.log("Starting");
4443
try {
@@ -53,18 +52,20 @@ async function doStuff() {
5352
process.exit();
5453
}
5554
}
55+
56+
client.on("connect", doStuff);
5657
```
5758

5859
## Wrapping existing client
5960

6061
```javascript
61-
var AsyncClient = require("async-mqtt").AsyncClient;
62+
const { AsyncClient } = require("async-mqtt");
6263

63-
var client = getRegularMQTTClientFromSomewhere();
64+
const client = getRegularMQTTClientFromSomewhere();
6465

65-
var asyncClient = new AsyncClient(client);
66+
const asyncClient = new AsyncClient(client);
6667

67-
asyncClient.publish("foo/bar", "baz").then(function(){
68+
asyncClient.publish("foo/bar", "baz").then(() => {
6869
console.log("We async now");
6970
return asyncClient.end();
7071
});

index.js

Lines changed: 112 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,126 @@
1-
'use strict';
2-
var mqtt = require('mqtt');
3-
var inArray = require('in-array');
4-
5-
var RegularClientPrototype = mqtt.MqttClient.prototype;
6-
7-
var ASYNC_METHODS = ['publish',
8-
'subscribe',
9-
'unsubscribe',
10-
'end'
11-
];
12-
13-
var SYNC_METHODS = [
14-
'addListener',
15-
'emit',
16-
'eventNames',
17-
'getMaxListeners',
18-
'listenerCount',
19-
'listeners',
20-
'off',
21-
'on',
22-
'once',
23-
'prependListener',
24-
'prependOnceListener',
25-
'removeAllListeners',
26-
'removeListener',
27-
'setMaxListeners',
28-
'rawListeners'
29-
];
1+
'use strict'
302

31-
module.exports = {
32-
connect: connect,
33-
AsyncClient: AsyncClient
34-
};
3+
const mqtt = require('mqtt');
354

36-
function connect (brokerURL, opts) {
37-
var client = mqtt.connect(brokerURL, opts);
5+
const RegularClientPrototype = mqtt.MqttClient.prototype;
386

39-
var asyncClient = new AsyncClient(client);
40-
41-
return asyncClient;
42-
}
43-
44-
function AsyncClient (client) {
45-
this._client = client;
46-
}
7+
class AsyncClient {
8+
constructor (client) {
9+
this._client = client;
10+
}
4711

48-
AsyncClient.prototype = {
4912
set handleMessage (newHandler) {
5013
this._client.handleMessage = newHandler;
51-
},
14+
}
15+
5216
get handleMessage () {
5317
return this._client.handleMessage;
5418
}
55-
};
5619

57-
ASYNC_METHODS.forEach(defineAsync);
58-
SYNC_METHODS.forEach(definePassthrough);
20+
publish (...args) {
21+
return new Promise((resolve, reject) => {
22+
this._client.publish(...args, (err, result) => {
23+
if (err) reject(err)
24+
else resolve(result)
25+
})
26+
})
27+
}
5928

60-
function definePassthrough (name) {
61-
AsyncClient.prototype[name] = function () {
62-
var client = this._client;
63-
return client[name].apply(client, arguments);
64-
};
65-
}
29+
subscribe (...args) {
30+
return new Promise((resolve, reject) => {
31+
this._client.subscribe(...args, (err, result) => {
32+
if (err) reject(err)
33+
else resolve(result)
34+
})
35+
})
36+
}
6637

67-
function defineAsync (name) {
68-
AsyncClient.prototype[name] = function asyncMethod () {
69-
var client = this._client;
70-
var args = [];
71-
var length = arguments.length;
72-
var i = 0;
73-
for (i; i < length; i++)
74-
args.push(arguments[i]);
75-
76-
return new Promise(function (resolve, reject) {
77-
args.push(makeCallback(resolve, reject));
78-
client[name].apply(client, args);
79-
});
80-
};
81-
}
38+
unsubscribe (...args) {
39+
return new Promise((resolve, reject) => {
40+
this._client.unsubscribe(...args, (err, result) => {
41+
if (err) reject(err)
42+
else resolve(result)
43+
})
44+
})
45+
}
46+
47+
end (...args) {
48+
return new Promise((resolve, reject) => {
49+
this._client.end(...args, (err, result) => {
50+
if (err) reject(err)
51+
else resolve(result)
52+
})
53+
})
54+
}
55+
56+
addListener (...args) {
57+
return this._client.addListener(...args);
58+
}
59+
60+
emit (...args) {
61+
return this._client.emit(...args);
62+
}
63+
64+
eventNames (...args) {
65+
return this._client.eventNames(...args);
66+
}
67+
68+
getMaxListeners (...args) {
69+
return this._client.getMaxListeners(...args);
70+
}
8271

83-
function makeCallback (resolve, reject) {
84-
return function (err, data) {
85-
if (err)
86-
reject(err);
87-
else resolve(data);
88-
};
72+
listenerCount (...args) {
73+
return this._client.listenerCount(...args);
74+
}
75+
76+
listeners (...args) {
77+
return this._client.listeners(...args);
78+
}
79+
80+
off (...args) {
81+
return this._client.off(...args);
82+
}
83+
84+
on (...args) {
85+
return this._client.on(...args);
86+
}
87+
88+
once (...args) {
89+
return this._client.once(...args);
90+
}
91+
92+
prependListener (...args) {
93+
return this._client.prependListener(...args);
94+
}
95+
96+
prependOnceListener (...args) {
97+
return this._client.prependOnceListener(...args);
98+
}
99+
100+
removeAllListeners (...args) {
101+
return this._client.removeAllListeners(...args);
102+
}
103+
104+
removeListener (...args) {
105+
return this._client.removeListener(...args);
106+
}
107+
108+
setMaxListeners (...args) {
109+
return this._client.setMaxListeners(...args);
110+
}
111+
112+
rawListeners (...args) {
113+
return this._client.rawListeners(...args);
114+
}
89115
}
116+
117+
118+
module.exports = {
119+
connect (brokerURL, opts) {
120+
const client = mqtt.connect(brokerURL, opts);
121+
const asyncClient = new AsyncClient(client);
122+
123+
return asyncClient;
124+
},
125+
AsyncClient
126+
};

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
},
2626
"homepage": "https://github.com/mqttjs/async-mqtt#readme",
2727
"dependencies": {
28-
"in-array": "^0.1.2",
2928
"mqtt": "^2.3.1"
3029
},
3130
"devDependencies": {

0 commit comments

Comments
 (0)