@atlaskit/collab-provider 8.5.0 → 8.7.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.
Files changed (76) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/cjs/analytics/analytics-helper.js +22 -24
  3. package/dist/cjs/analytics/performance.js +4 -4
  4. package/dist/cjs/channel.js +218 -203
  5. package/dist/cjs/connectivity/network.js +4 -4
  6. package/dist/cjs/disconnected-reason-mapper.js +4 -4
  7. package/dist/cjs/document/catchup.js +81 -81
  8. package/dist/cjs/document/document-service.js +226 -285
  9. package/dist/cjs/document/step-queue-state.js +4 -0
  10. package/dist/cjs/errors/error-types.js +102 -23
  11. package/dist/cjs/helpers/const.js +12 -12
  12. package/dist/cjs/index.js +8 -1
  13. package/dist/cjs/metadata/metadata-service.js +77 -0
  14. package/dist/cjs/participants/participants-helper.js +19 -28
  15. package/dist/cjs/participants/participants-service.js +90 -60
  16. package/dist/cjs/participants/participants-state.js +1 -0
  17. package/dist/cjs/provider/commit-step.js +10 -2
  18. package/dist/cjs/provider/index.js +168 -101
  19. package/dist/cjs/types.js +12 -4
  20. package/dist/cjs/version-wrapper.js +1 -1
  21. package/dist/cjs/version.json +1 -1
  22. package/dist/es2019/analytics/analytics-helper.js +3 -3
  23. package/dist/es2019/analytics/performance.js +3 -3
  24. package/dist/es2019/channel.js +27 -6
  25. package/dist/es2019/connectivity/network.js +3 -3
  26. package/dist/es2019/disconnected-reason-mapper.js +3 -3
  27. package/dist/es2019/document/catchup.js +4 -2
  28. package/dist/es2019/document/document-service.js +45 -76
  29. package/dist/es2019/document/step-queue-state.js +4 -0
  30. package/dist/es2019/errors/error-types.js +104 -25
  31. package/dist/es2019/helpers/const.js +9 -9
  32. package/dist/es2019/index.js +2 -1
  33. package/dist/es2019/metadata/metadata-service.js +57 -0
  34. package/dist/es2019/participants/participants-helper.js +3 -8
  35. package/dist/es2019/participants/participants-service.js +46 -15
  36. package/dist/es2019/participants/participants-state.js +1 -0
  37. package/dist/es2019/provider/commit-step.js +8 -1
  38. package/dist/es2019/provider/index.js +111 -39
  39. package/dist/es2019/types.js +16 -3
  40. package/dist/es2019/version-wrapper.js +1 -1
  41. package/dist/es2019/version.json +1 -1
  42. package/dist/esm/analytics/analytics-helper.js +22 -24
  43. package/dist/esm/analytics/performance.js +3 -3
  44. package/dist/esm/channel.js +218 -203
  45. package/dist/esm/connectivity/network.js +3 -3
  46. package/dist/esm/disconnected-reason-mapper.js +3 -3
  47. package/dist/esm/document/catchup.js +81 -81
  48. package/dist/esm/document/document-service.js +226 -285
  49. package/dist/esm/document/step-queue-state.js +4 -0
  50. package/dist/esm/errors/error-types.js +104 -25
  51. package/dist/esm/helpers/const.js +9 -9
  52. package/dist/esm/index.js +2 -1
  53. package/dist/esm/metadata/metadata-service.js +69 -0
  54. package/dist/esm/participants/participants-helper.js +19 -28
  55. package/dist/esm/participants/participants-service.js +90 -60
  56. package/dist/esm/participants/participants-state.js +1 -0
  57. package/dist/esm/provider/commit-step.js +8 -1
  58. package/dist/esm/provider/index.js +167 -99
  59. package/dist/esm/types.js +16 -3
  60. package/dist/esm/version-wrapper.js +1 -1
  61. package/dist/esm/version.json +1 -1
  62. package/dist/types/channel.d.ts +2 -2
  63. package/dist/types/document/document-service.d.ts +5 -24
  64. package/dist/types/index.d.ts +2 -1
  65. package/dist/types/metadata/metadata-service.d.ts +25 -0
  66. package/dist/types/participants/participants-helper.d.ts +2 -3
  67. package/dist/types/participants/participants-service.d.ts +8 -8
  68. package/dist/types/provider/commit-step.d.ts +11 -0
  69. package/dist/types/provider/index.d.ts +15 -13
  70. package/dist/types/types.d.ts +24 -10
  71. package/package.json +12 -7
  72. package/report.api.md +26 -7
  73. package/channel/package.json +0 -15
  74. package/config/package.json +0 -15
  75. package/disconnected-reason-mapper/package.json +0 -15
  76. package/emitter/package.json +0 -15
