@webex/internal-plugin-board 3.0.0-beta.8 → 3.0.0-bnr.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/board.js +28 -108
- package/dist/board.js.map +1 -1
- package/dist/config.js +0 -8
- package/dist/config.js.map +1 -1
- package/dist/index.js +7 -28
- package/dist/index.js.map +1 -1
- package/dist/realtime-channel-collection.js +2 -8
- package/dist/realtime-channel-collection.js.map +1 -1
- package/dist/realtime-channel.js +1 -5
- package/dist/realtime-channel.js.map +1 -1
- package/dist/realtime.js +38 -82
- package/dist/realtime.js.map +1 -1
- package/dist/types/board.d.ts +2 -0
- package/dist/types/config.d.ts +11 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/realtime-channel-collection.d.ts +2 -0
- package/dist/types/realtime-channel.d.ts +2 -0
- package/dist/types/realtime.d.ts +7 -0
- package/package.json +14 -14
- package/src/board.js +257 -205
- package/src/config.js +2 -2
- package/src/index.js +19 -21
- package/src/realtime-channel-collection.js +2 -2
- package/src/realtime-channel.js +8 -9
- package/src/realtime.js +109 -93
- package/test/integration/spec/board.js +347 -221
- package/test/integration/spec/realtime.js +82 -56
- package/test/integration/spec/sharing-mercury.js +154 -73
- package/test/unit/spec/board.js +301 -215
- package/test/unit/spec/encryption.js +152 -120
- package/test/unit/spec/realtime.js +131 -89
package/dist/realtime.js
CHANGED
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
-
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
|
-
|
|
11
8
|
exports.default = void 0;
|
|
12
|
-
|
|
13
9
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
14
|
-
|
|
15
10
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
16
|
-
|
|
17
11
|
var _common = require("@webex/common");
|
|
18
|
-
|
|
19
12
|
var _webexCore = require("@webex/webex-core");
|
|
20
|
-
|
|
21
|
-
var _realtimeChannelCollection = _interopRequireDefault(require("./realtime-channel-collection.js"));
|
|
22
|
-
|
|
13
|
+
var _realtimeChannelCollection = _interopRequireDefault(require("./realtime-channel-collection"));
|
|
23
14
|
/*!
|
|
24
15
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
25
16
|
*/
|
|
@@ -34,49 +25,42 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
|
|
|
34
25
|
collections: {
|
|
35
26
|
realtimeChannels: _realtimeChannelCollection.default
|
|
36
27
|
},
|
|
37
|
-
|
|
38
28
|
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
29
|
+
* Sends the message via the socket. Assumes that the message is already properly formatted
|
|
30
|
+
* @memberof Board.RealtimeService
|
|
31
|
+
* @param {Board~Channel} channel
|
|
32
|
+
* @param {string} message Contains the un-encrypted message to send.
|
|
33
|
+
* @returns {Promise<Board~Content>}
|
|
34
|
+
*/
|
|
45
35
|
publish: function publish(channel, message) {
|
|
46
36
|
var _this = this;
|
|
47
|
-
|
|
48
37
|
var encryptionPromise;
|
|
49
38
|
var contentType = 'STRING';
|
|
50
|
-
|
|
51
39
|
if (message.payload.file) {
|
|
52
40
|
contentType = 'FILE';
|
|
53
41
|
encryptionPromise = this.webex.internal.board.encryptSingleFileContent(channel.defaultEncryptionKeyUrl, message.payload);
|
|
54
42
|
} else {
|
|
55
43
|
encryptionPromise = this.webex.internal.board.encryptSingleContent(channel.defaultEncryptionKeyUrl, message.payload);
|
|
56
44
|
}
|
|
57
|
-
|
|
58
45
|
return encryptionPromise.then(function (encryptedPayloadAndKeyUrl) {
|
|
59
46
|
return _this.publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType);
|
|
60
47
|
});
|
|
61
48
|
},
|
|
62
|
-
|
|
63
49
|
/**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
50
|
+
* Sends the message via the socket. The message should already have been
|
|
51
|
+
* encrypted
|
|
52
|
+
* @memberof Board.RealtimeService
|
|
53
|
+
* @param {Board~Channel} channel
|
|
54
|
+
* @param {object} encryptedPayloadAndKeyUrl
|
|
55
|
+
* @param {string} contentType - provides hint for decryption. Defaults to
|
|
56
|
+
* `STRING`, and could also be `FILE`
|
|
57
|
+
* @returns {Promise<Board~Content>}
|
|
58
|
+
*/
|
|
73
59
|
publishEncrypted: function publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType) {
|
|
74
60
|
var realtimeChannel = this.realtimeChannels.get(channel.channelId);
|
|
75
|
-
|
|
76
61
|
if (!realtimeChannel) {
|
|
77
62
|
return _promise.default.reject(new Error('Realtime Channel not found'));
|
|
78
63
|
}
|
|
79
|
-
|
|
80
64
|
var data = {
|
|
81
65
|
id: _uuid.default.v4(),
|
|
82
66
|
type: 'publishRequest',
|
|
@@ -94,89 +78,75 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
|
|
|
94
78
|
channelId: channel.channelId
|
|
95
79
|
}
|
|
96
80
|
}
|
|
97
|
-
};
|
|
81
|
+
};
|
|
98
82
|
|
|
83
|
+
// provide a hint for decryption
|
|
99
84
|
if (contentType === 'FILE') {
|
|
100
85
|
data.data.payload = {
|
|
101
86
|
file: encryptedPayloadAndKeyUrl.file,
|
|
102
87
|
payload: encryptedPayloadAndKeyUrl.payload
|
|
103
88
|
};
|
|
104
89
|
}
|
|
105
|
-
|
|
106
90
|
return realtimeChannel.send(data);
|
|
107
91
|
},
|
|
108
92
|
createRealtimeChannel: function createRealtimeChannel(channel) {
|
|
109
93
|
var _this2 = this;
|
|
110
|
-
|
|
111
94
|
var requestBindings = [this._boardChannelIdToMercuryBinding(channel.channelId)];
|
|
112
95
|
var bindingObj = {
|
|
113
96
|
bindings: requestBindings
|
|
114
97
|
};
|
|
115
98
|
return this.webex.internal.board.register(bindingObj).then(function (_ref) {
|
|
116
99
|
var webSocketUrl = _ref.webSocketUrl,
|
|
117
|
-
|
|
118
|
-
|
|
100
|
+
bindings = _ref.bindings;
|
|
119
101
|
_this2.realtimeChannels.add({
|
|
120
102
|
channelId: channel.channelId,
|
|
121
103
|
socketUrl: webSocketUrl,
|
|
122
104
|
binding: bindings[0]
|
|
123
105
|
});
|
|
124
|
-
|
|
125
106
|
return _this2.realtimeChannels.get(channel.channelId);
|
|
126
107
|
});
|
|
127
108
|
},
|
|
128
|
-
|
|
129
109
|
/**
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
110
|
+
* Open new mercury connection
|
|
111
|
+
* @memberof Board.RealtimeService
|
|
112
|
+
* @param {Board~Channel} channel
|
|
113
|
+
* @returns {Promise}
|
|
114
|
+
*/
|
|
135
115
|
connectByOpenNewMercuryConnection: function connectByOpenNewMercuryConnection(channel) {
|
|
136
116
|
var _this3 = this;
|
|
137
|
-
|
|
138
117
|
var promise = _promise.default.resolve();
|
|
139
|
-
|
|
140
118
|
var realtimeChannel = this.realtimeChannels.get(channel.channelId);
|
|
141
|
-
|
|
142
119
|
if (!realtimeChannel) {
|
|
143
120
|
this.logger.info('board realtime: realtime channel not found, creating new channel');
|
|
144
121
|
promise = this.createRealtimeChannel(channel).then(function (rc) {
|
|
145
122
|
realtimeChannel = rc;
|
|
146
|
-
|
|
147
123
|
_this3.logger.info('board realtime: realtime channel created');
|
|
148
|
-
|
|
149
124
|
return realtimeChannel;
|
|
150
125
|
});
|
|
151
126
|
}
|
|
152
|
-
|
|
153
127
|
return promise.then(function () {
|
|
154
128
|
return realtimeChannel.connect(realtimeChannel.socketUrl);
|
|
155
129
|
});
|
|
156
130
|
},
|
|
157
|
-
|
|
158
131
|
/**
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
132
|
+
* Disconnect connection
|
|
133
|
+
* @memberof Board.RealtimeService
|
|
134
|
+
* @param {Board~Channel} channel
|
|
135
|
+
* @returns {Promise}
|
|
136
|
+
*/
|
|
164
137
|
disconnectMercuryConnection: function disconnectMercuryConnection(channel) {
|
|
165
138
|
var _this4 = this;
|
|
166
|
-
|
|
167
139
|
var realtimeChannel = this.realtimeChannels.get(channel.channelId);
|
|
168
|
-
|
|
169
140
|
if (!realtimeChannel) {
|
|
170
141
|
return _promise.default.reject(new Error('Realtime Channel not found!'));
|
|
171
142
|
}
|
|
172
|
-
|
|
173
|
-
|
|
143
|
+
return realtimeChannel.disconnect()
|
|
144
|
+
// even if we can't remove the channels from the collection, we can still
|
|
174
145
|
// continue on execution
|
|
175
146
|
.then((0, _common.tap)(function () {
|
|
176
147
|
return _this4.realtimeChannels.remove(channel.channelId);
|
|
177
148
|
}));
|
|
178
149
|
},
|
|
179
|
-
|
|
180
150
|
/**
|
|
181
151
|
* Ensure board channelId is compatible with mercury bindings by replacing
|
|
182
152
|
* '-' with '.' and '_' with '#'
|
|
@@ -188,7 +158,6 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
|
|
|
188
158
|
// make channelId mercury compatible replace `-` with `.` and `_` with `#`
|
|
189
159
|
return this.config.mercuryBindingPrefix + channelId.replace(/-/g, '.').replace(/_/g, '#');
|
|
190
160
|
},
|
|
191
|
-
|
|
192
161
|
/**
|
|
193
162
|
* Connect and use an exisiting mercury connection
|
|
194
163
|
* @memberof Board.RealtimeService
|
|
@@ -197,52 +166,42 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
|
|
|
197
166
|
*/
|
|
198
167
|
connectToSharedMercury: function connectToSharedMercury(channel) {
|
|
199
168
|
var _this5 = this;
|
|
200
|
-
|
|
201
169
|
return this.webex.internal.board.registerToShareMercury(channel).then(function (res) {
|
|
202
170
|
_this5.realtimeChannels.add({
|
|
203
171
|
channelId: channel.channelId,
|
|
204
172
|
binding: res.binding,
|
|
205
173
|
socketUrl: res.webSocketUrl
|
|
206
174
|
});
|
|
207
|
-
|
|
208
175
|
var realtimeChannel = _this5.realtimeChannels.get(channel.channelId);
|
|
209
|
-
|
|
210
176
|
if (!res.sharedWebSocket) {
|
|
211
177
|
return realtimeChannel.connect(realtimeChannel.socketUrl).then(function () {
|
|
212
178
|
return res;
|
|
213
179
|
});
|
|
214
180
|
}
|
|
215
|
-
|
|
216
181
|
realtimeChannel.isSharingMercury = true;
|
|
217
|
-
realtimeChannel.socket = _this5.webex.internal.mercury.socket;
|
|
218
|
-
|
|
182
|
+
realtimeChannel.socket = _this5.webex.internal.mercury.socket;
|
|
183
|
+
// refresh socket reference when mercury is reconnected
|
|
219
184
|
_this5.webex.internal.mercury.off('online', _this5.refreshMercurySocketReference, _this5);
|
|
185
|
+
_this5.webex.internal.mercury.on('online', _this5.refreshMercurySocketReference, _this5);
|
|
220
186
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
187
|
+
// make sure there's only one handler
|
|
224
188
|
_this5.webex.internal.mercury.off('event:board.activity', _this5.handleBoardActivityMessages, _this5);
|
|
225
|
-
|
|
226
189
|
_this5.webex.internal.mercury.on('event:board.activity', _this5.handleBoardActivityMessages, _this5);
|
|
227
|
-
|
|
228
190
|
return res;
|
|
229
191
|
});
|
|
230
192
|
},
|
|
231
193
|
handleBoardActivityMessages: function handleBoardActivityMessages(event) {
|
|
232
194
|
var realtimeChannel = this.realtimeChannels.get(event.data.envelope.channelId);
|
|
233
|
-
|
|
234
195
|
if (realtimeChannel) {
|
|
235
196
|
realtimeChannel._emit('event:board.activity', event);
|
|
236
197
|
}
|
|
237
198
|
},
|
|
238
199
|
refreshMercurySocketReference: function refreshMercurySocketReference() {
|
|
239
200
|
var _this6 = this;
|
|
240
|
-
|
|
241
201
|
this.realtimeChannels.forEach(function (realtimeChannel) {
|
|
242
202
|
realtimeChannel.socket = _this6.webex.internal.mercury.socket;
|
|
243
203
|
});
|
|
244
204
|
},
|
|
245
|
-
|
|
246
205
|
/**
|
|
247
206
|
* Remove board binding from existing mercury connection
|
|
248
207
|
* @memberof Board.RealtimeService
|
|
@@ -251,22 +210,19 @@ var RealtimeService = _webexCore.WebexPlugin.extend({
|
|
|
251
210
|
*/
|
|
252
211
|
disconnectFromSharedMercury: function disconnectFromSharedMercury(channel) {
|
|
253
212
|
var _this7 = this;
|
|
254
|
-
|
|
255
213
|
var realtimeChannel = this.realtimeChannels.get(channel.channelId);
|
|
256
|
-
|
|
257
214
|
if (!realtimeChannel.isSharingMercury && realtimeChannel.socket && realtimeChannel.connected) {
|
|
258
215
|
return this.disconnectMercuryConnection(channel);
|
|
259
216
|
}
|
|
260
|
-
|
|
261
|
-
|
|
217
|
+
return this.webex.internal.board.unregisterFromSharedMercury(channel, realtimeChannel.binding)
|
|
218
|
+
// tap suppress errors but we can still go on if the channel can't be
|
|
262
219
|
// removed from the collection
|
|
263
220
|
.then((0, _common.tap)(function () {
|
|
264
221
|
return _this7.realtimeChannels.remove(channel.channelId);
|
|
265
222
|
}));
|
|
266
223
|
},
|
|
267
|
-
version: "3.0.0-
|
|
224
|
+
version: "3.0.0-bnr.0"
|
|
268
225
|
});
|
|
269
|
-
|
|
270
226
|
var _default = RealtimeService;
|
|
271
227
|
exports.default = _default;
|
|
272
228
|
//# sourceMappingURL=realtime.js.map
|
package/dist/realtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RealtimeService","WebexPlugin","extend","namespace","collections","realtimeChannels","RealtimeChannelCollection","publish","channel","message","encryptionPromise","contentType","payload","file","webex","internal","board","encryptSingleFileContent","defaultEncryptionKeyUrl","encryptSingleContent","then","encryptedPayloadAndKeyUrl","publishEncrypted","realtimeChannel","get","channelId","reject","Error","data","id","uuid","v4","type","recipients","alertType","route","binding","headers","eventType","envelope","encryptionKeyUrl","send","createRealtimeChannel","requestBindings","_boardChannelIdToMercuryBinding","bindingObj","bindings","register","webSocketUrl","add","socketUrl","connectByOpenNewMercuryConnection","promise","resolve","logger","info","rc","connect","disconnectMercuryConnection","disconnect","tap","remove","config","mercuryBindingPrefix","replace","connectToSharedMercury","registerToShareMercury","res","sharedWebSocket","isSharingMercury","socket","mercury","off","refreshMercurySocketReference","on","handleBoardActivityMessages","event","_emit","forEach","disconnectFromSharedMercury","connected","unregisterFromSharedMercury"],"sources":["realtime.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport uuid from 'uuid';\nimport {tap} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport RealtimeChannelCollection from './realtime-channel-collection.js';\n\n/**\n * @class\n * @extends {Mercury}\n * @memberof Board\n */\nconst RealtimeService = WebexPlugin.extend({\n namespace: 'Board',\n\n collections: {\n realtimeChannels: RealtimeChannelCollection\n },\n\n /**\n * Sends the message via the socket. Assumes that the message is already properly formatted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {string} message Contains the un-encrypted message to send.\n * @returns {Promise<Board~Content>}\n */\n publish(channel, message) {\n let encryptionPromise;\n let contentType = 'STRING';\n\n if (message.payload.file) {\n contentType = 'FILE';\n encryptionPromise = this.webex.internal.board.encryptSingleFileContent(channel.defaultEncryptionKeyUrl, message.payload);\n }\n else {\n encryptionPromise = this.webex.internal.board.encryptSingleContent(channel.defaultEncryptionKeyUrl, message.payload);\n }\n\n return encryptionPromise\n .then((encryptedPayloadAndKeyUrl) => this.publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType));\n },\n\n /**\n * Sends the message via the socket. The message should already have been\n * encrypted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {object} encryptedPayloadAndKeyUrl\n * @param {string} contentType - provides hint for decryption. Defaults to\n * `STRING`, and could also be `FILE`\n * @returns {Promise<Board~Content>}\n */\n publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found'));\n }\n\n const data = {\n id: uuid.v4(),\n type: 'publishRequest',\n recipients: [{\n alertType: 'none',\n route: realtimeChannel.binding,\n headers: {}\n }],\n data: {\n eventType: 'board.activity',\n contentType,\n payload: encryptedPayloadAndKeyUrl.payload,\n envelope: {\n encryptionKeyUrl: encryptedPayloadAndKeyUrl.encryptionKeyUrl,\n channelId: channel.channelId\n }\n }\n };\n\n // provide a hint for decryption\n if (contentType === 'FILE') {\n data.data.payload = {\n file: encryptedPayloadAndKeyUrl.file,\n payload: encryptedPayloadAndKeyUrl.payload\n };\n }\n\n return realtimeChannel.send(data);\n },\n\n createRealtimeChannel(channel) {\n const requestBindings = [this._boardChannelIdToMercuryBinding(channel.channelId)];\n const bindingObj = {bindings: requestBindings};\n\n return this.webex.internal.board.register(bindingObj)\n .then(({webSocketUrl, bindings}) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n socketUrl: webSocketUrl,\n binding: bindings[0]\n });\n\n return this.realtimeChannels.get(channel.channelId);\n });\n },\n\n /**\n * Open new mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n connectByOpenNewMercuryConnection(channel) {\n let promise = Promise.resolve();\n let realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n this.logger.info('board realtime: realtime channel not found, creating new channel');\n promise = this.createRealtimeChannel(channel)\n .then((rc) => {\n realtimeChannel = rc;\n this.logger.info('board realtime: realtime channel created');\n\n return realtimeChannel;\n });\n }\n\n return promise\n .then(() => realtimeChannel.connect(realtimeChannel.socketUrl));\n },\n\n /**\n * Disconnect connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n disconnectMercuryConnection(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found!'));\n }\n\n return realtimeChannel.disconnect()\n // even if we can't remove the channels from the collection, we can still\n // continue on execution\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)));\n },\n\n /**\n * Ensure board channelId is compatible with mercury bindings by replacing\n * '-' with '.' and '_' with '#'\n * @memberof Board.BoardService\n * @param {String} channelId channel.channelId\n * @returns {String} mercury-binding compatible string\n */\n _boardChannelIdToMercuryBinding(channelId) {\n // make channelId mercury compatible replace `-` with `.` and `_` with `#`\n return this.config.mercuryBindingPrefix + channelId.replace(/-/g, '.').replace(/_/g, '#');\n },\n\n /**\n * Connect and use an exisiting mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n connectToSharedMercury(channel) {\n return this.webex.internal.board.registerToShareMercury(channel)\n .then((res) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n binding: res.binding,\n socketUrl: res.webSocketUrl\n });\n\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!res.sharedWebSocket) {\n return realtimeChannel.connect(realtimeChannel.socketUrl)\n .then(() => res);\n }\n\n realtimeChannel.isSharingMercury = true;\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n // refresh socket reference when mercury is reconnected\n this.webex.internal.mercury.off('online', this.refreshMercurySocketReference, this);\n this.webex.internal.mercury.on('online', this.refreshMercurySocketReference, this);\n\n // make sure there's only one handler\n this.webex.internal.mercury.off('event:board.activity', this.handleBoardActivityMessages, this);\n this.webex.internal.mercury.on('event:board.activity', this.handleBoardActivityMessages, this);\n\n return res;\n });\n },\n\n handleBoardActivityMessages(event) {\n const realtimeChannel = this.realtimeChannels.get(event.data.envelope.channelId);\n\n if (realtimeChannel) {\n realtimeChannel._emit('event:board.activity', event);\n }\n },\n\n refreshMercurySocketReference() {\n this.realtimeChannels.forEach((realtimeChannel) => {\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n });\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n disconnectFromSharedMercury(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel.isSharingMercury && realtimeChannel.socket && realtimeChannel.connected) {\n return this.disconnectMercuryConnection(channel);\n }\n\n return this.webex.internal.board.unregisterFromSharedMercury(channel, realtimeChannel.binding)\n // tap suppress errors but we can still go on if the channel can't be\n // removed from the collection\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)));\n }\n\n});\n\nexport default RealtimeService;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["RealtimeService","WebexPlugin","extend","namespace","collections","realtimeChannels","RealtimeChannelCollection","publish","channel","message","encryptionPromise","contentType","payload","file","webex","internal","board","encryptSingleFileContent","defaultEncryptionKeyUrl","encryptSingleContent","then","encryptedPayloadAndKeyUrl","publishEncrypted","realtimeChannel","get","channelId","reject","Error","data","id","uuid","v4","type","recipients","alertType","route","binding","headers","eventType","envelope","encryptionKeyUrl","send","createRealtimeChannel","requestBindings","_boardChannelIdToMercuryBinding","bindingObj","bindings","register","webSocketUrl","add","socketUrl","connectByOpenNewMercuryConnection","promise","resolve","logger","info","rc","connect","disconnectMercuryConnection","disconnect","tap","remove","config","mercuryBindingPrefix","replace","connectToSharedMercury","registerToShareMercury","res","sharedWebSocket","isSharingMercury","socket","mercury","off","refreshMercurySocketReference","on","handleBoardActivityMessages","event","_emit","forEach","disconnectFromSharedMercury","connected","unregisterFromSharedMercury"],"sources":["realtime.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport uuid from 'uuid';\nimport {tap} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport RealtimeChannelCollection from './realtime-channel-collection';\n\n/**\n * @class\n * @extends {Mercury}\n * @memberof Board\n */\nconst RealtimeService = WebexPlugin.extend({\n namespace: 'Board',\n\n collections: {\n realtimeChannels: RealtimeChannelCollection,\n },\n\n /**\n * Sends the message via the socket. Assumes that the message is already properly formatted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {string} message Contains the un-encrypted message to send.\n * @returns {Promise<Board~Content>}\n */\n publish(channel, message) {\n let encryptionPromise;\n let contentType = 'STRING';\n\n if (message.payload.file) {\n contentType = 'FILE';\n encryptionPromise = this.webex.internal.board.encryptSingleFileContent(\n channel.defaultEncryptionKeyUrl,\n message.payload\n );\n } else {\n encryptionPromise = this.webex.internal.board.encryptSingleContent(\n channel.defaultEncryptionKeyUrl,\n message.payload\n );\n }\n\n return encryptionPromise.then((encryptedPayloadAndKeyUrl) =>\n this.publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType)\n );\n },\n\n /**\n * Sends the message via the socket. The message should already have been\n * encrypted\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @param {object} encryptedPayloadAndKeyUrl\n * @param {string} contentType - provides hint for decryption. Defaults to\n * `STRING`, and could also be `FILE`\n * @returns {Promise<Board~Content>}\n */\n publishEncrypted(channel, encryptedPayloadAndKeyUrl, contentType) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found'));\n }\n\n const data = {\n id: uuid.v4(),\n type: 'publishRequest',\n recipients: [\n {\n alertType: 'none',\n route: realtimeChannel.binding,\n headers: {},\n },\n ],\n data: {\n eventType: 'board.activity',\n contentType,\n payload: encryptedPayloadAndKeyUrl.payload,\n envelope: {\n encryptionKeyUrl: encryptedPayloadAndKeyUrl.encryptionKeyUrl,\n channelId: channel.channelId,\n },\n },\n };\n\n // provide a hint for decryption\n if (contentType === 'FILE') {\n data.data.payload = {\n file: encryptedPayloadAndKeyUrl.file,\n payload: encryptedPayloadAndKeyUrl.payload,\n };\n }\n\n return realtimeChannel.send(data);\n },\n\n createRealtimeChannel(channel) {\n const requestBindings = [this._boardChannelIdToMercuryBinding(channel.channelId)];\n const bindingObj = {bindings: requestBindings};\n\n return this.webex.internal.board.register(bindingObj).then(({webSocketUrl, bindings}) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n socketUrl: webSocketUrl,\n binding: bindings[0],\n });\n\n return this.realtimeChannels.get(channel.channelId);\n });\n },\n\n /**\n * Open new mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n connectByOpenNewMercuryConnection(channel) {\n let promise = Promise.resolve();\n let realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n this.logger.info('board realtime: realtime channel not found, creating new channel');\n promise = this.createRealtimeChannel(channel).then((rc) => {\n realtimeChannel = rc;\n this.logger.info('board realtime: realtime channel created');\n\n return realtimeChannel;\n });\n }\n\n return promise.then(() => realtimeChannel.connect(realtimeChannel.socketUrl));\n },\n\n /**\n * Disconnect connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise}\n */\n disconnectMercuryConnection(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel) {\n return Promise.reject(new Error('Realtime Channel not found!'));\n }\n\n return (\n realtimeChannel\n .disconnect()\n // even if we can't remove the channels from the collection, we can still\n // continue on execution\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)))\n );\n },\n\n /**\n * Ensure board channelId is compatible with mercury bindings by replacing\n * '-' with '.' and '_' with '#'\n * @memberof Board.BoardService\n * @param {String} channelId channel.channelId\n * @returns {String} mercury-binding compatible string\n */\n _boardChannelIdToMercuryBinding(channelId) {\n // make channelId mercury compatible replace `-` with `.` and `_` with `#`\n return this.config.mercuryBindingPrefix + channelId.replace(/-/g, '.').replace(/_/g, '#');\n },\n\n /**\n * Connect and use an exisiting mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n connectToSharedMercury(channel) {\n return this.webex.internal.board.registerToShareMercury(channel).then((res) => {\n this.realtimeChannels.add({\n channelId: channel.channelId,\n binding: res.binding,\n socketUrl: res.webSocketUrl,\n });\n\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!res.sharedWebSocket) {\n return realtimeChannel.connect(realtimeChannel.socketUrl).then(() => res);\n }\n\n realtimeChannel.isSharingMercury = true;\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n // refresh socket reference when mercury is reconnected\n this.webex.internal.mercury.off('online', this.refreshMercurySocketReference, this);\n this.webex.internal.mercury.on('online', this.refreshMercurySocketReference, this);\n\n // make sure there's only one handler\n this.webex.internal.mercury.off(\n 'event:board.activity',\n this.handleBoardActivityMessages,\n this\n );\n this.webex.internal.mercury.on(\n 'event:board.activity',\n this.handleBoardActivityMessages,\n this\n );\n\n return res;\n });\n },\n\n handleBoardActivityMessages(event) {\n const realtimeChannel = this.realtimeChannels.get(event.data.envelope.channelId);\n\n if (realtimeChannel) {\n realtimeChannel._emit('event:board.activity', event);\n }\n },\n\n refreshMercurySocketReference() {\n this.realtimeChannels.forEach((realtimeChannel) => {\n realtimeChannel.socket = this.webex.internal.mercury.socket;\n });\n },\n\n /**\n * Remove board binding from existing mercury connection\n * @memberof Board.RealtimeService\n * @param {Board~Channel} channel\n * @returns {Promise<Board~Registration>}\n */\n disconnectFromSharedMercury(channel) {\n const realtimeChannel = this.realtimeChannels.get(channel.channelId);\n\n if (!realtimeChannel.isSharingMercury && realtimeChannel.socket && realtimeChannel.connected) {\n return this.disconnectMercuryConnection(channel);\n }\n\n return (\n this.webex.internal.board\n .unregisterFromSharedMercury(channel, realtimeChannel.binding)\n // tap suppress errors but we can still go on if the channel can't be\n // removed from the collection\n .then(tap(() => this.realtimeChannels.remove(channel.channelId)))\n );\n },\n});\n\nexport default RealtimeService;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
namespace board {
|
|
3
|
+
const numberContentsPerPageForAdd: number;
|
|
4
|
+
const numberContentsPerPageForGet: number;
|
|
5
|
+
const pingInterval: number;
|
|
6
|
+
const pongTimeout: number;
|
|
7
|
+
const forceCloseDelay: [type];
|
|
8
|
+
const mercuryBindingPrefix: string;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-board",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-bnr.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Greg Hewett <ghewett@cisco.com>",
|
|
@@ -21,22 +21,22 @@
|
|
|
21
21
|
]
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@webex/test-helper-chai": "3.0.0-
|
|
25
|
-
"@webex/test-helper-file": "3.0.0-
|
|
26
|
-
"@webex/test-helper-mocha": "3.0.0-
|
|
27
|
-
"@webex/test-helper-mock-web-socket": "3.0.0-
|
|
28
|
-
"@webex/test-helper-mock-webex": "3.0.0-
|
|
29
|
-
"@webex/test-helper-test-users": "3.0.0-
|
|
24
|
+
"@webex/test-helper-chai": "3.0.0-bnr.0",
|
|
25
|
+
"@webex/test-helper-file": "3.0.0-bnr.0",
|
|
26
|
+
"@webex/test-helper-mocha": "3.0.0-bnr.0",
|
|
27
|
+
"@webex/test-helper-mock-web-socket": "3.0.0-bnr.0",
|
|
28
|
+
"@webex/test-helper-mock-webex": "3.0.0-bnr.0",
|
|
29
|
+
"@webex/test-helper-test-users": "3.0.0-bnr.0",
|
|
30
30
|
"sinon": "^9.2.4"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@webex/common": "3.0.0-
|
|
34
|
-
"@webex/internal-plugin-board": "3.0.0-
|
|
35
|
-
"@webex/internal-plugin-conversation": "3.0.0-
|
|
36
|
-
"@webex/internal-plugin-encryption": "3.0.0-
|
|
37
|
-
"@webex/internal-plugin-feature": "3.0.0-
|
|
38
|
-
"@webex/internal-plugin-mercury": "3.0.0-
|
|
39
|
-
"@webex/webex-core": "3.0.0-
|
|
33
|
+
"@webex/common": "3.0.0-bnr.0",
|
|
34
|
+
"@webex/internal-plugin-board": "3.0.0-bnr.0",
|
|
35
|
+
"@webex/internal-plugin-conversation": "3.0.0-bnr.0",
|
|
36
|
+
"@webex/internal-plugin-encryption": "3.0.0-bnr.0",
|
|
37
|
+
"@webex/internal-plugin-feature": "3.0.0-bnr.0",
|
|
38
|
+
"@webex/internal-plugin-mercury": "3.0.0-bnr.0",
|
|
39
|
+
"@webex/webex-core": "3.0.0-bnr.0",
|
|
40
40
|
"ampersand-collection": "^2.0.2",
|
|
41
41
|
"es6-promise-series": "^0.2.2",
|
|
42
42
|
"lodash": "^4.17.21",
|