Skip to content

Commit baeb0b6

Browse files
committed
(feat) promisifies DDPClient
1 parent d8b6316 commit baeb0b6

4 files changed

Lines changed: 77 additions & 29 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ ddpclient.call("login", [
3232

3333
```js
3434
var DDPClient = require("ddp-client");
35+
// or "ddp-client/promise" for promisified versions of all async functions
3536

3637
var ddpclient = new DDPClient({
3738
// All properties optional, defaults shown

index.js

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -186,55 +186,29 @@ class DDPClient extends EventEmitter{
186186
}
187187

188188
self.collections[name].upsert(item);
189-
190-
if (self._observers[name]) {
191-
_.each(self._observers[name], function(observer) {
192-
observer.added(id, item);
193-
})
194-
}
195189
}
196190

197191
// remove document from collection
198192
} else if (data.msg === "removed") {
199193
if (self.maintainCollections && data.collection) {
200-
var name = data.collection,
201-
id = data.id
202-
oldFields = self.collections[name].get(id);
203-
204194
self.collections[name].remove({"_id": id});
205-
206-
if (self._observers[name]) {
207-
_.each(self._observers[name], function(observer) {
208-
observer.removed(id, oldFields);
209-
});
210195
}
211-
}
212196

213197
// change document in collection
214198
} else if (data.msg === "changed") {
215199
if (self.maintainCollections && data.collection) {
216-
var name = data.collection,
217-
id = data.id,
218-
oldFields = {},
219-
clearedFields = data.cleared || [];
200+
var name = data.collection, id = data.id;
220201
var item = {
221202
"_id": id
222203
};
223204

224205
if (data.fields) {
225-
oldFields = self.collections[name].get(id);
226206
_.each(data.fields, function(value, key) {
227207
item[key] = value;
228208
});
229209
}
230210

231-
var newFields = self.collections[name].upsert(item);
232-
233-
if (self._observers[name]) {
234-
_.each(self._observers[name], function(observer) {
235-
observer.changed(id, oldFields, clearedFields, newFields);
236-
});
237-
}
211+
self.collections[name].upsert(item);
238212
}
239213

240214
// subscriptions ready

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ddp-client",
3-
"version": "0.1.2",
3+
"version": "0.1.3",
44
"description": "DDP Client for browsers and native JS runtimes (no dependencies on document or 3rd party WebSocket libraries)",
55
"main": "index.js",
66
"keywords": [

promise.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
"use strict";
2+
3+
let DDPClient = require('./index.js');
4+
5+
class DDP extends DDPClient {
6+
constructor(opts) {
7+
super(opts);
8+
}
9+
10+
connect() {
11+
return new Promise((resolve, reject) => {
12+
super.connect((err, wasReconnect) => {
13+
if (err) {
14+
console.log('DDP connection error!');
15+
return reject(err);
16+
}
17+
18+
if (wasReconnect) {
19+
console.log('Reestablishment of a connection.');
20+
}
21+
22+
console.log('connected to Meteor server');
23+
resolve(this._isReconnecting);
24+
});
25+
});
26+
}
27+
28+
call(name, params) {
29+
return new Promise((resolve, reject) => {
30+
super.call(name, params, (err, res) => {
31+
if (err) {
32+
reject(err);
33+
} else {
34+
resolve(res);
35+
}
36+
}, () => {
37+
// callback which fires when server has finished
38+
});
39+
});
40+
}
41+
42+
callWithRandomSeed(name, params, randomSeed) {
43+
return new Promise((resolve, reject) => {
44+
super.callWithRandomSeed(name, params, randomSeed, (err, res) => {
45+
if (err) { r
46+
reject(err);
47+
} else {
48+
resolve(res);
49+
}
50+
}, () => {
51+
// callback which fires when server has finished
52+
});
53+
});
54+
}
55+
56+
subscribe(...args) {
57+
return super.subscribe(...args);
58+
}
59+
60+
unsubscribe(...args) {
61+
return super.unsubscribe(...args);
62+
}
63+
64+
close() {
65+
return super.close();
66+
}
67+
68+
observe(...args) {
69+
return super.observe(...args);
70+
}
71+
}
72+
73+
module.exports = DDP;

0 commit comments

Comments
 (0)