@atlaskit/collab-provider 7.0.1 → 7.1.3
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/CHANGELOG.md +38 -0
- package/disconnected-reason-mapper/package.json +7 -0
- package/dist/cjs/analytics/index.js +1 -1
- package/dist/cjs/analytics/performance.js +1 -1
- package/dist/cjs/channel.js +25 -7
- package/dist/cjs/disconnected-reason-mapper.js +31 -0
- package/dist/cjs/helpers/const.js +1 -1
- package/dist/cjs/helpers/utils.js +9 -14
- package/dist/cjs/provider/catchup.js +1 -1
- package/dist/cjs/provider/index.js +105 -70
- package/dist/cjs/socket-io-provider.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/channel.js +23 -7
- package/dist/es2019/disconnected-reason-mapper.js +23 -0
- package/dist/es2019/helpers/utils.js +9 -14
- package/dist/es2019/provider/index.js +61 -30
- package/dist/es2019/version.json +1 -1
- package/dist/esm/channel.js +25 -7
- package/dist/esm/disconnected-reason-mapper.js +23 -0
- package/dist/esm/helpers/utils.js +8 -13
- package/dist/esm/provider/index.js +104 -70
- package/dist/esm/version.json +1 -1
- package/dist/types/channel.d.ts +10 -15
- package/dist/types/disconnected-reason-mapper.d.ts +15 -0
- package/dist/types/helpers/utils.d.ts +2 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/provider/index.d.ts +14 -6
- package/package.json +10 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @atlaskit/collab-provider
|
|
2
2
|
|
|
3
|
+
## 7.1.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`c55c736ecea`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c55c736ecea) - Patch VULN AFP-3486 AFP-3487 AFP-3488 AFP-3489
|
|
8
|
+
|
|
9
|
+
## 7.1.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
|
|
15
|
+
## 7.1.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [`c6feed82071`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c6feed82071) - ED-11632: Bump prosemirror packages;
|
|
20
|
+
|
|
21
|
+
- prosmirror-commands 1.1.4 -> 1.1.11,
|
|
22
|
+
- prosemirror-model 1.11.0 -> 1.14.3,
|
|
23
|
+
- prosemirror-state 1.3.3 -> 1.3.4,
|
|
24
|
+
- prosemirror-transform 1.2.8 -> 1.3.2,
|
|
25
|
+
- prosemirror-view 1.15.4 + 1.18.8 -> 1.20.2.
|
|
26
|
+
|
|
27
|
+
- [`b670f0469c4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b670f0469c4) - COLLAB-990: fixing duplciated avatar
|
|
28
|
+
- Updated dependencies
|
|
29
|
+
|
|
30
|
+
## 7.1.0
|
|
31
|
+
|
|
32
|
+
### Minor Changes
|
|
33
|
+
|
|
34
|
+
- [`cf853e39278`](https://bitbucket.org/atlassian/atlassian-frontend/commits/cf853e39278) - COLLAB-411-change-to-metadata: 'setTitle' and 'setEditorWidth' are deprecated, going to be removed in the next release, use 'setMetadata' instead.
|
|
35
|
+
- [`10d7bc384aa`](https://bitbucket.org/atlassian/atlassian-frontend/commits/10d7bc384aa) - COLLAB-933: add disconnected event
|
|
36
|
+
|
|
37
|
+
### Patch Changes
|
|
38
|
+
|
|
39
|
+
- Updated dependencies
|
|
40
|
+
|
|
3
41
|
## 7.0.1
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/collab-provider/disconnected-reason-mapper",
|
|
3
|
+
"main": "../dist/cjs/disconnected-reason-mapper.js",
|
|
4
|
+
"module": "../dist/esm/disconnected-reason-mapper.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/disconnected-reason-mapper.js",
|
|
6
|
+
"types": "../dist/types/disconnected-reason-mapper.d.ts"
|
|
7
|
+
}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.triggerAnalyticsForStepsRejected = exports.triggerAnalyticsForStepsAddedSuccessfully = exports.triggerAnalyticsForCatchupSuccessfulWithLatency = exports.triggerAnalyticsForCatchupFailed = exports.fireAnalyticsEvent = exports.buildAnalyticsPayload = void 0;
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.clearMeasure = clearMeasure;
|
|
6
7
|
exports.startMeasure = startMeasure;
|
|
7
8
|
exports.stopMeasure = stopMeasure;
|
|
8
|
-
exports.clearMeasure = clearMeasure;
|
|
9
9
|
|
|
10
10
|
var isPerformanceAPIAvailable = function isPerformanceAPIAvailable() {
|
|
11
11
|
return typeof window !== 'undefined' && 'performance' in window && ['measure', 'clearMeasures', 'clearMarks', 'getEntriesByName', 'getEntriesByType'].every(function (api) {
|
package/dist/cjs/channel.js
CHANGED
|
@@ -163,8 +163,11 @@ var Channel = /*#__PURE__*/function (_Emitter) {
|
|
|
163
163
|
this.socket.on('participant:telepointer', function (payload) {
|
|
164
164
|
_this2.emit('participant:telepointer', payload.data);
|
|
165
165
|
});
|
|
166
|
-
this.socket.on('
|
|
167
|
-
_this2.emit('
|
|
166
|
+
this.socket.on('presence:joined', function (data) {
|
|
167
|
+
_this2.emit('presence:joined', data);
|
|
168
|
+
});
|
|
169
|
+
this.socket.on('presence', function (data) {
|
|
170
|
+
_this2.emit('presence', data);
|
|
168
171
|
});
|
|
169
172
|
this.socket.on('participant:left', function (data) {
|
|
170
173
|
_this2.emit('participant:left', data);
|
|
@@ -181,11 +184,8 @@ var Channel = /*#__PURE__*/function (_Emitter) {
|
|
|
181
184
|
clientId: clientId
|
|
182
185
|
}, data));
|
|
183
186
|
});
|
|
184
|
-
this.socket.on('
|
|
185
|
-
_this2.emit('
|
|
186
|
-
});
|
|
187
|
-
this.socket.on('width:changed', function (payload) {
|
|
188
|
-
_this2.emit('width:changed', payload.data);
|
|
187
|
+
this.socket.on('metadata:changed', function (payload) {
|
|
188
|
+
_this2.emit('metadata:changed', payload);
|
|
189
189
|
});
|
|
190
190
|
this.socket.on('disconnect', /*#__PURE__*/function () {
|
|
191
191
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(reason) {
|
|
@@ -358,6 +358,24 @@ var Channel = /*#__PURE__*/function (_Emitter) {
|
|
|
358
358
|
type: type
|
|
359
359
|
}, data));
|
|
360
360
|
}
|
|
361
|
+
}, {
|
|
362
|
+
key: "sendMetadata",
|
|
363
|
+
value: function sendMetadata(metadata) {
|
|
364
|
+
if (!this.connected || !this.socket) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
this.socket.emit('metadata', metadata);
|
|
369
|
+
}
|
|
370
|
+
}, {
|
|
371
|
+
key: "sendPresenceJoined",
|
|
372
|
+
value: function sendPresenceJoined() {
|
|
373
|
+
if (!this.connected || !this.socket) {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
this.socket.emit('presence:joined');
|
|
378
|
+
}
|
|
361
379
|
}, {
|
|
362
380
|
key: "disconnect",
|
|
363
381
|
value: function disconnect() {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.socketIOReasons = exports.DisconnectReason = void 0;
|
|
7
|
+
// See https://socket.io/docs/v3/client-socket-instance#disconnect for emitted reasons
|
|
8
|
+
var socketIOReasons = {
|
|
9
|
+
IO_CLIENT_DISCONNECT: 'io client disconnect',
|
|
10
|
+
// The socket was manually disconnected using socket.disconnect()
|
|
11
|
+
IO_SERVER_DISCONNECT: 'io server disconnect',
|
|
12
|
+
// The server has forcefully disconnected the socket with socket.disconnect()
|
|
13
|
+
TRANSPORT_CLOSED: 'transport close',
|
|
14
|
+
// The server did not send a PING within the pingInterval + pingTimeout range
|
|
15
|
+
TRANSPORT_ERROR: 'transport error',
|
|
16
|
+
// The connection was closed (example: the user has lost connection, or the network was changed from WiFi to 4G)
|
|
17
|
+
PING_TIMEOUT: 'ping timeout' // The connection has encountered an error (example: the server was killed during a HTTP long-polling cycle)
|
|
18
|
+
|
|
19
|
+
};
|
|
20
|
+
exports.socketIOReasons = socketIOReasons;
|
|
21
|
+
var DisconnectReason;
|
|
22
|
+
exports.DisconnectReason = DisconnectReason;
|
|
23
|
+
|
|
24
|
+
(function (DisconnectReason) {
|
|
25
|
+
DisconnectReason["CLIENT_DISCONNECT"] = "CLIENT_DISCONNECT";
|
|
26
|
+
DisconnectReason["SERVER_DISCONNECT"] = "SERVER_DISCONNECT";
|
|
27
|
+
DisconnectReason["SOCKET_CLOSED"] = "SOCKET_CLOSED";
|
|
28
|
+
DisconnectReason["SOCKET_ERROR"] = "SOCKET_ERROR";
|
|
29
|
+
DisconnectReason["SOCKET_TIMEOUT"] = "SOCKET_TIMEOUT";
|
|
30
|
+
DisconnectReason["UNKNOWN_DISCONNECT"] = "UNKNOWN_DISCONNECT";
|
|
31
|
+
})(DisconnectReason || (exports.DisconnectReason = DisconnectReason = {}));
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.STEPS_REJECTED = exports.STEPS_ADDED = exports.CATCHUP_SUCCESS = exports.CATCHUP_FAILURE = exports.ATTRIBUTES_PACKAGE = exports.ACK_MAX_TRY = void 0;
|
|
7
7
|
var STEPS_ADDED = 'collabStepsAddedSuccess';
|
|
8
8
|
exports.STEPS_ADDED = STEPS_ADDED;
|
|
9
9
|
var STEPS_REJECTED = 'collabStepsAddedRejected';
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.sleep = sleep;
|
|
7
6
|
exports.getParticipant = exports.createLogger = void 0;
|
|
7
|
+
exports.sleep = sleep;
|
|
8
8
|
|
|
9
9
|
var createLogger = function createLogger(prefix) {
|
|
10
10
|
var color = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'blue';
|
|
@@ -13,27 +13,22 @@ var createLogger = function createLogger(prefix) {
|
|
|
13
13
|
|
|
14
14
|
if (window.COLLAB_PROVIDER_LOGGER) {
|
|
15
15
|
// eslint-disable-next-line no-console
|
|
16
|
-
console.log("%cCollab-".concat(prefix, ": ").concat(msg), "color: ".concat(color, "; font-weight: bold"));
|
|
17
|
-
|
|
18
|
-
if (data) {
|
|
19
|
-
// eslint-disable-next-line no-console
|
|
20
|
-
console.log(data);
|
|
21
|
-
}
|
|
16
|
+
console.log("%cCollab-".concat(prefix, ": ").concat(msg), "color: ".concat(color, "; font-weight: bold"), data);
|
|
22
17
|
}
|
|
23
18
|
};
|
|
24
19
|
};
|
|
25
20
|
|
|
26
21
|
exports.createLogger = createLogger;
|
|
22
|
+
var logger = createLogger('Helper:util', 'black');
|
|
27
23
|
|
|
28
24
|
var getParticipant = function getParticipant(userId) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return Promise.resolve({
|
|
25
|
+
logger('getParticipant: ', userId);
|
|
26
|
+
return {
|
|
32
27
|
userId: userId,
|
|
33
|
-
name:
|
|
34
|
-
avatar:
|
|
35
|
-
email: "".concat(
|
|
36
|
-
}
|
|
28
|
+
name: userId,
|
|
29
|
+
avatar: '',
|
|
30
|
+
email: "".concat(userId.replace(/\s/g, '').toLocaleLowerCase(), "@atlassian.com")
|
|
31
|
+
};
|
|
37
32
|
};
|
|
38
33
|
|
|
39
34
|
exports.getParticipant = getParticipant;
|
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.rebaseSteps = rebaseSteps;
|
|
9
8
|
exports.catchup = void 0;
|
|
9
|
+
exports.rebaseSteps = rebaseSteps;
|
|
10
10
|
|
|
11
11
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
12
12
|
|
|
@@ -37,6 +37,8 @@ var _prosemirrorCollab = require("prosemirror-collab");
|
|
|
37
37
|
|
|
38
38
|
var _throttle = _interopRequireDefault(require("lodash/throttle"));
|
|
39
39
|
|
|
40
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
41
|
+
|
|
40
42
|
var _emitter = require("../emitter");
|
|
41
43
|
|
|
42
44
|
var _channel = require("../channel");
|
|
@@ -51,6 +53,8 @@ var _catchup = require("./catchup");
|
|
|
51
53
|
|
|
52
54
|
var _errorCodeMapper = require("../error-code-mapper");
|
|
53
55
|
|
|
56
|
+
var _disconnectedReasonMapper = require("../disconnected-reason-mapper");
|
|
57
|
+
|
|
54
58
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
55
59
|
|
|
56
60
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -278,36 +282,28 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
278
282
|
return _this.sendPresence();
|
|
279
283
|
}, SEND_PRESENCE_INTERVAL);
|
|
280
284
|
});
|
|
281
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
285
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPresenceJoined", function (_ref5) {
|
|
282
286
|
var sessionId = _ref5.sessionId;
|
|
283
287
|
logger('Participant joined with session: ', sessionId); // This expose existing users to the newly joined user
|
|
284
288
|
|
|
285
289
|
_this.sendPresence();
|
|
286
290
|
});
|
|
287
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
288
|
-
var
|
|
291
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPresence", function (_ref6) {
|
|
292
|
+
var userId = _ref6.userId;
|
|
293
|
+
logger('onPresence userId: ', userId);
|
|
294
|
+
_this.userId = userId;
|
|
289
295
|
|
|
290
|
-
|
|
291
|
-
_this.metadata.title = title;
|
|
296
|
+
_this.sendPresence();
|
|
292
297
|
|
|
293
|
-
|
|
294
|
-
title: title
|
|
295
|
-
});
|
|
296
|
-
}
|
|
298
|
+
_this.channel.sendPresenceJoined();
|
|
297
299
|
});
|
|
298
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
if (editorWidth !== undefined && _this.metadata.editorWidth !== editorWidth) {
|
|
302
|
-
_this.metadata.editorWidth = editorWidth;
|
|
303
|
-
|
|
304
|
-
_this.emit('metadata:changed', {
|
|
305
|
-
editorWidth: editorWidth
|
|
306
|
-
});
|
|
300
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMetadataChanged", function (metadata) {
|
|
301
|
+
if (metadata !== undefined && !(0, _isEqual.default)(_this.metadata, metadata)) {
|
|
302
|
+
_this.emit('metadata:changed', metadata);
|
|
307
303
|
}
|
|
308
304
|
});
|
|
309
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantLeft", function (
|
|
310
|
-
var sessionId =
|
|
305
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantLeft", function (_ref7) {
|
|
306
|
+
var sessionId = _ref7.sessionId;
|
|
311
307
|
logger("Participant left");
|
|
312
308
|
|
|
313
309
|
_this.participants.delete(sessionId);
|
|
@@ -318,11 +314,11 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
318
314
|
}]
|
|
319
315
|
});
|
|
320
316
|
});
|
|
321
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantUpdated", function (
|
|
322
|
-
var sessionId =
|
|
323
|
-
timestamp =
|
|
324
|
-
userId =
|
|
325
|
-
clientId =
|
|
317
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantUpdated", function (_ref8) {
|
|
318
|
+
var sessionId = _ref8.sessionId,
|
|
319
|
+
timestamp = _ref8.timestamp,
|
|
320
|
+
userId = _ref8.userId,
|
|
321
|
+
clientId = _ref8.clientId;
|
|
326
322
|
|
|
327
323
|
_this.updateParticipant({
|
|
328
324
|
sessionId: sessionId,
|
|
@@ -331,12 +327,12 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
331
327
|
clientId: clientId
|
|
332
328
|
});
|
|
333
329
|
});
|
|
334
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantTelepointer", function (
|
|
335
|
-
var sessionId =
|
|
336
|
-
timestamp =
|
|
337
|
-
selection =
|
|
338
|
-
userId =
|
|
339
|
-
clientId =
|
|
330
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantTelepointer", function (_ref9) {
|
|
331
|
+
var sessionId = _ref9.sessionId,
|
|
332
|
+
timestamp = _ref9.timestamp,
|
|
333
|
+
selection = _ref9.selection,
|
|
334
|
+
userId = _ref9.userId,
|
|
335
|
+
clientId = _ref9.clientId;
|
|
340
336
|
|
|
341
337
|
if (sessionId === _this.sessionId) {
|
|
342
338
|
return;
|
|
@@ -364,19 +360,28 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
364
360
|
});
|
|
365
361
|
});
|
|
366
362
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateParticipant", /*#__PURE__*/function () {
|
|
367
|
-
var
|
|
363
|
+
var _ref11 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref10) {
|
|
368
364
|
var sessionId, timestamp, userId, clientId, getUser, _yield, _yield$name, name, _yield$email, email, _yield$avatar, avatar, isNewParticipant;
|
|
369
365
|
|
|
370
366
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
371
367
|
while (1) {
|
|
372
368
|
switch (_context2.prev = _context2.next) {
|
|
373
369
|
case 0:
|
|
374
|
-
sessionId =
|
|
370
|
+
sessionId = _ref10.sessionId, timestamp = _ref10.timestamp, userId = _ref10.userId, clientId = _ref10.clientId;
|
|
371
|
+
|
|
372
|
+
if (userId) {
|
|
373
|
+
_context2.next = 3;
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
return _context2.abrupt("return");
|
|
378
|
+
|
|
379
|
+
case 3:
|
|
375
380
|
getUser = _this.config.getUser;
|
|
376
|
-
_context2.next =
|
|
381
|
+
_context2.next = 6;
|
|
377
382
|
return getUser ? getUser(userId) : (0, _utils.getParticipant)(userId);
|
|
378
383
|
|
|
379
|
-
case
|
|
384
|
+
case 6:
|
|
380
385
|
_yield = _context2.sent;
|
|
381
386
|
_yield$name = _yield.name;
|
|
382
387
|
name = _yield$name === void 0 ? '' : _yield$name;
|
|
@@ -406,7 +411,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
406
411
|
|
|
407
412
|
_this.updateParticipants(isNewParticipant ? [_this.participants.get(sessionId)] : []);
|
|
408
413
|
|
|
409
|
-
case
|
|
414
|
+
case 17:
|
|
410
415
|
case "end":
|
|
411
416
|
return _context2.stop();
|
|
412
417
|
}
|
|
@@ -415,7 +420,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
415
420
|
}));
|
|
416
421
|
|
|
417
422
|
return function (_x) {
|
|
418
|
-
return
|
|
423
|
+
return _ref11.apply(this, arguments);
|
|
419
424
|
};
|
|
420
425
|
}());
|
|
421
426
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateParticipants", function () {
|
|
@@ -454,13 +459,39 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
454
459
|
return _this.updateParticipants();
|
|
455
460
|
}, PARTICIPANT_UPDATE_INTERVAL);
|
|
456
461
|
});
|
|
457
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
458
|
-
|
|
462
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "disconnectedReasonMapper", function (reason) {
|
|
463
|
+
switch (reason) {
|
|
464
|
+
case _disconnectedReasonMapper.socketIOReasons.IO_CLIENT_DISCONNECT:
|
|
465
|
+
return _disconnectedReasonMapper.DisconnectReason.CLIENT_DISCONNECT;
|
|
466
|
+
|
|
467
|
+
case _disconnectedReasonMapper.socketIOReasons.IO_SERVER_DISCONNECT:
|
|
468
|
+
return _disconnectedReasonMapper.DisconnectReason.SERVER_DISCONNECT;
|
|
469
|
+
|
|
470
|
+
case _disconnectedReasonMapper.socketIOReasons.TRANSPORT_CLOSED:
|
|
471
|
+
return _disconnectedReasonMapper.DisconnectReason.SOCKET_CLOSED;
|
|
472
|
+
|
|
473
|
+
case _disconnectedReasonMapper.socketIOReasons.TRANSPORT_ERROR:
|
|
474
|
+
return _disconnectedReasonMapper.DisconnectReason.SOCKET_ERROR;
|
|
475
|
+
|
|
476
|
+
case _disconnectedReasonMapper.socketIOReasons.PING_TIMEOUT:
|
|
477
|
+
return _disconnectedReasonMapper.DisconnectReason.SOCKET_TIMEOUT;
|
|
478
|
+
|
|
479
|
+
default:
|
|
480
|
+
return _disconnectedReasonMapper.DisconnectReason.UNKNOWN_DISCONNECT;
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onDisconnected", function (_ref12) {
|
|
484
|
+
var reason = _ref12.reason;
|
|
459
485
|
_this.disconnectedAt = Date.now();
|
|
460
486
|
var left = Array.from(_this.participants.values());
|
|
461
487
|
|
|
462
488
|
_this.participants.clear();
|
|
463
489
|
|
|
490
|
+
_this.emit('disconnected', {
|
|
491
|
+
reason: _this.disconnectedReasonMapper(reason),
|
|
492
|
+
sid: _this.sessionId
|
|
493
|
+
});
|
|
494
|
+
|
|
464
495
|
if (left.length) {
|
|
465
496
|
_this.emit('presence', {
|
|
466
497
|
left: left
|
|
@@ -492,16 +523,14 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
492
523
|
this.getState().plugins.find(function (p) {
|
|
493
524
|
return p.key === 'collab$';
|
|
494
525
|
}).spec.config.clientID : optionsOrGetState.clientId;
|
|
495
|
-
this.channel.on('connected', function (
|
|
496
|
-
var sid =
|
|
497
|
-
initialized =
|
|
526
|
+
this.channel.on('connected', function (_ref13) {
|
|
527
|
+
var sid = _ref13.sid,
|
|
528
|
+
initialized = _ref13.initialized;
|
|
498
529
|
_this2.sessionId = sid;
|
|
499
530
|
|
|
500
531
|
_this2.emit('connected', {
|
|
501
532
|
sid: sid
|
|
502
|
-
});
|
|
503
|
-
|
|
504
|
-
_this2.sendPresence(); // If already initialized, `connected` means reconnected
|
|
533
|
+
}); // If already initialized, `connected` means reconnected
|
|
505
534
|
|
|
506
535
|
|
|
507
536
|
if (initialized && _this2.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
|
|
@@ -510,22 +539,18 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
510
539
|
}
|
|
511
540
|
|
|
512
541
|
_this2.disconnectedAt = undefined;
|
|
513
|
-
}).on('init', function (
|
|
514
|
-
var doc =
|
|
515
|
-
version =
|
|
516
|
-
|
|
517
|
-
metadata = _ref15.metadata;
|
|
518
|
-
_this2.userId = userId;
|
|
519
|
-
|
|
520
|
-
_this2.sendPresence(); // Initial document and version
|
|
521
|
-
|
|
542
|
+
}).on('init', function (_ref14) {
|
|
543
|
+
var doc = _ref14.doc,
|
|
544
|
+
version = _ref14.version,
|
|
545
|
+
metadata = _ref14.metadata;
|
|
522
546
|
|
|
547
|
+
// Initial document and version
|
|
523
548
|
_this2.updateDocumentWithMetadata({
|
|
524
549
|
doc: doc,
|
|
525
550
|
version: version,
|
|
526
551
|
metadata: metadata
|
|
527
552
|
});
|
|
528
|
-
}).on('steps:added', this.onStepsAdded).on('participant:telepointer', this.onParticipantTelepointer).on('
|
|
553
|
+
}).on('steps:added', this.onStepsAdded).on('participant:telepointer', this.onParticipantTelepointer).on('presence:joined', this.onPresenceJoined).on('presence', this.onPresence).on('participant:left', this.onParticipantLeft).on('participant:updated', this.onParticipantUpdated).on('metadata:changed', this.onMetadataChanged).on('disconnect', this.onDisconnected).on('error', this.onErrorHandled).connect();
|
|
529
554
|
return this;
|
|
530
555
|
}
|
|
531
556
|
/**
|
|
@@ -624,8 +649,8 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
624
649
|
logger("Processing data. Version \"".concat(version, "\"."));
|
|
625
650
|
|
|
626
651
|
if (steps && steps.length) {
|
|
627
|
-
var clientIds = steps.map(function (
|
|
628
|
-
var clientId =
|
|
652
|
+
var clientIds = steps.map(function (_ref15) {
|
|
653
|
+
var clientId = _ref15.clientId;
|
|
629
654
|
return clientId;
|
|
630
655
|
});
|
|
631
656
|
this.emit('data', {
|
|
@@ -687,14 +712,14 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
687
712
|
participant = _Array$from$filter2[0];
|
|
688
713
|
|
|
689
714
|
if (participant) {
|
|
690
|
-
var
|
|
691
|
-
stepType =
|
|
692
|
-
to =
|
|
693
|
-
from =
|
|
694
|
-
|
|
695
|
-
slice =
|
|
715
|
+
var _ref16 = step,
|
|
716
|
+
stepType = _ref16.stepType,
|
|
717
|
+
to = _ref16.to,
|
|
718
|
+
from = _ref16.from,
|
|
719
|
+
_ref16$slice = _ref16.slice,
|
|
720
|
+
slice = _ref16$slice === void 0 ? {
|
|
696
721
|
content: []
|
|
697
|
-
} :
|
|
722
|
+
} : _ref16$slice;
|
|
698
723
|
|
|
699
724
|
var _slice$content = (0, _slicedToArray2.default)(slice.content, 1),
|
|
700
725
|
node = _slice$content[0];
|
|
@@ -726,24 +751,34 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
726
751
|
}, {
|
|
727
752
|
key: "setTitle",
|
|
728
753
|
value: function setTitle(title, broadcast) {
|
|
729
|
-
this.metadata.title = title;
|
|
730
|
-
|
|
731
754
|
if (broadcast) {
|
|
732
|
-
this.channel.
|
|
755
|
+
this.channel.sendMetadata({
|
|
733
756
|
title: title
|
|
734
757
|
});
|
|
735
758
|
}
|
|
759
|
+
|
|
760
|
+
Object.assign(this.metadata, {
|
|
761
|
+
title: title
|
|
762
|
+
});
|
|
736
763
|
}
|
|
737
764
|
}, {
|
|
738
765
|
key: "setEditorWidth",
|
|
739
766
|
value: function setEditorWidth(editorWidth, broadcast) {
|
|
740
|
-
this.metadata.editorWidth = editorWidth;
|
|
741
|
-
|
|
742
767
|
if (broadcast) {
|
|
743
|
-
this.channel.
|
|
768
|
+
this.channel.sendMetadata({
|
|
744
769
|
editorWidth: editorWidth
|
|
745
770
|
});
|
|
746
771
|
}
|
|
772
|
+
|
|
773
|
+
Object.assign(this.metadata, {
|
|
774
|
+
editorWidth: editorWidth
|
|
775
|
+
});
|
|
776
|
+
}
|
|
777
|
+
}, {
|
|
778
|
+
key: "setMetadata",
|
|
779
|
+
value: function setMetadata(metadata) {
|
|
780
|
+
this.channel.sendMetadata(metadata);
|
|
781
|
+
Object.assign(this.metadata, metadata);
|
|
747
782
|
}
|
|
748
783
|
/**
|
|
749
784
|
* Get latest state.
|
|
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.createSocketIOSocket = createSocketIOSocket;
|
|
9
8
|
exports.createSocketIOCollabProvider = createSocketIOCollabProvider;
|
|
9
|
+
exports.createSocketIOSocket = createSocketIOSocket;
|
|
10
10
|
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
12
|
|
package/dist/cjs/version.json
CHANGED
package/dist/es2019/channel.js
CHANGED
|
@@ -116,8 +116,11 @@ export class Channel extends Emitter {
|
|
|
116
116
|
this.socket.on('participant:telepointer', payload => {
|
|
117
117
|
this.emit('participant:telepointer', payload.data);
|
|
118
118
|
});
|
|
119
|
-
this.socket.on('
|
|
120
|
-
this.emit('
|
|
119
|
+
this.socket.on('presence:joined', data => {
|
|
120
|
+
this.emit('presence:joined', data);
|
|
121
|
+
});
|
|
122
|
+
this.socket.on('presence', data => {
|
|
123
|
+
this.emit('presence', data);
|
|
121
124
|
});
|
|
122
125
|
this.socket.on('participant:left', data => {
|
|
123
126
|
this.emit('participant:left', data);
|
|
@@ -135,11 +138,8 @@ export class Channel extends Emitter {
|
|
|
135
138
|
...data
|
|
136
139
|
});
|
|
137
140
|
});
|
|
138
|
-
this.socket.on('
|
|
139
|
-
this.emit('
|
|
140
|
-
});
|
|
141
|
-
this.socket.on('width:changed', payload => {
|
|
142
|
-
this.emit('width:changed', payload.data);
|
|
141
|
+
this.socket.on('metadata:changed', payload => {
|
|
142
|
+
this.emit('metadata:changed', payload);
|
|
143
143
|
});
|
|
144
144
|
this.socket.on('disconnect', async reason => {
|
|
145
145
|
this.connected = false;
|
|
@@ -237,6 +237,22 @@ export class Channel extends Emitter {
|
|
|
237
237
|
});
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
sendMetadata(metadata) {
|
|
241
|
+
if (!this.connected || !this.socket) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
this.socket.emit('metadata', metadata);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
sendPresenceJoined() {
|
|
249
|
+
if (!this.connected || !this.socket) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
this.socket.emit('presence:joined');
|
|
254
|
+
}
|
|
255
|
+
|
|
240
256
|
disconnect() {
|
|
241
257
|
this.unsubscribeAll();
|
|
242
258
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// See https://socket.io/docs/v3/client-socket-instance#disconnect for emitted reasons
|
|
2
|
+
export const socketIOReasons = {
|
|
3
|
+
IO_CLIENT_DISCONNECT: 'io client disconnect',
|
|
4
|
+
// The socket was manually disconnected using socket.disconnect()
|
|
5
|
+
IO_SERVER_DISCONNECT: 'io server disconnect',
|
|
6
|
+
// The server has forcefully disconnected the socket with socket.disconnect()
|
|
7
|
+
TRANSPORT_CLOSED: 'transport close',
|
|
8
|
+
// The server did not send a PING within the pingInterval + pingTimeout range
|
|
9
|
+
TRANSPORT_ERROR: 'transport error',
|
|
10
|
+
// The connection was closed (example: the user has lost connection, or the network was changed from WiFi to 4G)
|
|
11
|
+
PING_TIMEOUT: 'ping timeout' // The connection has encountered an error (example: the server was killed during a HTTP long-polling cycle)
|
|
12
|
+
|
|
13
|
+
};
|
|
14
|
+
export let DisconnectReason;
|
|
15
|
+
|
|
16
|
+
(function (DisconnectReason) {
|
|
17
|
+
DisconnectReason["CLIENT_DISCONNECT"] = "CLIENT_DISCONNECT";
|
|
18
|
+
DisconnectReason["SERVER_DISCONNECT"] = "SERVER_DISCONNECT";
|
|
19
|
+
DisconnectReason["SOCKET_CLOSED"] = "SOCKET_CLOSED";
|
|
20
|
+
DisconnectReason["SOCKET_ERROR"] = "SOCKET_ERROR";
|
|
21
|
+
DisconnectReason["SOCKET_TIMEOUT"] = "SOCKET_TIMEOUT";
|
|
22
|
+
DisconnectReason["UNKNOWN_DISCONNECT"] = "UNKNOWN_DISCONNECT";
|
|
23
|
+
})(DisconnectReason || (DisconnectReason = {}));
|