From 7cd295bc63109c8b11d22cf2a6a0aca7ee4998d6 Mon Sep 17 00:00:00 2001 From: Viraj Trivedi Date: Wed, 30 Jan 2019 17:45:29 +0530 Subject: [PATCH] feat: Updated the current code to RxJS 6. #32 --- lib/RealTimeAPI.d.ts | 30 ++++++------ lib/RealTimeAPI.js | 108 +++++++++++++++++++++-------------------- lib/RealTimeAPI.js.map | 2 +- package-lock.json | 57 +++++++++++++--------- package.json | 4 +- src/RealTimeAPI.ts | 73 ++++++++++++++-------------- 6 files changed, 145 insertions(+), 129 deletions(-) diff --git a/lib/RealTimeAPI.d.ts b/lib/RealTimeAPI.d.ts index 08b920a..f14e113 100644 --- a/lib/RealTimeAPI.d.ts +++ b/lib/RealTimeAPI.d.ts @@ -1,16 +1,14 @@ /** * Rocket.Chat RealTime API */ -import { Observable } from "rxjs"; -import { WebSocketSubject } from 'rxjs/observable/dom/WebSocketSubject'; +import { WebSocketSubject } from "rxjs/webSocket"; export declare class RealTimeAPI { - url: string; - webSocket: WebSocketSubject<{}>; - constructor(param: string | WebSocketSubject<{}>); + webSocket: WebSocketSubject; + constructor(param: string | WebSocketSubject); /** * Returns the Observable to the RealTime API Socket */ - getObservable(): Observable; + getObservable(): WebSocketSubject; /** * Disconnect the WebSocket Connection between client and RealTime API */ @@ -34,19 +32,19 @@ export declare class RealTimeAPI { /** * sendMessage to Rocket.Chat Server */ - sendMessage(messageObject: {}): void; + sendMessage(messageObject: any): void; /** * getObservableFilteredByMessageType */ - getObservableFilteredByMessageType(messageType: string): Observable; + getObservableFilteredByMessageType(messageType: string): import("rxjs/internal/Observable").Observable; /** * getObservableFilteredByID */ - getObservableFilteredByID(id: string): Observable; + getObservableFilteredByID(id: string): import("rxjs/internal/Observable").Observable; /** * connectToServer */ - connectToServer(): Observable; + connectToServer(): import("rxjs/internal/Observable").Observable; /** * keepAlive, Ping and Pong to the Rocket.Chat Server to Keep the Connection Alive. */ @@ -54,25 +52,25 @@ export declare class RealTimeAPI { /** * Login with Username and Password */ - login(username: string, password: string): Observable; + login(username: string, password: string): import("rxjs/internal/Observable").Observable; /** * Login with Authentication Token */ - loginWithAuthToken(authToken: string): Observable; + loginWithAuthToken(authToken: string): import("rxjs/internal/Observable").Observable; /** * Login with OAuth, with Client Token and Client Secret */ - loginWithOAuth(credToken: string, credSecret: string): Observable; + loginWithOAuth(credToken: string, credSecret: string): import("rxjs/internal/Observable").Observable; /** * getLoginObservable */ - getLoginObservable(id: string): Observable; + getLoginObservable(id: string): import("rxjs/internal/Observable").Observable; /** * Get Observalble to the Result of Method Call from Rocket.Chat Realtime API */ - callMethod(method: string, ...params: Array<{}>): Observable; + callMethod(method: string, ...params: Array<{}>): import("rxjs/internal/Observable").Observable; /** * getSubscription */ - getSubscription(streamName: string, streamParam: string, addEvent: boolean): Observable; + getSubscription(streamName: string, streamParam: string, addEvent: boolean): import("rxjs/internal/Observable").Observable; } diff --git a/lib/RealTimeAPI.js b/lib/RealTimeAPI.js index 3b5877c..121ea3f 100644 --- a/lib/RealTimeAPI.js +++ b/lib/RealTimeAPI.js @@ -3,19 +3,18 @@ * Rocket.Chat RealTime API */ Object.defineProperty(exports, "__esModule", { value: true }); -var rxjs_1 = require("rxjs"); +var webSocket_1 = require("rxjs/webSocket"); +var operators_1 = require("rxjs/operators"); var uuid_1 = require("uuid"); var crypto_js_1 = require("crypto-js"); var RealTimeAPI = /** @class */ (function () { function RealTimeAPI(param) { switch (typeof param) { case "string": - this.url = param; - this.webSocket = rxjs_1.Observable.webSocket(this.url); + this.webSocket = webSocket_1.webSocket(param); break; case "object": this.webSocket = param; - this.url = this.webSocket.url; break; default: throw new Error("Invalid Parameter to the Constructor, Parameter must be of Type WebSocketSubject or URL but was found of type \"" + typeof param + "\""); @@ -25,7 +24,7 @@ var RealTimeAPI = /** @class */ (function () { * Returns the Observable to the RealTime API Socket */ RealTimeAPI.prototype.getObservable = function () { - return this.webSocket.catch(function (err) { return rxjs_1.Observable.of(err); }); + return this.webSocket; }; /** * Disconnect the WebSocket Connection between client and RealTime API @@ -61,25 +60,29 @@ var RealTimeAPI = /** @class */ (function () { * sendMessage to Rocket.Chat Server */ RealTimeAPI.prototype.sendMessage = function (messageObject) { - this.webSocket.next(JSON.stringify(messageObject)); + this.webSocket.next(messageObject); }; /** * getObservableFilteredByMessageType */ RealTimeAPI.prototype.getObservableFilteredByMessageType = function (messageType) { - return this.getObservable().filter(function (message) { return message.msg === messageType; }); + return this.getObservable().pipe(operators_1.filter(function (message) { return message.msg === messageType; })); }; /** * getObservableFilteredByID */ RealTimeAPI.prototype.getObservableFilteredByID = function (id) { - return this.getObservable().filter(function (message) { return message.id === id; }); + return this.getObservable().pipe(operators_1.filter(function (message) { return message.id === id; })); }; /** * connectToServer */ RealTimeAPI.prototype.connectToServer = function () { - this.sendMessage({ "msg": "connect", "version": "1", "support": ["1", "pre2", "pre1"] }); + this.sendMessage({ + msg: "connect", + version: "1", + support: ["1", "pre2", "pre1"] + }); return this.getObservableFilteredByMessageType("connected"); }; /** @@ -87,7 +90,9 @@ var RealTimeAPI = /** @class */ (function () { */ RealTimeAPI.prototype.keepAlive = function () { var _this = this; - this.getObservableFilteredByMessageType("ping").subscribe(function (message) { return _this.sendMessage({ msg: "pong" }); }); + this.getObservableFilteredByMessageType("ping").subscribe(function (message) { + return _this.sendMessage({ msg: "pong" }); + }); }; /** * Login with Username and Password @@ -97,15 +102,15 @@ var RealTimeAPI = /** @class */ (function () { var id = uuid_1.v4(); var usernameType = username.indexOf("@") !== -1 ? "email" : "username"; this.sendMessage({ - "msg": "method", - "method": "login", - "id": id, - "params": [ + msg: "method", + method: "login", + id: id, + params: [ { - "user": (_a = {}, _a[usernameType] = username, _a), - "password": { - "digest": crypto_js_1.SHA256(password).toString(), - "algorithm": "sha-256" + user: (_a = {}, _a[usernameType] = username, _a), + password: { + digest: crypto_js_1.SHA256(password).toString(), + algorithm: "sha-256" } } ] @@ -118,12 +123,10 @@ var RealTimeAPI = /** @class */ (function () { RealTimeAPI.prototype.loginWithAuthToken = function (authToken) { var id = uuid_1.v4(); this.sendMessage({ - "msg": "method", - "method": "login", - "id": id, - "params": [ - { "resume": authToken } - ] + msg: "method", + method: "login", + id: id, + params: [{ resume: authToken }] }); return this.getLoginObservable(id); }; @@ -133,14 +136,14 @@ var RealTimeAPI = /** @class */ (function () { RealTimeAPI.prototype.loginWithOAuth = function (credToken, credSecret) { var id = uuid_1.v4(); this.sendMessage({ - "msg": "method", - "method": "login", - "id": id, - "params": [ + msg: "method", + method: "login", + id: id, + params: [ { - "oauth": { - "credentialToken": credToken, - "credentialSecret": credSecret + oauth: { + credentialToken: credToken, + credentialSecret: credSecret } } ] @@ -153,18 +156,18 @@ var RealTimeAPI = /** @class */ (function () { RealTimeAPI.prototype.getLoginObservable = function (id) { var resultObservable = this.getObservableFilteredByID(id); var resultId; - var addedObservable = this.getObservable() - .buffer(resultObservable.map(function (_a) { + var addedObservable = this.getObservable().pipe(operators_1.buffer(resultObservable.pipe(operators_1.map(function (_a) { var msg = _a.msg, error = _a.error, result = _a.result; if (msg === "result" && !error) - return resultId = result.id; // Setting resultId to get Result from the buffer - })) - .flatMap(function (x) { return x; }) // Flattening the Buffered Messages - .filter(function (_a) { + return (resultId = result.id); // Setting resultId to get Result from the buffer + }))), operators_1.flatMap(function (x) { return x; }), // Flattening the Buffered Messages + operators_1.filter(function (_a) { var msgId = _a.id; return resultId !== undefined && msgId === resultId; - }); //Filtering the "added" result message. - return rxjs_1.Observable.merge(resultObservable, addedObservable); //Merging "result" and "added" messages. + }), //Filtering the "added" result message. + operators_1.merge(resultObservable) //Merging "result" and "added" messages. + ); + return addedObservable; }; /** * Get Observalble to the Result of Method Call from Rocket.Chat Realtime API @@ -176,7 +179,7 @@ var RealTimeAPI = /** @class */ (function () { } var id = uuid_1.v4(); this.sendMessage({ - "msg": "method", + msg: "method", method: method, id: id, params: params @@ -188,18 +191,19 @@ var RealTimeAPI = /** @class */ (function () { */ RealTimeAPI.prototype.getSubscription = function (streamName, streamParam, addEvent) { var id = uuid_1.v4(); - var subscription = this.webSocket.multiplex(function () { return JSON.stringify({ - "msg": "sub", - "id": id, - "name": streamName, - "params": [ - streamParam, - addEvent - ] - }); }, function () { return JSON.stringify({ - "msg": "unsub", - "id": id - }); }, function (message) { return typeof message.collection === "string" && message.collection === streamName && message.fields.eventName === streamParam; } // Proper Filtering to be done. This is temporary filter just for the stream-room-messages subscription + var subscription = this.webSocket.multiplex(function () { return ({ + msg: "sub", + id: id, + name: streamName, + params: [streamParam, addEvent] + }); }, function () { return ({ + msg: "unsub", + id: id + }); }, function (message) { + return typeof message.collection === "string" && + message.collection === streamName && + message.fields.eventName === streamParam; + } // Proper Filtering to be done. This is temporary filter just for the stream-room-messages subscription ); return subscription; }; diff --git a/lib/RealTimeAPI.js.map b/lib/RealTimeAPI.js.map index 1fb1b90..ae4a0a1 100644 --- a/lib/RealTimeAPI.js.map +++ b/lib/RealTimeAPI.js.map @@ -1 +1 @@ -{"version":3,"file":"RealTimeAPI.js","sourceRoot":"","sources":["../src/RealTimeAPI.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,6BAAkC;AAElC,6BAAkC;AAClC,uCAAmC;AAEnC;IAII,qBAAY,KAAoC;QAC5C,QAAQ,OAAO,KAAK,EAAE;YAClB,KAAK,QAAQ;gBACT,IAAI,CAAC,GAAG,GAAG,KAAe,CAAC;gBAC3B,IAAI,CAAC,SAAS,GAAG,iBAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChD,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,SAAS,GAAG,KAA6B,CAAC;gBAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBAC9B,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,qHAAkH,OAAO,KAAK,OAAG,CAAC,CAAC;SAC1J;IACL,CAAC;IAED;;OAEG;IACI,mCAAa,GAApB;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAA,GAAG,IAAI,OAAA,iBAAU,CAAC,EAAE,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,gCAAU,GAAjB;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,+BAAS,GAAhB,UAAiB,cAAkD;QAC/D,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAGD;;OAEG;IACI,6BAAO,GAAd,UAAe,YAAiD;QAC5D,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,kCAAY,GAAnB,UAAoB,iBAA4C;QAC5D,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,+BAAS,GAAhB,UAAiB,cAAkD,EAAE,YAAiD,EAAE,iBAA4C;QAChK,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,iCAAW,GAAlB,UAAmB,aAAiB;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,wDAAkC,GAAzC,UAA0C,WAAmB;QACzD,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,UAAC,OAAY,IAAK,OAAA,OAAO,CAAC,GAAG,KAAK,WAAW,EAA3B,CAA2B,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACI,+CAAyB,GAAhC,UAAiC,EAAU;QACvC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,UAAC,OAAY,IAAK,OAAA,OAAO,CAAC,EAAE,KAAK,EAAE,EAAjB,CAAiB,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,qCAAe,GAAtB;QACI,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,kCAAkC,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,+BAAS,GAAhB;QAAA,iBAIC;QAHG,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC,SAAS,CACrD,UAAA,OAAO,IAAI,OAAA,KAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAjC,CAAiC,CAC/C,CAAC;IACN,CAAC;IAED;;OAEG;IACI,2BAAK,GAAZ,UAAa,QAAgB,EAAE,QAAgB;;QAC3C,IAAI,EAAE,GAAG,SAAI,EAAE,CAAC;QAChB,IAAI,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;QACvE,IAAI,CAAC,WAAW,CAAC;YACb,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE;gBACN;oBACI,MAAM,YAAI,GAAC,YAAY,IAAG,QAAQ,KAAE;oBACpC,UAAU,EAAE;wBACR,QAAQ,EAAE,kBAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;wBACrC,WAAW,EAAE,SAAS;qBACzB;iBACJ;aACJ;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,wCAAkB,GAAzB,UAA0B,SAAiB;QACvC,IAAI,EAAE,GAAG,SAAI,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC;YACb,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE;gBACN,EAAE,QAAQ,EAAE,SAAS,EAAE;aAC1B;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,oCAAc,GAArB,UAAsB,SAAiB,EAAE,UAAkB;QACvD,IAAI,EAAE,GAAG,SAAI,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC;YACb,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE;gBACN;oBACI,OAAO,EAAE;wBACL,iBAAiB,EAAE,SAAS;wBAC5B,kBAAkB,EAAE,UAAU;qBACjC;iBACJ;aACJ;SACJ,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,wCAAkB,GAAzB,UAA0B,EAAU;QAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAgB,CAAC;QAErB,IAAI,eAAe,GAAI,IAAI,CAAC,aAAa,EAAE;aACtC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAE,UAAC,EAAsB;gBAApB,YAAG,EAAE,gBAAK,EAAE,kBAAM;YAC/C,IAAG,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK;gBACzB,OAAO,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA,CAAC,iDAAiD;QACrF,CAAC,CAAC,CAAC;aACF,OAAO,CAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,mCAAmC;aACpD,MAAM,CAAC,UAAC,EAAa;gBAAX,aAAS;YAAO,OAAA,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;QAA5C,CAA4C,CAAE,CAAA,CAAC,uCAAuC;QAErH,OAAO,iBAAU,CAAC,KAAK,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,wCAAwC;IACxG,CAAC;IAED;;OAEG;IACI,gCAAU,GAAjB,UAAkB,MAAc;QAAE,gBAAoB;aAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;YAApB,+BAAoB;;QAClD,IAAI,EAAE,GAAG,SAAI,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC;YACb,KAAK,EAAE,QAAQ;YACf,MAAM,QAAA;YACN,EAAE,IAAA;YACF,MAAM,QAAA;SACT,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,qCAAe,GAAtB,UAAuB,UAAkB,EAAE,WAAmB,EAAE,QAAiB;QAC7E,IAAI,EAAE,GAAG,SAAI,EAAE,CAAC;QAChB,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CACvC,cAAM,OAAA,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,QAAQ,EAAE;gBACN,WAAW;gBACX,QAAQ;aACX;SACJ,CAAC,EARI,CAQJ,EACF,cAAM,OAAA,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,EAAE;SACX,CAAC,EAHI,CAGJ,EACF,UAAC,OAAY,IAAK,OAAA,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,WAAW,EAAvH,CAAuH,CAAC,uGAAuG;SACpP,CAAC;QACF,OAAO,YAAY,CAAC;IACxB,CAAC;IACL,kBAAC;AAAD,CAAC,AAvND,IAuNC;AAvNY,kCAAW"} \ No newline at end of file +{"version":3,"file":"RealTimeAPI.js","sourceRoot":"","sources":["../src/RealTimeAPI.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9db300d..45e2811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3073,7 +3073,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3094,12 +3095,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3114,17 +3117,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3241,7 +3247,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3253,6 +3260,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3267,6 +3275,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3274,12 +3283,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3298,6 +3309,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3378,7 +3390,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3390,6 +3403,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3475,7 +3489,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3511,6 +3526,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3530,6 +3546,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3573,12 +3590,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -10265,11 +10284,11 @@ "dev": true }, "rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "requires": { - "symbol-observable": "1.0.1" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -11388,11 +11407,6 @@ } } }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" - }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", @@ -11820,8 +11834,7 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tunnel-agent": { "version": "0.6.0", diff --git a/package.json b/package.json index 16dfa20..de6ea92 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ }, "dependencies": { "crypto-js": "^3.1.9-1", - "rxjs": "^5.4.1", + "rxjs": "^6.4.0", "uuid": "^3.1.0" }, "devDependencies": { @@ -72,4 +72,4 @@ "**/__tests__/*.+(ts|tsx|js)" ] } -} \ No newline at end of file +} diff --git a/src/RealTimeAPI.ts b/src/RealTimeAPI.ts index 31cffdd..fd7ee27 100644 --- a/src/RealTimeAPI.ts +++ b/src/RealTimeAPI.ts @@ -2,24 +2,21 @@ * Rocket.Chat RealTime API */ -import { Observable } from "rxjs"; -import { WebSocketSubject } from "rxjs/observable/dom/WebSocketSubject"; +import { webSocket, WebSocketSubject } from "rxjs/webSocket"; +import { filter, buffer, flatMap, merge, map, tap } from "rxjs/operators"; import { v4 as uuid } from "uuid"; import { SHA256 } from "crypto-js"; export class RealTimeAPI { - public url: string; - public webSocket: WebSocketSubject<{}>; + public webSocket: WebSocketSubject; - constructor(param: string | WebSocketSubject<{}>) { + constructor(param: string | WebSocketSubject) { switch (typeof param) { case "string": - this.url = param as string; - this.webSocket = Observable.webSocket(this.url); + this.webSocket = webSocket(param); break; case "object": - this.webSocket = param as WebSocketSubject<{}>; - this.url = this.webSocket.url; + this.webSocket = param as WebSocketSubject; break; default: throw new Error( @@ -32,7 +29,7 @@ export class RealTimeAPI { * Returns the Observable to the RealTime API Socket */ public getObservable() { - return this.webSocket.catch(err => Observable.of(err)); + return this.webSocket; } /** @@ -81,16 +78,16 @@ export class RealTimeAPI { /** * sendMessage to Rocket.Chat Server */ - public sendMessage(messageObject: {}): void { - this.webSocket.next(JSON.stringify(messageObject)); + public sendMessage(messageObject: any): void { + this.webSocket.next(messageObject); } /** * getObservableFilteredByMessageType */ public getObservableFilteredByMessageType(messageType: string) { - return this.getObservable().filter( - (message: any) => message.msg === messageType + return this.getObservable().pipe( + filter((message: any) => message.msg === messageType) ); } @@ -98,7 +95,9 @@ export class RealTimeAPI { * getObservableFilteredByID */ public getObservableFilteredByID(id: string) { - return this.getObservable().filter((message: any) => message.id === id); + return this.getObservable().pipe( + filter((message: any) => message.id === id) + ); } /** @@ -187,16 +186,20 @@ export class RealTimeAPI { let resultObservable = this.getObservableFilteredByID(id); let resultId: string; - let addedObservable = this.getObservable() - .buffer( - resultObservable.map(({ msg, error, result }) => { - if (msg === "result" && !error) return (resultId = result.id); // Setting resultId to get Result from the buffer - }) - ) - .flatMap(x => x) // Flattening the Buffered Messages - .filter(({ id: msgId }) => resultId !== undefined && msgId === resultId); //Filtering the "added" result message. + let addedObservable = this.getObservable().pipe( + buffer( + resultObservable.pipe( + map(({ msg, error, result }) => { + if (msg === "result" && !error) return (resultId = result.id); // Setting resultId to get Result from the buffer + }) + ) + ), + flatMap(x => x), // Flattening the Buffered Messages + filter(({ id: msgId }) => resultId !== undefined && msgId === resultId), //Filtering the "added" result message. + merge(resultObservable) //Merging "result" and "added" messages. + ); - return Observable.merge(resultObservable, addedObservable); //Merging "result" and "added" messages. + return addedObservable; } /** @@ -223,18 +226,16 @@ export class RealTimeAPI { ) { let id = uuid(); let subscription = this.webSocket.multiplex( - () => - JSON.stringify({ - msg: "sub", - id: id, - name: streamName, - params: [streamParam, addEvent] - }), - () => - JSON.stringify({ - msg: "unsub", - id: id - }), + () => ({ + msg: "sub", + id: id, + name: streamName, + params: [streamParam, addEvent] + }), + () => ({ + msg: "unsub", + id: id + }), (message: any) => typeof message.collection === "string" && message.collection === streamName &&