@@ -8,12 +8,12 @@ exports.default = exports.NetworkStatus = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var NetworkStatus;
12
- exports.NetworkStatus = NetworkStatus;
13
- (function (NetworkStatus) {
11
+ var NetworkStatus = /*#__PURE__*/function (NetworkStatus) {
14
12
  NetworkStatus["ONLINE"] = "ONLINE";
15
13
  NetworkStatus["OFFLINE"] = "OFFLINE";
16
- })(NetworkStatus || (exports.NetworkStatus = NetworkStatus = {}));
14
+ return NetworkStatus;
15
+ }({});
16
+ exports.NetworkStatus = NetworkStatus;
17
17
  var Network = /*#__PURE__*/function () {
18
18
  function Network(props) {
19
19
  var _this = this;
@@ -17,16 +17,16 @@ var socketIOReasons = {
17
17
  PING_TIMEOUT: 'ping timeout' // The connection has encountered an error (example: the server was killed during a HTTP long-polling cycle)
18
18
  };
19
19
  exports.socketIOReasons = socketIOReasons;
20
- var DisconnectReason;
21
- exports.DisconnectReason = DisconnectReason;
22
- (function (DisconnectReason) {
20
+ var DisconnectReason = /*#__PURE__*/function (DisconnectReason) {
23
21
  DisconnectReason["CLIENT_DISCONNECT"] = "CLIENT_DISCONNECT";
24
22
  DisconnectReason["SERVER_DISCONNECT"] = "SERVER_DISCONNECT";
25
23
  DisconnectReason["SOCKET_CLOSED"] = "SOCKET_CLOSED";
26
24
  DisconnectReason["SOCKET_ERROR"] = "SOCKET_ERROR";
27
25
  DisconnectReason["SOCKET_TIMEOUT"] = "SOCKET_TIMEOUT";
28
26
  DisconnectReason["UNKNOWN_DISCONNECT"] = "UNKNOWN_DISCONNECT";
29
- })(DisconnectReason || (exports.DisconnectReason = DisconnectReason = {}));
27
+ return DisconnectReason;
28
+ }({});
29
+ exports.DisconnectReason = DisconnectReason;
30
30
  var disconnectedReasonMapper = function disconnectedReasonMapper(reason) {
31
31
  switch (reason) {
32
32
  case socketIOReasons.IO_CLIENT_DISCONNECT:
@@ -12,7 +12,7 @@ var _utils = require("../helpers/utils");
12
12
  var _prosemirrorTransform = require("prosemirror-transform");
13
13
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
14
14
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
16
  var logger = (0, _utils.createLogger)('Catchup', 'red');
17
17
 
18
18
  /**
@@ -44,91 +44,91 @@ var catchup = /*#__PURE__*/function () {
44
44
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(opt) {
45
45
  var _yield$opt$fetchCatch, doc, serverStepMaps, serverVersion, metadata, currentPmVersion, unconfirmedSteps, _unconfirmedSteps, stepMaps, mapping, newUnconfirmedSteps;
46
46
  return _regenerator.default.wrap(function _callee$(_context) {
47
- while (1) {
48
- switch (_context.prev = _context.next) {
49
- case 0:
50
- _context.next = 2;
51
- return opt.fetchCatchup(opt.getCurrentPmVersion());
52
- case 2:
53
- _yield$opt$fetchCatch = _context.sent;
54
- doc = _yield$opt$fetchCatch.doc;
55
- serverStepMaps = _yield$opt$fetchCatch.stepMaps;
56
- serverVersion = _yield$opt$fetchCatch.version;
57
- metadata = _yield$opt$fetchCatch.metadata;
58
- if (doc) {
59
- currentPmVersion = opt.getCurrentPmVersion();
60
- if (typeof serverVersion === 'undefined') {
61
- logger("Could not determine server version");
62
- } else if (serverVersion <= currentPmVersion) {
63
- // there are no step maps in this case after page recovery
64
- unconfirmedSteps = opt.getUnconfirmedSteps(); // replace the entire document
65
- logger("Replacing document: ".concat(doc));
66
- logger("getting metadata: ".concat(metadata));
67
- // Replace local document and version number
68
- opt.updateDocumentWithMetadata({
69
- doc: JSON.parse(doc),
70
- version: serverVersion,
71
- metadata: metadata,
72
- reserveCursor: true
73
- });
74
- if (unconfirmedSteps !== null && unconfirmedSteps !== void 0 && unconfirmedSteps.length) {
75
- opt.applyLocalSteps(unconfirmedSteps);
76
- }
77
- } else {
78
- // Please, do not use those steps inside of async
79
- // method. That will lead to outdated steps
80
- _unconfirmedSteps = opt.getUnconfirmedSteps();
81
- logger("Too far behind[current: v".concat(currentPmVersion, ", server: v").concat(serverVersion, ". ").concat(serverStepMaps.length, " steps need to catchup]"));
82
- /**
83
- * Remove steps from queue where the version is older than
84
- * the version we received from service. Keep steps that might be
85
- * newer.
86
- */
87
- opt.filterQueue(function (data) {
88
- return data.version > serverVersion;
89
- });
47
+ while (1) switch (_context.prev = _context.next) {
48
+ case 0:
49
+ _context.next = 2;
50
+ return opt.fetchCatchup(opt.getCurrentPmVersion());
51
+ case 2:
52
+ _yield$opt$fetchCatch = _context.sent;
53
+ doc = _yield$opt$fetchCatch.doc;
54
+ serverStepMaps = _yield$opt$fetchCatch.stepMaps;
55
+ serverVersion = _yield$opt$fetchCatch.version;
56
+ metadata = _yield$opt$fetchCatch.metadata;
57
+ if (doc) {
58
+ currentPmVersion = opt.getCurrentPmVersion();
59
+ if (typeof serverVersion === 'undefined') {
60
+ logger("Could not determine server version");
61
+ } else if (serverVersion <= currentPmVersion) {
62
+ // there are no step maps in this case after page recovery
63
+ unconfirmedSteps = opt.getUnconfirmedSteps(); // replace the entire document
64
+ logger("Replacing document: ".concat(doc));
65
+ logger("getting metadata: ".concat(metadata));
66
+ // Replace local document and version number
67
+ opt.updateDocument({
68
+ doc: JSON.parse(doc),
69
+ version: serverVersion,
70
+ metadata: metadata,
71
+ reserveCursor: true
72
+ });
73
+ opt.updateMetadata(metadata);
74
+ if (unconfirmedSteps !== null && unconfirmedSteps !== void 0 && unconfirmedSteps.length) {
75
+ opt.applyLocalSteps(unconfirmedSteps);
76
+ }
77
+ } else {
78
+ // Please, do not use those steps inside of async
79
+ // method. That will lead to outdated steps
80
+ _unconfirmedSteps = opt.getUnconfirmedSteps();
81
+ logger("Too far behind[current: v".concat(currentPmVersion, ", server: v").concat(serverVersion, ". ").concat(serverStepMaps.length, " steps need to catchup]"));
82
+ /**
83
+ * Remove steps from queue where the version is older than
84
+ * the version we received from service. Keep steps that might be
85
+ * newer.
86
+ */
87
+ opt.filterQueue(function (data) {
88
+ return data.version > serverVersion;
89
+ });
90
90
 
91
- // We are too far behind - replace the entire document
92
- logger("Replacing document: ".concat(doc));
93
- logger("getting metadata: ".concat(metadata));
91
+ // We are too far behind - replace the entire document
92
+ logger("Replacing document: ".concat(doc));
93
+ logger("getting metadata: ".concat(metadata));
94
94
 
95
- // Replace local document and version number
96
- opt.updateDocumentWithMetadata({
97
- doc: JSON.parse(doc),
98
- version: serverVersion,
99
- metadata: metadata,
100
- reserveCursor: true
101
- });
95
+ // Replace local document and version number
96
+ opt.updateDocument({
97
+ doc: JSON.parse(doc),
98
+ version: serverVersion,
99
+ metadata: metadata,
100
+ reserveCursor: true
101
+ });
102
+ opt.updateMetadata(metadata);
102
103
 
103
- // After replacing the whole document in the editor, we need to reapply the unconfirmed
104
- // steps back into the editor, so we don't lose any data. But before that, we need to rebase
105
- // those steps since their position could be changed after replacing.
106
- // https://prosemirror.net/docs/guide/#transform.rebasing
107
- if (_unconfirmedSteps !== null && _unconfirmedSteps !== void 0 && _unconfirmedSteps.length) {
108
- // Create StepMap from StepMap JSON
109
- // eslint-disable-next-line no-unused-vars
110
- stepMaps = serverStepMaps.map(function (_ref2) {
111
- var ranges = _ref2.ranges,
112
- inverted = _ref2.inverted;
113
- // Due to @types/prosemirror-transform mismatch with the actual
114
- // constructor, hack to set the `inverted`.
115
- var stepMap = new _prosemirrorTransform.StepMap(ranges);
116
- stepMap.inverted = inverted;
117
- return stepMap;
118
- }); // create Mapping used for Step.map
119
- mapping = new _prosemirrorTransform.Mapping(stepMaps);
120
- logger("".concat(_unconfirmedSteps.length, " unconfirmed steps before rebased: ").concat(JSON.stringify(_unconfirmedSteps)));
121
- newUnconfirmedSteps = rebaseSteps(_unconfirmedSteps, mapping);
122
- logger("Re-aply ".concat(newUnconfirmedSteps.length, " mapped unconfirmed steps: ").concat(JSON.stringify(newUnconfirmedSteps)));
123
- // Re-apply local steps
124
- opt.applyLocalSteps(newUnconfirmedSteps);
125
- }
104
+ // After replacing the whole document in the editor, we need to reapply the unconfirmed
105
+ // steps back into the editor, so we don't lose any data. But before that, we need to rebase
106
+ // those steps since their position could be changed after replacing.
107
+ // https://prosemirror.net/docs/guide/#transform.rebasing
108
+ if (_unconfirmedSteps !== null && _unconfirmedSteps !== void 0 && _unconfirmedSteps.length) {
109
+ // Create StepMap from StepMap JSON
110
+ // eslint-disable-next-line no-unused-vars
111
+ stepMaps = serverStepMaps.map(function (_ref2) {
112
+ var ranges = _ref2.ranges,
113
+ inverted = _ref2.inverted;
114
+ // Due to @types/prosemirror-transform mismatch with the actual
115
+ // constructor, hack to set the `inverted`.
116
+ var stepMap = new _prosemirrorTransform.StepMap(ranges);
117
+ stepMap.inverted = inverted;
118
+ return stepMap;
119
+ }); // create Mapping used for Step.map
120
+ mapping = new _prosemirrorTransform.Mapping(stepMaps);
121
+ logger("".concat(_unconfirmedSteps.length, " unconfirmed steps before rebased: ").concat(JSON.stringify(_unconfirmedSteps)));
122
+ newUnconfirmedSteps = rebaseSteps(_unconfirmedSteps, mapping);
123
+ logger("Re-aply ".concat(newUnconfirmedSteps.length, " mapped unconfirmed steps: ").concat(JSON.stringify(newUnconfirmedSteps)));
124
+ // Re-apply local steps
125
+ opt.applyLocalSteps(newUnconfirmedSteps);
126
126
  }
127
127
  }
128
- case 8:
129
- case "end":
130
- return _context.stop();
131
- }
128
+ }
129
+ case 8:
130
+ case "end":
131
+ return _context.stop();
132
132
  }
133
133
  }, _callee);
134
134
  }));