@atlaskit/collab-provider 7.1.1 → 7.1.5

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.
@@ -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); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
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] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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),
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/collab-provider",
3
- "version": "7.1.1",
3
+ "version": "7.1.5",
4
4
  "sideEffects": false
5
5
  }
@@ -21,6 +21,8 @@ export const CATCHUP_THROTTLE = 1 * 1000; // 1 second
21
21
 
22
22
  const OUT_OF_SYNC_PERIOD = 3 * 1000; // 3 seconds
23
23
 
24
+ const noop = () => {};
25
+
24
26
  export const MAX_STEP_REJECTED_ERROR = 15;
25
27
 
26
28
  const commitStep = ({
@@ -55,6 +57,38 @@ export class Provider extends Emitter {
55
57
 
56
58
  _defineProperty(this, "stepRejectCounter", 0);
57
59
 
60
+ _defineProperty(this, "isChannelInitialized", false);
61
+
62
+ _defineProperty(this, "initializeChannel", () => {
63
+ this.channel.on('connected', ({
64
+ sid,
65
+ initialized
66
+ }) => {
67
+ this.sessionId = sid;
68
+ this.emit('connected', {
69
+ sid
70
+ }); // If already initialized, `connected` means reconnected
71
+
72
+ if (initialized && this.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
73
+ Date.now() - this.disconnectedAt >= OUT_OF_SYNC_PERIOD) {
74
+ this.throttledCatchup();
75
+ }
76
+
77
+ this.disconnectedAt = undefined;
78
+ }).on('init', ({
79
+ doc,
80
+ version,
81
+ metadata
82
+ }) => {
83
+ // Initial document and version
84
+ this.updateDocumentWithMetadata({
85
+ doc,
86
+ version,
87
+ metadata
88
+ });
89
+ }).on('steps:added', this.onStepsAdded.bind(this)).on('participant:telepointer', this.onParticipantTelepointer.bind(this)).on('presence:joined', this.onPresenceJoined.bind(this)).on('presence', this.onPresence.bind(this)).on('participant:left', this.onParticipantLeft.bind(this)).on('participant:updated', this.onParticipantUpdated.bind(this)).on('metadata:changed', this.onMetadataChanged.bind(this)).on('disconnect', this.onDisconnected.bind(this)).on('error', this.onErrorHandled.bind(this)).connect();
90
+ });
91
+
58
92
  _defineProperty(this, "onStepsAdded", data => {
59
93
  logger(`Received steps`, {
60
94
  steps: data.steps,
@@ -216,6 +250,7 @@ export class Provider extends Emitter {
216
250
 
217
251
  _defineProperty(this, "onMetadataChanged", metadata => {
218
252
  if (metadata !== undefined && !isequal(this.metadata, metadata)) {
253
+ this.metadata = metadata;
219
254
  this.emit('metadata:changed', metadata);
220
255
  }
221
256
  });
@@ -388,50 +423,78 @@ export class Provider extends Emitter {
388
423
  }
389
424
  });
390
425
 
426
+ _defineProperty(this, "getFinalAcknowledgedState", async () => {
427
+ var _this$getUnconfirmedS, _this$metadata$title;
428
+
429
+ const maxAttemptsToSync = ACK_MAX_TRY;
430
+ let count = 0;
431
+ let unconfirmedSteps = (_this$getUnconfirmedS = this.getUnconfirmedSteps()) === null || _this$getUnconfirmedS === void 0 ? void 0 : _this$getUnconfirmedS.steps;
432
+
433
+ while (unconfirmedSteps && unconfirmedSteps.length) {
434
+ var _this$getUnconfirmedS2;
435
+
436
+ this.sendStepsFromCurrentState();
437
+ await sleep(500);
438
+ unconfirmedSteps = (_this$getUnconfirmedS2 = this.getUnconfirmedSteps()) === null || _this$getUnconfirmedS2 === void 0 ? void 0 : _this$getUnconfirmedS2.steps;
439
+
440
+ if (count++ >= maxAttemptsToSync) {
441
+ if (this.onSyncUpError) {
442
+ var _unconfirmedSteps;
443
+
444
+ const state = this.getState();
445
+ this.onSyncUpError({
446
+ lengthOfUnconfirmedSteps: (_unconfirmedSteps = unconfirmedSteps) === null || _unconfirmedSteps === void 0 ? void 0 : _unconfirmedSteps.length,
447
+ tries: count,
448
+ maxRetries: maxAttemptsToSync,
449
+ clientId: this.clientId,
450
+ version: getVersion(state)
451
+ });
452
+ }
453
+
454
+ throw new Error("Can't syncup with Collab Service");
455
+ }
456
+ }
457
+
458
+ const state = this.getState();
459
+ return {
460
+ content: state.doc.toJSON(),
461
+ title: (_this$metadata$title = this.metadata.title) === null || _this$metadata$title === void 0 ? void 0 : _this$metadata$title.toString(),
462
+ stepVersion: getVersion(state)
463
+ };
464
+ });
465
+
391
466
  this.config = config;
392
467
  this.channel = new Channel(config);
468
+ this.isChannelInitialized = false;
393
469
 
394
470
  if (config.analyticsClient) {
395
471
  this.analyticsClient = config.analyticsClient;
396
472
  }
397
473
  }
474
+
398
475
  /**
399
476
  * Called by collab plugin in editor when it's ready to
400
477
  * initialize a collab session.
401
478
  */
479
+ initialize(getState) {
480
+ return this.setup({
481
+ getState
482
+ });
483
+ }
402
484
 
485
+ setup({
486
+ getState,
487
+ onSyncUpError
488
+ }) {
489
+ this.getState = getState;
490
+ this.onSyncUpError = onSyncUpError || noop;
491
+ this.clientId = getState().plugins.find(p => p.key === 'collab$').spec.config.clientID;
492
+
493
+ if (!this.isChannelInitialized) {
494
+ this.initializeChannel();
495
+ this.isChannelInitialized = true;
496
+ }
403
497
 
404
- initialize(optionsOrGetState) {
405
- this.getState = typeof optionsOrGetState === 'function' ? optionsOrGetState : optionsOrGetState.getState;
406
- this.clientId = typeof optionsOrGetState === 'function' ? // Quick-hack to get clientID from native collab-plugin.
407
- this.getState().plugins.find(p => p.key === 'collab$').spec.config.clientID : optionsOrGetState.clientId;
408
- this.channel.on('connected', ({
409
- sid,
410
- initialized
411
- }) => {
412
- this.sessionId = sid;
413
- this.emit('connected', {
414
- sid
415
- }); // If already initialized, `connected` means reconnected
416
-
417
- if (initialized && this.disconnectedAt && // Offline longer than `OUT_OF_SYNC_PERIOD`
418
- Date.now() - this.disconnectedAt >= OUT_OF_SYNC_PERIOD) {
419
- this.throttledCatchup();
420
- }
421
-
422
- this.disconnectedAt = undefined;
423
- }).on('init', ({
424
- doc,
425
- version,
426
- metadata
427
- }) => {
428
- // Initial document and version
429
- this.updateDocumentWithMetadata({
430
- doc,
431
- version,
432
- metadata
433
- });
434
- }).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();
435
498
  return this;
436
499
  }
437
500
  /**
@@ -644,43 +707,10 @@ export class Provider extends Emitter {
644
707
  this.channel.sendMetadata(metadata);
645
708
  Object.assign(this.metadata, metadata);
646
709
  }
647
- /**
648
- * Get latest state.
649
- *
650
- * NOTE: Should this actually convert to ADF instead?
651
- */
652
-
653
-
654
- async getFinalAcknowledgedState() {
655
- var _this$getUnconfirmedS;
656
-
657
- const state = this.getState();
658
- let count = 0;
659
- let unconfirmedSteps = this.getUnconfirmedSteps() && ((_this$getUnconfirmedS = this.getUnconfirmedSteps()) === null || _this$getUnconfirmedS === void 0 ? void 0 : _this$getUnconfirmedS.steps);
660
-
661
- while (unconfirmedSteps && unconfirmedSteps.length) {
662
- var _this$getUnconfirmedS2;
663
-
664
- this.sendStepsFromCurrentState();
665
- await sleep(500);
666
- unconfirmedSteps = this.getUnconfirmedSteps() && ((_this$getUnconfirmedS2 = this.getUnconfirmedSteps()) === null || _this$getUnconfirmedS2 === void 0 ? void 0 : _this$getUnconfirmedS2.steps);
667
710
 
668
- if (count++ >= ACK_MAX_TRY) {
669
- throw new Error("Can't syncup with Collab Service");
670
- }
671
- }
672
-
673
- return {
674
- content: state.doc.toJSON(),
675
- title: this.metadata.title,
676
- stepVersion: getVersion(state)
677
- };
678
- }
679
711
  /**
680
712
  * Unsubscribe from all events emitted by this provider.
681
713
  */
682
-
683
-
684
714
  unsubscribeAll() {
685
715
  super.unsubscribeAll();
686
716
  this.channel.disconnect();
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/collab-provider",
3
- "version": "7.1.1",
3
+ "version": "7.1.5",
4
4
  "sideEffects": false
5
5
  }
@@ -1,8 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
3
+ 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; }
4
4
 
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
5
+ 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) { _defineProperty(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; }
6
6
 
7
7
  import { ATTRIBUTES_PACKAGE, CATCHUP_FAILURE, CATCHUP_SUCCESS, STEPS_ADDED, STEPS_REJECTED } from '../helpers/const';
8
8
  export var buildAnalyticsPayload = function buildAnalyticsPayload(subject, payload) {
@@ -8,9 +8,9 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
8
8
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
9
9
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
10
10
 
11
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
+ 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; }
12
12
 
13
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+ 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) { _defineProperty(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; }
14
14
 
15
15
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
16
16