@atlaskit/collab-provider 7.1.0 → 7.1.4
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 +34 -0
- package/dist/cjs/analytics/index.js +3 -3
- package/dist/cjs/analytics/performance.js +1 -1
- package/dist/cjs/channel.js +16 -4
- package/dist/cjs/disconnected-reason-mapper.js +1 -1
- 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 +104 -86
- package/dist/cjs/socket-io-provider.js +3 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/channel.js +13 -2
- package/dist/es2019/helpers/utils.js +9 -14
- package/dist/es2019/provider/index.js +53 -35
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/index.js +2 -2
- package/dist/esm/channel.js +16 -4
- package/dist/esm/helpers/utils.js +8 -13
- package/dist/esm/provider/index.js +106 -86
- package/dist/esm/socket-io-provider.js +2 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/channel.d.ts +7 -5
- package/dist/types/helpers/utils.d.ts +2 -2
- package/dist/types/provider/index.d.ts +4 -1
- package/package.json +11 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
1
|
# @atlaskit/collab-provider
|
|
2
2
|
|
|
3
|
+
## 7.1.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`19d72473dfb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/19d72473dfb) - ED-13912 refactor editor collab-provider and make sure that initializeChannel is only called once
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
10
|
+
## 7.1.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`c55c736ecea`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c55c736ecea) - Patch VULN AFP-3486 AFP-3487 AFP-3488 AFP-3489
|
|
15
|
+
|
|
16
|
+
## 7.1.2
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
|
|
22
|
+
## 7.1.1
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- [`c6feed82071`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c6feed82071) - ED-11632: Bump prosemirror packages;
|
|
27
|
+
|
|
28
|
+
- prosmirror-commands 1.1.4 -> 1.1.11,
|
|
29
|
+
- prosemirror-model 1.11.0 -> 1.14.3,
|
|
30
|
+
- prosemirror-state 1.3.3 -> 1.3.4,
|
|
31
|
+
- prosemirror-transform 1.2.8 -> 1.3.2,
|
|
32
|
+
- prosemirror-view 1.15.4 + 1.18.8 -> 1.20.2.
|
|
33
|
+
|
|
34
|
+
- [`b670f0469c4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b670f0469c4) - COLLAB-990: fixing duplciated avatar
|
|
35
|
+
- Updated dependencies
|
|
36
|
+
|
|
3
37
|
## 7.1.0
|
|
4
38
|
|
|
5
39
|
### Minor Changes
|
|
@@ -5,15 +5,15 @@ 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
|
|
|
12
12
|
var _const = require("../helpers/const");
|
|
13
13
|
|
|
14
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
15
|
|
|
16
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
17
|
|
|
18
18
|
var buildAnalyticsPayload = function buildAnalyticsPayload(subject, payload) {
|
|
19
19
|
return {
|
|
@@ -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
|
@@ -37,9 +37,9 @@ var _performance = require("./analytics/performance");
|
|
|
37
37
|
|
|
38
38
|
var _analytics = require("./analytics");
|
|
39
39
|
|
|
40
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
40
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
41
41
|
|
|
42
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
42
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
43
43
|
|
|
44
44
|
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); }; }
|
|
45
45
|
|
|
@@ -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);
|
|
@@ -364,6 +367,15 @@ var Channel = /*#__PURE__*/function (_Emitter) {
|
|
|
364
367
|
|
|
365
368
|
this.socket.emit('metadata', metadata);
|
|
366
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
|
+
}
|
|
367
379
|
}, {
|
|
368
380
|
key: "disconnect",
|
|
369
381
|
value: function disconnect() {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.socketIOReasons = exports.DisconnectReason = void 0;
|
|
7
7
|
// See https://socket.io/docs/v3/client-socket-instance#disconnect for emitted reasons
|
|
8
8
|
var socketIOReasons = {
|
|
9
9
|
IO_CLIENT_DISCONNECT: 'io client disconnect',
|
|
@@ -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
|
|
|
@@ -55,13 +55,15 @@ var _errorCodeMapper = require("../error-code-mapper");
|
|
|
55
55
|
|
|
56
56
|
var _disconnectedReasonMapper = require("../disconnected-reason-mapper");
|
|
57
57
|
|
|
58
|
+
var _excluded = ["type"];
|
|
59
|
+
|
|
58
60
|
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); }; }
|
|
59
61
|
|
|
60
62
|
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; } }
|
|
61
63
|
|
|
62
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
64
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
63
65
|
|
|
64
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
66
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
65
67
|
|
|
66
68
|
var logger = (0, _utils.createLogger)('Provider', 'black');
|
|
67
69
|
var PARTICIPANT_UPDATE_INTERVAL = 300 * 1000; // 300 seconds
|
|
@@ -115,6 +117,37 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
115
117
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "participants", new Map());
|
|
116
118
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "metadata", {});
|
|
117
119
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "stepRejectCounter", 0);
|
|
120
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isChannelInitialized", false);
|
|
121
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "initializeChannel", function () {
|
|
122
|
+
_this.channel.on('connected', function (_ref2) {
|
|
123
|
+
var sid = _ref2.sid,
|
|
124
|
+
initialized = _ref2.initialized;
|
|
125
|
+
_this.sessionId = sid;
|
|
126
|
+
|
|
127
|
+
_this.emit('connected', {
|
|
128
|
+
sid: sid
|
|
129
|
+
}); // If already initialized, `connected` means reconnected
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
if (initialized && _this.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
|
|
133
|
+
Date.now() - _this.disconnectedAt >= OUT_OF_SYNC_PERIOD) {
|
|
134
|
+
_this.throttledCatchup();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
_this.disconnectedAt = undefined;
|
|
138
|
+
}).on('init', function (_ref3) {
|
|
139
|
+
var doc = _ref3.doc,
|
|
140
|
+
version = _ref3.version,
|
|
141
|
+
metadata = _ref3.metadata;
|
|
142
|
+
|
|
143
|
+
// Initial document and version
|
|
144
|
+
_this.updateDocumentWithMetadata({
|
|
145
|
+
doc: doc,
|
|
146
|
+
version: version,
|
|
147
|
+
metadata: metadata
|
|
148
|
+
});
|
|
149
|
+
}).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();
|
|
150
|
+
});
|
|
118
151
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onStepsAdded", function (data) {
|
|
119
152
|
logger("Received steps", {
|
|
120
153
|
steps: data.steps,
|
|
@@ -142,8 +175,8 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
142
175
|
_this.throttledCatchup();
|
|
143
176
|
}
|
|
144
177
|
|
|
145
|
-
_this.updateParticipants([], data.steps.map(function (
|
|
146
|
-
var userId =
|
|
178
|
+
_this.updateParticipants([], data.steps.map(function (_ref4) {
|
|
179
|
+
var userId = _ref4.userId;
|
|
147
180
|
return userId;
|
|
148
181
|
}));
|
|
149
182
|
});
|
|
@@ -156,11 +189,11 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
156
189
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fitlerQueue", function (condition) {
|
|
157
190
|
_this.queue = _this.queue.filter(condition);
|
|
158
191
|
});
|
|
159
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateDocumentWithMetadata", function (
|
|
160
|
-
var doc =
|
|
161
|
-
version =
|
|
162
|
-
metadata =
|
|
163
|
-
reserveCursor =
|
|
192
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateDocumentWithMetadata", function (_ref5) {
|
|
193
|
+
var doc = _ref5.doc,
|
|
194
|
+
version = _ref5.version,
|
|
195
|
+
metadata = _ref5.metadata,
|
|
196
|
+
reserveCursor = _ref5.reserveCursor;
|
|
164
197
|
|
|
165
198
|
_this.emit('init', _objectSpread({
|
|
166
199
|
doc: doc,
|
|
@@ -282,19 +315,28 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
282
315
|
return _this.sendPresence();
|
|
283
316
|
}, SEND_PRESENCE_INTERVAL);
|
|
284
317
|
});
|
|
285
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
286
|
-
var sessionId =
|
|
318
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPresenceJoined", function (_ref7) {
|
|
319
|
+
var sessionId = _ref7.sessionId;
|
|
287
320
|
logger('Participant joined with session: ', sessionId); // This expose existing users to the newly joined user
|
|
288
321
|
|
|
289
322
|
_this.sendPresence();
|
|
290
323
|
});
|
|
324
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPresence", function (_ref8) {
|
|
325
|
+
var userId = _ref8.userId;
|
|
326
|
+
logger('onPresence userId: ', userId);
|
|
327
|
+
_this.userId = userId;
|
|
328
|
+
|
|
329
|
+
_this.sendPresence();
|
|
330
|
+
|
|
331
|
+
_this.channel.sendPresenceJoined();
|
|
332
|
+
});
|
|
291
333
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMetadataChanged", function (metadata) {
|
|
292
334
|
if (metadata !== undefined && !(0, _isEqual.default)(_this.metadata, metadata)) {
|
|
293
335
|
_this.emit('metadata:changed', metadata);
|
|
294
336
|
}
|
|
295
337
|
});
|
|
296
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantLeft", function (
|
|
297
|
-
var sessionId =
|
|
338
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantLeft", function (_ref9) {
|
|
339
|
+
var sessionId = _ref9.sessionId;
|
|
298
340
|
logger("Participant left");
|
|
299
341
|
|
|
300
342
|
_this.participants.delete(sessionId);
|
|
@@ -305,11 +347,11 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
305
347
|
}]
|
|
306
348
|
});
|
|
307
349
|
});
|
|
308
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantUpdated", function (
|
|
309
|
-
var sessionId =
|
|
310
|
-
timestamp =
|
|
311
|
-
userId =
|
|
312
|
-
clientId =
|
|
350
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantUpdated", function (_ref10) {
|
|
351
|
+
var sessionId = _ref10.sessionId,
|
|
352
|
+
timestamp = _ref10.timestamp,
|
|
353
|
+
userId = _ref10.userId,
|
|
354
|
+
clientId = _ref10.clientId;
|
|
313
355
|
|
|
314
356
|
_this.updateParticipant({
|
|
315
357
|
sessionId: sessionId,
|
|
@@ -318,12 +360,12 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
318
360
|
clientId: clientId
|
|
319
361
|
});
|
|
320
362
|
});
|
|
321
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantTelepointer", function (
|
|
322
|
-
var sessionId =
|
|
323
|
-
timestamp =
|
|
324
|
-
selection =
|
|
325
|
-
userId =
|
|
326
|
-
clientId =
|
|
363
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onParticipantTelepointer", function (_ref11) {
|
|
364
|
+
var sessionId = _ref11.sessionId,
|
|
365
|
+
timestamp = _ref11.timestamp,
|
|
366
|
+
selection = _ref11.selection,
|
|
367
|
+
userId = _ref11.userId,
|
|
368
|
+
clientId = _ref11.clientId;
|
|
327
369
|
|
|
328
370
|
if (sessionId === _this.sessionId) {
|
|
329
371
|
return;
|
|
@@ -351,19 +393,28 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
351
393
|
});
|
|
352
394
|
});
|
|
353
395
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateParticipant", /*#__PURE__*/function () {
|
|
354
|
-
var
|
|
396
|
+
var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref12) {
|
|
355
397
|
var sessionId, timestamp, userId, clientId, getUser, _yield, _yield$name, name, _yield$email, email, _yield$avatar, avatar, isNewParticipant;
|
|
356
398
|
|
|
357
399
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
358
400
|
while (1) {
|
|
359
401
|
switch (_context2.prev = _context2.next) {
|
|
360
402
|
case 0:
|
|
361
|
-
sessionId =
|
|
403
|
+
sessionId = _ref12.sessionId, timestamp = _ref12.timestamp, userId = _ref12.userId, clientId = _ref12.clientId;
|
|
404
|
+
|
|
405
|
+
if (userId) {
|
|
406
|
+
_context2.next = 3;
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return _context2.abrupt("return");
|
|
411
|
+
|
|
412
|
+
case 3:
|
|
362
413
|
getUser = _this.config.getUser;
|
|
363
|
-
_context2.next =
|
|
414
|
+
_context2.next = 6;
|
|
364
415
|
return getUser ? getUser(userId) : (0, _utils.getParticipant)(userId);
|
|
365
416
|
|
|
366
|
-
case
|
|
417
|
+
case 6:
|
|
367
418
|
_yield = _context2.sent;
|
|
368
419
|
_yield$name = _yield.name;
|
|
369
420
|
name = _yield$name === void 0 ? '' : _yield$name;
|
|
@@ -393,7 +444,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
393
444
|
|
|
394
445
|
_this.updateParticipants(isNewParticipant ? [_this.participants.get(sessionId)] : []);
|
|
395
446
|
|
|
396
|
-
case
|
|
447
|
+
case 17:
|
|
397
448
|
case "end":
|
|
398
449
|
return _context2.stop();
|
|
399
450
|
}
|
|
@@ -402,7 +453,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
402
453
|
}));
|
|
403
454
|
|
|
404
455
|
return function (_x) {
|
|
405
|
-
return
|
|
456
|
+
return _ref13.apply(this, arguments);
|
|
406
457
|
};
|
|
407
458
|
}());
|
|
408
459
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateParticipants", function () {
|
|
@@ -462,8 +513,8 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
462
513
|
return _disconnectedReasonMapper.DisconnectReason.UNKNOWN_DISCONNECT;
|
|
463
514
|
}
|
|
464
515
|
});
|
|
465
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onDisconnected", function (
|
|
466
|
-
var reason =
|
|
516
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onDisconnected", function (_ref14) {
|
|
517
|
+
var reason = _ref14.reason;
|
|
467
518
|
_this.disconnectedAt = Date.now();
|
|
468
519
|
var left = Array.from(_this.participants.values());
|
|
469
520
|
|
|
@@ -482,6 +533,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
482
533
|
});
|
|
483
534
|
_this.config = config;
|
|
484
535
|
_this.channel = new _channel.Channel(config);
|
|
536
|
+
_this.isChannelInitialized = false;
|
|
485
537
|
|
|
486
538
|
if (config.analyticsClient) {
|
|
487
539
|
_this.analyticsClient = config.analyticsClient;
|
|
@@ -489,56 +541,22 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
489
541
|
|
|
490
542
|
return _this;
|
|
491
543
|
}
|
|
492
|
-
/**
|
|
493
|
-
* Called by collab plugin in editor when it's ready to
|
|
494
|
-
* initialize a collab session.
|
|
495
|
-
*/
|
|
496
|
-
|
|
497
544
|
|
|
498
545
|
(0, _createClass2.default)(Provider, [{
|
|
499
546
|
key: "initialize",
|
|
500
547
|
value: function initialize(optionsOrGetState) {
|
|
501
|
-
|
|
502
|
-
|
|
548
|
+
// move this
|
|
503
549
|
this.getState = typeof optionsOrGetState === 'function' ? optionsOrGetState : optionsOrGetState.getState;
|
|
504
550
|
this.clientId = typeof optionsOrGetState === 'function' ? // Quick-hack to get clientID from native collab-plugin.
|
|
505
551
|
this.getState().plugins.find(function (p) {
|
|
506
552
|
return p.key === 'collab$';
|
|
507
553
|
}).spec.config.clientID : optionsOrGetState.clientId;
|
|
508
|
-
this.channel.on('connected', function (_ref12) {
|
|
509
|
-
var sid = _ref12.sid,
|
|
510
|
-
initialized = _ref12.initialized;
|
|
511
|
-
_this2.sessionId = sid;
|
|
512
|
-
|
|
513
|
-
_this2.emit('connected', {
|
|
514
|
-
sid: sid
|
|
515
|
-
});
|
|
516
|
-
|
|
517
|
-
_this2.sendPresence(); // If already initialized, `connected` means reconnected
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
if (initialized && _this2.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
|
|
521
|
-
Date.now() - _this2.disconnectedAt >= OUT_OF_SYNC_PERIOD) {
|
|
522
|
-
_this2.throttledCatchup();
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
_this2.disconnectedAt = undefined;
|
|
526
|
-
}).on('init', function (_ref13) {
|
|
527
|
-
var doc = _ref13.doc,
|
|
528
|
-
version = _ref13.version,
|
|
529
|
-
userId = _ref13.userId,
|
|
530
|
-
metadata = _ref13.metadata;
|
|
531
|
-
_this2.userId = userId;
|
|
532
|
-
|
|
533
|
-
_this2.sendPresence(); // Initial document and version
|
|
534
554
|
|
|
555
|
+
if (!this.isChannelInitialized) {
|
|
556
|
+
this.initializeChannel();
|
|
557
|
+
this.isChannelInitialized = true;
|
|
558
|
+
}
|
|
535
559
|
|
|
536
|
-
_this2.updateDocumentWithMetadata({
|
|
537
|
-
doc: doc,
|
|
538
|
-
version: version,
|
|
539
|
-
metadata: metadata
|
|
540
|
-
});
|
|
541
|
-
}).on('steps:added', this.onStepsAdded).on('participant:telepointer', this.onParticipantTelepointer).on('participant:joined', this.onParticipantJoined).on('participant:left', this.onParticipantLeft).on('participant:updated', this.onParticipantUpdated).on('metadata:changed', this.onMetadataChanged).on('disconnect', this.onDisconnected).on('error', this.onErrorHandled).connect();
|
|
542
560
|
return this;
|
|
543
561
|
}
|
|
544
562
|
/**
|
|
@@ -630,15 +648,15 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
630
648
|
}, {
|
|
631
649
|
key: "processSteps",
|
|
632
650
|
value: function processSteps(data) {
|
|
633
|
-
var
|
|
651
|
+
var _this2 = this;
|
|
634
652
|
|
|
635
653
|
var version = data.version,
|
|
636
654
|
steps = data.steps;
|
|
637
655
|
logger("Processing data. Version \"".concat(version, "\"."));
|
|
638
656
|
|
|
639
657
|
if (steps && steps.length) {
|
|
640
|
-
var clientIds = steps.map(function (
|
|
641
|
-
var clientId =
|
|
658
|
+
var clientIds = steps.map(function (_ref15) {
|
|
659
|
+
var clientId = _ref15.clientId;
|
|
642
660
|
return clientId;
|
|
643
661
|
});
|
|
644
662
|
this.emit('data', {
|
|
@@ -653,7 +671,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
653
671
|
|
|
654
672
|
if (clientIds.indexOf(this.clientId) === -1) {
|
|
655
673
|
setTimeout(function () {
|
|
656
|
-
return
|
|
674
|
+
return _this2.sendStepsFromCurrentState();
|
|
657
675
|
}, 100);
|
|
658
676
|
}
|
|
659
677
|
}
|
|
@@ -670,7 +688,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
670
688
|
}
|
|
671
689
|
|
|
672
690
|
var type = data.type,
|
|
673
|
-
rest = (0, _objectWithoutProperties2.default)(data,
|
|
691
|
+
rest = (0, _objectWithoutProperties2.default)(data, _excluded);
|
|
674
692
|
var userId = this.userId,
|
|
675
693
|
sessionId = this.sessionId,
|
|
676
694
|
clientId = this.clientId;
|
|
@@ -690,30 +708,30 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
690
708
|
}, {
|
|
691
709
|
key: "emitTelepointersFromSteps",
|
|
692
710
|
value: function emitTelepointersFromSteps(steps) {
|
|
693
|
-
var
|
|
711
|
+
var _this3 = this;
|
|
694
712
|
|
|
695
713
|
steps.forEach(function (step) {
|
|
696
|
-
var _Array$from$filter = Array.from(
|
|
714
|
+
var _Array$from$filter = Array.from(_this3.participants.values()).filter(function (p) {
|
|
697
715
|
return p.clientId === step.clientId;
|
|
698
716
|
}),
|
|
699
717
|
_Array$from$filter2 = (0, _slicedToArray2.default)(_Array$from$filter, 1),
|
|
700
718
|
participant = _Array$from$filter2[0];
|
|
701
719
|
|
|
702
720
|
if (participant) {
|
|
703
|
-
var
|
|
704
|
-
stepType =
|
|
705
|
-
to =
|
|
706
|
-
from =
|
|
707
|
-
|
|
708
|
-
slice =
|
|
721
|
+
var _ref16 = step,
|
|
722
|
+
stepType = _ref16.stepType,
|
|
723
|
+
to = _ref16.to,
|
|
724
|
+
from = _ref16.from,
|
|
725
|
+
_ref16$slice = _ref16.slice,
|
|
726
|
+
slice = _ref16$slice === void 0 ? {
|
|
709
727
|
content: []
|
|
710
|
-
} :
|
|
728
|
+
} : _ref16$slice;
|
|
711
729
|
|
|
712
730
|
var _slice$content = (0, _slicedToArray2.default)(slice.content, 1),
|
|
713
731
|
node = _slice$content[0];
|
|
714
732
|
|
|
715
733
|
if (stepType === 'replace' && to === from && slice.content.length === 1 && node.type === 'text' && node.text.length === 1) {
|
|
716
|
-
|
|
734
|
+
_this3.emit('telepointer', {
|
|
717
735
|
sessionId: participant.sessionId,
|
|
718
736
|
selection: {
|
|
719
737
|
type: 'textSelection',
|
|
@@ -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
|
|
|
@@ -16,9 +16,9 @@ var _socket = require("socket.io-client");
|
|
|
16
16
|
|
|
17
17
|
var _urlParse2 = _interopRequireDefault(require("url-parse"));
|
|
18
18
|
|
|
19
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
19
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
20
20
|
|
|
21
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
21
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
22
22
|
|
|
23
23
|
function createSocketIOSocket(url, auth) {
|
|
24
24
|
var _urlParse = (0, _urlParse2.default)(url),
|
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);
|
|
@@ -242,6 +245,14 @@ export class Channel extends Emitter {
|
|
|
242
245
|
this.socket.emit('metadata', metadata);
|
|
243
246
|
}
|
|
244
247
|
|
|
248
|
+
sendPresenceJoined() {
|
|
249
|
+
if (!this.connected || !this.socket) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
this.socket.emit('presence:joined');
|
|
254
|
+
}
|
|
255
|
+
|
|
245
256
|
disconnect() {
|
|
246
257
|
this.unsubscribeAll();
|
|
247
258
|
|
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
export const createLogger = (prefix, color = 'blue') => (msg, data = null) => {
|
|
2
2
|
if (window.COLLAB_PROVIDER_LOGGER) {
|
|
3
3
|
// eslint-disable-next-line no-console
|
|
4
|
-
console.log(`%cCollab-${prefix}: ${msg}`, `color: ${color}; font-weight: bold
|
|
5
|
-
|
|
6
|
-
if (data) {
|
|
7
|
-
// eslint-disable-next-line no-console
|
|
8
|
-
console.log(data);
|
|
9
|
-
}
|
|
4
|
+
console.log(`%cCollab-${prefix}: ${msg}`, `color: ${color}; font-weight: bold`, data);
|
|
10
5
|
}
|
|
11
6
|
};
|
|
7
|
+
const logger = createLogger('Helper:util', 'black');
|
|
12
8
|
export const getParticipant = userId => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
userId,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
});
|
|
9
|
+
logger('getParticipant: ', userId);
|
|
10
|
+
return {
|
|
11
|
+
userId: userId,
|
|
12
|
+
name: userId,
|
|
13
|
+
avatar: '',
|
|
14
|
+
email: `${userId.replace(/\s/g, '').toLocaleLowerCase()}@atlassian.com`
|
|
15
|
+
};
|
|
21
16
|
};
|
|
22
17
|
export function sleep(ms) {
|
|
23
18
|
return new Promise(resolve => {
|