@atlaskit/collab-provider 7.4.2 → 7.5.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 (42) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/config/package.json +8 -0
  3. package/dist/cjs/analytics/index.js +17 -44
  4. package/dist/cjs/analytics/performance.js +32 -12
  5. package/dist/cjs/channel.js +76 -46
  6. package/dist/cjs/config.js +12 -0
  7. package/dist/cjs/error-code-mapper.js +39 -31
  8. package/dist/cjs/helpers/const.js +22 -9
  9. package/dist/cjs/helpers/utils.js +18 -2
  10. package/dist/cjs/provider/index.js +84 -23
  11. package/dist/cjs/socket-io-provider.js +15 -3
  12. package/dist/cjs/version.json +1 -1
  13. package/dist/es2019/analytics/index.js +17 -31
  14. package/dist/es2019/analytics/performance.js +31 -12
  15. package/dist/es2019/channel.js +53 -25
  16. package/dist/es2019/config.js +5 -0
  17. package/dist/es2019/error-code-mapper.js +34 -31
  18. package/dist/es2019/helpers/const.js +18 -4
  19. package/dist/es2019/helpers/utils.js +11 -1
  20. package/dist/es2019/provider/index.js +67 -10
  21. package/dist/es2019/socket-io-provider.js +13 -3
  22. package/dist/es2019/version.json +1 -1
  23. package/dist/esm/analytics/index.js +16 -31
  24. package/dist/esm/analytics/performance.js +31 -12
  25. package/dist/esm/channel.js +81 -51
  26. package/dist/esm/config.js +5 -0
  27. package/dist/esm/error-code-mapper.js +35 -31
  28. package/dist/esm/helpers/const.js +18 -4
  29. package/dist/esm/helpers/utils.js +11 -1
  30. package/dist/esm/provider/catchup.js +1 -1
  31. package/dist/esm/provider/index.js +83 -24
  32. package/dist/esm/socket-io-provider.js +13 -3
  33. package/dist/esm/version.json +1 -1
  34. package/dist/types/analytics/index.d.ts +3 -7
  35. package/dist/types/analytics/performance.d.ts +11 -4
  36. package/dist/types/config.d.ts +5 -0
  37. package/dist/types/helpers/const.d.ts +22 -4
  38. package/dist/types/helpers/utils.d.ts +3 -0
  39. package/dist/types/socket-io-provider.d.ts +2 -2
  40. package/dist/types/types.d.ts +11 -2
  41. package/package.json +5 -4
  42. package/report.api.md +289 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @atlaskit/collab-provider
2
2
 
3
+ ## 7.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`1c555e79e56`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1c555e79e56) - Added the capability to pass product information (product & sub-product) to the collab service
8
+ - [`247420a48f7`](https://bitbucket.org/atlassian/atlassian-frontend/commits/247420a48f7) - [ESS-1050] Return ADF document from getFinalAcknowledgedState
9
+ - [`17f1b0b87cc`](https://bitbucket.org/atlassian/atlassian-frontend/commits/17f1b0b87cc) - ESS-1019 changes the reconnectionDelayMax to 128s to reduce the reconnection storm.
10
+
11
+ ### Patch Changes
12
+
13
+ - [`bf848f39cb1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bf848f39cb1) - ESS-2419 Emit the reason of permission errors to the consumers of collab-provider
14
+ - [`680dc155ebc`](https://bitbucket.org/atlassian/atlassian-frontend/commits/680dc155ebc) - Raise errors in the collab provider when the server fails loading initilisation data
15
+ - Updated dependencies
16
+
17
+ ## 7.4.4
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies
22
+
23
+ ## 7.4.3
24
+
25
+ ### Patch Changes
26
+
27
+ - [`ec2f2d0b804`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ec2f2d0b804) - ED-14734: Add analytics to track time to connect to collab service, as well as tracking document initial load time.
28
+
3
29
  ## 7.4.2
4
30
 
5
31
  ### Patch Changes
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@atlaskit/collab-provider/config",
3
+ "main": "../dist/cjs/config.js",
4
+ "module": "../dist/esm/config.js",
5
+ "module:es2019": "../dist/es2019/config.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/config.d.ts"
8
+ }
@@ -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.triggerAnalyticsForStepsRejected = exports.triggerAnalyticsForStepsAddedSuccessfully = exports.triggerAnalyticsForCatchupSuccessfulWithLatency = exports.triggerAnalyticsForCatchupFailed = exports.fireAnalyticsEvent = exports.buildAnalyticsPayload = void 0;
8
+ exports.triggerCollabAnalyticsEvent = exports.fireAnalyticsEvent = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -15,22 +15,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
15
15
 
16
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
- var buildAnalyticsPayload = function buildAnalyticsPayload(subject, payload) {
19
- return {
20
- action: 'collab',
21
- actionSubject: subject,
22
- source: 'unknown',
23
- attributes: {
24
- packageName: _const.ATTRIBUTES_PACKAGE,
25
- payload: payload
26
- }
27
- };
28
- };
29
-
30
- exports.buildAnalyticsPayload = buildAnalyticsPayload;
31
-
32
- var fireAnalyticsEvent = function fireAnalyticsEvent(analyticsClient, analyticsEvent) {
33
- if (!analyticsClient || !analyticsEvent) {
18
+ var fireAnalyticsEvent = function fireAnalyticsEvent(analyticsClient, payload) {
19
+ if (!analyticsClient || !payload) {
34
20
  return;
35
21
  }
36
22
 
@@ -42,38 +28,25 @@ var fireAnalyticsEvent = function fireAnalyticsEvent(analyticsClient, analyticsE
42
28
  runItLater(function () {
43
29
  client.sendOperationalEvent(_objectSpread(_objectSpread({
44
30
  action: 'collab'
45
- }, analyticsEvent), {}, {
46
- source: analyticsEvent.source || 'unknown'
31
+ }, payload), {}, {
32
+ source: payload.source || 'unknown',
33
+ tags: ['editor']
47
34
  }));
48
35
  });
49
36
  };
50
37
 
51
38
  exports.fireAnalyticsEvent = fireAnalyticsEvent;
52
39
 
53
- var triggerAnalyticsForStepsAddedSuccessfully = function triggerAnalyticsForStepsAddedSuccessfully(analyticsClient) {
54
- var stepAddedEvent = buildAnalyticsPayload(_const.STEPS_ADDED);
55
- fireAnalyticsEvent(analyticsClient, stepAddedEvent);
56
- };
57
-
58
- exports.triggerAnalyticsForStepsAddedSuccessfully = triggerAnalyticsForStepsAddedSuccessfully;
59
-
60
- var triggerAnalyticsForStepsRejected = function triggerAnalyticsForStepsRejected(analyticsClient, error) {
61
- var stepRejectedEvent = buildAnalyticsPayload(_const.STEPS_REJECTED, error);
62
- fireAnalyticsEvent(analyticsClient, stepRejectedEvent);
63
- };
64
-
65
- exports.triggerAnalyticsForStepsRejected = triggerAnalyticsForStepsRejected;
66
-
67
- var triggerAnalyticsForCatchupFailed = function triggerAnalyticsForCatchupFailed(analyticsClient, error) {
68
- var catchupFailedEvent = buildAnalyticsPayload(_const.CATCHUP_FAILURE, error);
69
- fireAnalyticsEvent(analyticsClient, catchupFailedEvent);
70
- };
71
-
72
- exports.triggerAnalyticsForCatchupFailed = triggerAnalyticsForCatchupFailed;
73
-
74
- var triggerAnalyticsForCatchupSuccessfulWithLatency = function triggerAnalyticsForCatchupSuccessfulWithLatency(analyticsClient, latency) {
75
- var callCatchupLatency = buildAnalyticsPayload(_const.CATCHUP_SUCCESS, latency);
76
- fireAnalyticsEvent(analyticsClient, callCatchupLatency);
40
+ var triggerCollabAnalyticsEvent = function triggerCollabAnalyticsEvent(analyticsEvent, analyticsClient) {
41
+ var payload = {
42
+ action: analyticsEvent.eventAction,
43
+ actionSubject: _const.EVENT_SUBJECT,
44
+ source: 'unknown',
45
+ attributes: _objectSpread({
46
+ packageName: _const.ATTRIBUTES_PACKAGE
47
+ }, analyticsEvent.attributes)
48
+ };
49
+ fireAnalyticsEvent(analyticsClient, payload);
77
50
  };
78
51
 
79
- exports.triggerAnalyticsForCatchupSuccessfulWithLatency = triggerAnalyticsForCatchupSuccessfulWithLatency;
52
+ exports.triggerCollabAnalyticsEvent = triggerCollabAnalyticsEvent;
@@ -3,9 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.MEASURE_NAME = void 0;
6
7
  exports.clearMeasure = clearMeasure;
7
8
  exports.startMeasure = startMeasure;
8
9
  exports.stopMeasure = stopMeasure;
10
+ var MEASURE_NAME;
11
+ exports.MEASURE_NAME = MEASURE_NAME;
12
+
13
+ (function (MEASURE_NAME) {
14
+ MEASURE_NAME["CALLING_CATCHUP_API"] = "callingCatchupApi";
15
+ MEASURE_NAME["SOCKET_CONNECT"] = "socketConnect";
16
+ MEASURE_NAME["DOCUMENT_INIT"] = "documentInit";
17
+ MEASURE_NAME["CONVERT_PM_TO_ADF"] = "convertPMToADF";
18
+ })(MEASURE_NAME || (exports.MEASURE_NAME = MEASURE_NAME = {}));
9
19
 
10
20
  var isPerformanceAPIAvailable = function isPerformanceAPIAvailable() {
11
21
  return typeof window !== 'undefined' && 'performance' in window && ['measure', 'clearMeasures', 'clearMarks', 'getEntriesByName', 'getEntriesByType'].every(function (api) {
@@ -40,19 +50,29 @@ function stopMeasure(measureName, onMeasureComplete) {
40
50
 
41
51
  try {
42
52
  performance.measure(measureName, "".concat(measureName, "::start"), "".concat(measureName, "::end"));
43
- } catch (error) {} finally {
44
- if (onMeasureComplete) {
45
- var entry = performance.getEntriesByName(measureName).pop();
46
-
47
- if (entry) {
48
- onMeasureComplete(entry.duration, entry.startTime);
49
- } else if (start) {
50
- onMeasureComplete(performance.now() - start, start);
51
- }
52
- }
53
-
54
- clearMeasure(measureName);
53
+ } catch (e) {}
54
+
55
+ var entry = performance.getEntriesByName(measureName).pop();
56
+ clearMeasure(measureName);
57
+ var measure;
58
+
59
+ if (entry) {
60
+ measure = {
61
+ duration: entry.duration,
62
+ startTime: entry.startTime
63
+ };
64
+ } else if (start) {
65
+ measure = {
66
+ duration: performance.now() - start,
67
+ startTime: start
68
+ };
55
69
  }
70
+
71
+ if (measure && onMeasureComplete) {
72
+ onMeasureComplete(measure.duration, measure.startTime);
73
+ }
74
+
75
+ return measure;
56
76
  }
57
77
 
58
78
  function clearMeasure(measureName) {
@@ -37,6 +37,8 @@ var _performance = require("./analytics/performance");
37
37
 
38
38
  var _analytics = require("./analytics");
39
39
 
40
+ var _const = require("./helpers/const");
41
+
40
42
  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
43
 
42
44
  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; }
@@ -72,6 +74,14 @@ var Channel = /*#__PURE__*/function (_Emitter) {
72
74
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onConnect", function () {
73
75
  _this.connected = true;
74
76
  logger('Connected.', _this.socket.id);
77
+ var measure = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.SOCKET_CONNECT);
78
+ (0, _analytics.triggerCollabAnalyticsEvent)({
79
+ eventAction: _const.EVENT_ACTION.CONNECTION,
80
+ attributes: {
81
+ eventStatus: _const.EVENT_STATUS.SUCCESS,
82
+ latency: measure === null || measure === void 0 ? void 0 : measure.duration
83
+ }
84
+ }, _this.analyticsClient);
75
85
 
76
86
  _this.emit('connected', {
77
87
  sid: _this.socket.id,
@@ -84,6 +94,15 @@ var Channel = /*#__PURE__*/function (_Emitter) {
84
94
 
85
95
  if (data.type === 'initial') {
86
96
  if (!_this.initialized) {
97
+ var measure = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.DOCUMENT_INIT);
98
+ (0, _analytics.triggerCollabAnalyticsEvent)({
99
+ eventAction: _const.EVENT_ACTION.DOCUMENT_INIT,
100
+ attributes: {
101
+ eventStatus: _const.EVENT_STATUS.SUCCESS,
102
+ // TODO: detect when document init fails and fire corresponding event for it
103
+ latency: measure === null || measure === void 0 ? void 0 : measure.duration
104
+ }
105
+ }, _this.analyticsClient);
87
106
  var doc = data.doc,
88
107
  version = data.version,
89
108
  userId = data.userId,
@@ -120,14 +139,21 @@ var Channel = /*#__PURE__*/function (_Emitter) {
120
139
  function connect() {
121
140
  var _this2 = this;
122
141
 
142
+ (0, _performance.startMeasure)(_performance.MEASURE_NAME.SOCKET_CONNECT);
143
+
144
+ if (!this.initialized) {
145
+ (0, _performance.startMeasure)(_performance.MEASURE_NAME.DOCUMENT_INIT);
146
+ }
147
+
123
148
  var _this$config = this.config,
124
149
  documentAri = _this$config.documentAri,
125
150
  url = _this$config.url;
126
151
  var createSocket = this.config.createSocket;
127
152
  var permissionTokenRefresh = this.config.permissionTokenRefresh;
153
+ var authCb = null;
128
154
 
129
155
  if (permissionTokenRefresh) {
130
- var authCb = function authCb(cb) {
156
+ authCb = function authCb(cb) {
131
157
  permissionTokenRefresh().then(function (token) {
132
158
  cb({
133
159
  // The permission token.
@@ -141,10 +167,8 @@ var Channel = /*#__PURE__*/function (_Emitter) {
141
167
  _this2.emit('error', err);
142
168
  });
143
169
  };
144
-
145
- this.socket = createSocket("".concat(url, "/session/").concat(documentAri), authCb);
146
170
  } else {
147
- var _authCb = function _authCb(cb) {
171
+ authCb = function authCb(cb) {
148
172
  cb({
149
173
  // The initialized status. If false, BE will send document, otherwise not.
150
174
  initialized: _this2.initialized,
@@ -152,13 +176,12 @@ var Channel = /*#__PURE__*/function (_Emitter) {
152
176
  need404: _this2.config.need404
153
177
  });
154
178
  };
179
+ }
155
180
 
156
- this.socket = createSocket("".concat(url, "/session/").concat(documentAri), _authCb);
157
- } // Due to https://github.com/socketio/socket.io-client/issues/1473,
181
+ this.socket = createSocket("".concat(url, "/session/").concat(documentAri), authCb, this.config.productInfo); // Due to https://github.com/socketio/socket.io-client/issues/1473,
158
182
  // reconnect no longer fired on the socket.
159
183
  // We should use `connect` for better cross platform compatibility(Mobile/Web).
160
184
 
161
-
162
185
  this.socket.on('connect', this.onConnect);
163
186
  this.socket.on('data', this.onReceiveData);
164
187
  this.socket.on('steps:added', function (data) {
@@ -228,10 +251,19 @@ var Channel = /*#__PURE__*/function (_Emitter) {
228
251
  // Ensure the error emit to the provider has the same structure, so we can handle them unified.
229
252
 
230
253
  this.socket.on('connect_error', function (error) {
231
- // If error received with `data`, it means the connection is rejected
254
+ var measure = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.SOCKET_CONNECT);
255
+ (0, _analytics.triggerCollabAnalyticsEvent)({
256
+ eventAction: _const.EVENT_ACTION.CONNECTION,
257
+ attributes: {
258
+ eventStatus: _const.EVENT_STATUS.FAILURE,
259
+ error: error,
260
+ latency: measure === null || measure === void 0 ? void 0 : measure.duration
261
+ }
262
+ }, _this2.analyticsClient); // If error received with `data`, it means the connection is rejected
232
263
  // by the server on purpose for example no permission, so no need to
233
264
  // keep the underneath connection, need to close. But some error like
234
265
  // `xhr polling error` needs to retry.
266
+
235
267
  if (!!error.data) {
236
268
  var _this2$socket;
237
269
 
@@ -248,8 +280,6 @@ var Channel = /*#__PURE__*/function (_Emitter) {
248
280
  key: "fetchCatchup",
249
281
  value: function () {
250
282
  var _fetchCatchup = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fromVersion) {
251
- var _this3 = this;
252
-
253
283
  var _yield$utils$requestS, doc, version, stepMaps, metadata, errorCatchup;
254
284
 
255
285
  return _regenerator.default.wrap(function _callee2$(_context2) {
@@ -257,49 +287,56 @@ var Channel = /*#__PURE__*/function (_Emitter) {
257
287
  switch (_context2.prev = _context2.next) {
258
288
  case 0:
259
289
  _context2.prev = 0;
260
- (0, _performance.startMeasure)('callingCatchupApi');
261
290
  _context2.t0 = _utilServiceSupport.utils;
262
291
  _context2.t1 = this.config;
263
- _context2.t2 = _objectSpread;
292
+ _context2.t2 = "document/".concat(encodeURIComponent(this.config.documentAri), "/catchup");
264
293
  _context2.t3 = {
265
- path: "document/".concat(encodeURIComponent(this.config.documentAri), "/catchup"),
266
- queryParams: {
267
- version: fromVersion
268
- }
294
+ version: fromVersion
269
295
  };
296
+ _context2.t4 = _objectSpread;
297
+ _context2.t5 = _objectSpread;
298
+ _context2.t6 = {};
270
299
 
271
300
  if (!this.config.permissionTokenRefresh) {
272
301
  _context2.next = 15;
273
302
  break;
274
303
  }
275
304
 
276
- _context2.next = 9;
305
+ _context2.next = 11;
277
306
  return this.config.permissionTokenRefresh();
278
307
 
279
- case 9:
280
- _context2.t5 = _context2.sent;
281
- _context2.t6 = {
282
- 'x-token': _context2.t5
283
- };
308
+ case 11:
309
+ _context2.t8 = _context2.sent;
284
310
  _context2.t7 = {
285
- headers: _context2.t6
286
- };
287
- _context2.t4 = {
288
- requestInit: _context2.t7
311
+ 'x-token': _context2.t8
289
312
  };
290
313
  _context2.next = 16;
291
314
  break;
292
315
 
293
316
  case 15:
294
- _context2.t4 = {};
317
+ _context2.t7 = {};
295
318
 
296
319
  case 16:
297
- _context2.t8 = _context2.t4;
298
- _context2.t9 = (0, _context2.t2)(_context2.t3, _context2.t8);
299
- _context2.next = 20;
300
- return _context2.t0.requestService.call(_context2.t0, _context2.t1, _context2.t9);
320
+ _context2.t9 = _context2.t7;
321
+ _context2.t10 = (0, _context2.t5)(_context2.t6, _context2.t9);
322
+ _context2.t11 = {};
323
+ _context2.t12 = {
324
+ 'x-product': (0, _utils.getProduct)(this.config.productInfo),
325
+ 'x-subproduct': (0, _utils.getSubProduct)(this.config.productInfo)
326
+ };
327
+ _context2.t13 = (0, _context2.t4)(_context2.t10, _context2.t11, _context2.t12);
328
+ _context2.t14 = {
329
+ headers: _context2.t13
330
+ };
331
+ _context2.t15 = {
332
+ path: _context2.t2,
333
+ queryParams: _context2.t3,
334
+ requestInit: _context2.t14
335
+ };
336
+ _context2.next = 25;
337
+ return _context2.t0.requestService.call(_context2.t0, _context2.t1, _context2.t15);
301
338
 
302
- case 20:
339
+ case 25:
303
340
  _yield$utils$requestS = _context2.sent;
304
341
  doc = _yield$utils$requestS.doc;
305
342
  version = _yield$utils$requestS.version;
@@ -312,33 +349,26 @@ var Channel = /*#__PURE__*/function (_Emitter) {
312
349
  metadata: metadata
313
350
  });
314
351
 
315
- case 28:
316
- _context2.prev = 28;
317
- _context2.t10 = _context2["catch"](0);
318
- logger("Can't fetch the catchup", _context2.t10.message);
352
+ case 33:
353
+ _context2.prev = 33;
354
+ _context2.t16 = _context2["catch"](0);
355
+ logger("Can't fetch the catchup", _context2.t16.message);
319
356
  errorCatchup = {
320
357
  message: _errorCodeMapper.ErrorCodeMapper.catchupFail.message,
321
358
  data: {
322
- status: _context2.t10.status,
359
+ status: _context2.t16.status,
323
360
  code: _errorCodeMapper.ErrorCodeMapper.catchupFail.code
324
361
  }
325
362
  };
326
363
  this.emit('error', errorCatchup);
327
364
  return _context2.abrupt("return", {});
328
365
 
329
- case 34:
330
- _context2.prev = 34;
331
- (0, _performance.stopMeasure)('callingCatchupApi', function (duration, _) {
332
- (0, _analytics.triggerAnalyticsForCatchupSuccessfulWithLatency)(_this3.analyticsClient, duration);
333
- });
334
- return _context2.finish(34);
335
-
336
- case 37:
366
+ case 39:
337
367
  case "end":
338
368
  return _context2.stop();
339
369
  }
340
370
  }
341
- }, _callee2, this, [[0, 28, 34, 37]]);
371
+ }, _callee2, this, [[0, 33]]);
342
372
  }));
343
373
 
344
374
  function fetchCatchup(_x2) {
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SOCKET_IO_OPTIONS = void 0;
7
+ var SOCKET_IO_OPTIONS = {
8
+ RECONNECTION_DELAY_MAX: 128 * 1000,
9
+ RECONNECTION_DELAY: 1000,
10
+ RANDOMIZATION_FACTOR: 0.1
11
+ };
12
+ exports.SOCKET_IO_OPTIONS = SOCKET_IO_OPTIONS;
@@ -1,9 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.errorCodeMapper = exports.ErrorCodeMapper = void 0;
9
+
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
+
7
12
  var ErrorCodeMapper = {
8
13
  noPermissionError: {
9
14
  code: 'NO_PERMISSION_ERROR',
@@ -37,41 +42,44 @@ var ErrorCodeMapper = {
37
42
  exports.ErrorCodeMapper = ErrorCodeMapper;
38
43
 
39
44
  var errorCodeMapper = function errorCodeMapper(error) {
40
- if (error.data) {
41
- switch (error.data.code) {
42
- case 'INSUFFICIENT_EDITING_PERMISSION':
43
- return {
44
- status: 403,
45
- code: ErrorCodeMapper.noPermissionError.code,
46
- message: ErrorCodeMapper.noPermissionError.message
47
- };
45
+ var _error$data;
46
+
47
+ switch ((_error$data = error.data) === null || _error$data === void 0 ? void 0 : _error$data.code) {
48
+ case 'INSUFFICIENT_EDITING_PERMISSION':
49
+ return {
50
+ status: 403,
51
+ code: ErrorCodeMapper.noPermissionError.code,
52
+ message: ErrorCodeMapper.noPermissionError.message,
53
+ reason: // Typescript magic so it detects the union type
54
+ (0, _typeof2.default)(error.data.meta) === 'object' ? error.data.meta.reason : undefined
55
+ };
48
56
 
49
- case 'DOCUMENT_NOT_FOUND':
50
- return {
51
- status: 404,
52
- code: ErrorCodeMapper.documentNotFound.code,
53
- message: ErrorCodeMapper.documentNotFound.message
54
- };
57
+ case 'DOCUMENT_NOT_FOUND':
58
+ return {
59
+ status: 404,
60
+ code: ErrorCodeMapper.documentNotFound.code,
61
+ message: ErrorCodeMapper.documentNotFound.message
62
+ };
55
63
 
56
- case 'FAILED_ON_S3':
57
- case 'DYNAMO_ERROR':
58
- return {
59
- status: 500,
60
- code: ErrorCodeMapper.failToSave.code,
61
- message: ErrorCodeMapper.failToSave.message
62
- };
64
+ case 'FAILED_ON_S3':
65
+ case 'DYNAMO_ERROR':
66
+ return {
67
+ status: 500,
68
+ code: ErrorCodeMapper.failToSave.code,
69
+ message: ErrorCodeMapper.failToSave.message
70
+ };
63
71
 
64
- case 'CATCHUP_FAILED':
65
- case 'GET_QUERY_TIME_OUT':
66
- return {
67
- status: 500,
68
- code: ErrorCodeMapper.internalError.code,
69
- message: ErrorCodeMapper.internalError.message
70
- };
72
+ case 'CATCHUP_FAILED':
73
+ case 'GET_QUERY_TIME_OUT':
74
+ case 'INIT_DATA_LOAD_FAILED':
75
+ return {
76
+ status: 500,
77
+ code: ErrorCodeMapper.internalError.code,
78
+ message: ErrorCodeMapper.internalError.message
79
+ };
71
80
 
72
- default:
73
- break;
74
- }
81
+ default:
82
+ break;
75
83
  }
76
84
  };
77
85
 
@@ -3,16 +3,29 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.STEPS_REJECTED = exports.STEPS_ADDED = exports.CATCHUP_SUCCESS = exports.CATCHUP_FAILURE = exports.ATTRIBUTES_PACKAGE = exports.ACK_MAX_TRY = void 0;
7
- var STEPS_ADDED = 'collabStepsAddedSuccess';
8
- exports.STEPS_ADDED = STEPS_ADDED;
9
- var STEPS_REJECTED = 'collabStepsAddedRejected';
10
- exports.STEPS_REJECTED = STEPS_REJECTED;
6
+ exports.EVENT_SUBJECT = exports.EVENT_STATUS = exports.EVENT_ACTION = exports.ATTRIBUTES_PACKAGE = exports.ACK_MAX_TRY = void 0;
11
7
  var ATTRIBUTES_PACKAGE = 'collabProvider';
12
8
  exports.ATTRIBUTES_PACKAGE = ATTRIBUTES_PACKAGE;
13
- var CATCHUP_SUCCESS = 'collabCatchupSuccess';
14
- exports.CATCHUP_SUCCESS = CATCHUP_SUCCESS;
15
- var CATCHUP_FAILURE = 'collabCatchupFailure';
16
- exports.CATCHUP_FAILURE = CATCHUP_FAILURE;
9
+ var EVENT_SUBJECT = 'collab';
10
+ exports.EVENT_SUBJECT = EVENT_SUBJECT;
11
+ var EVENT_ACTION;
12
+ exports.EVENT_ACTION = EVENT_ACTION;
13
+
14
+ (function (EVENT_ACTION) {
15
+ EVENT_ACTION["CONNECTION"] = "connection";
16
+ EVENT_ACTION["CATCHUP"] = "catchup";
17
+ EVENT_ACTION["DOCUMENT_INIT"] = "documentInit";
18
+ EVENT_ACTION["ADD_STEPS"] = "addSteps";
19
+ EVENT_ACTION["CONVERT_PM_TO_ADF"] = "convertPMToADF";
20
+ })(EVENT_ACTION || (exports.EVENT_ACTION = EVENT_ACTION = {}));
21
+
22
+ var EVENT_STATUS;
23
+ exports.EVENT_STATUS = EVENT_STATUS;
24
+
25
+ (function (EVENT_STATUS) {
26
+ EVENT_STATUS["SUCCESS"] = "SUCCESS";
27
+ EVENT_STATUS["FAILURE"] = "FAILURE";
28
+ })(EVENT_STATUS || (exports.EVENT_STATUS = EVENT_STATUS = {}));
29
+
17
30
  var ACK_MAX_TRY = 10;
18
31
  exports.ACK_MAX_TRY = ACK_MAX_TRY;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getParticipant = exports.createLogger = void 0;
6
+ exports.getSubProduct = exports.getProduct = exports.getParticipant = exports.createLogger = void 0;
7
7
  exports.sleep = sleep;
8
8
 
9
9
  var createLogger = function createLogger(prefix) {
@@ -37,4 +37,20 @@ function sleep(ms) {
37
37
  return new Promise(function (resolve) {
38
38
  setTimeout(resolve, ms);
39
39
  });
40
- }
40
+ }
41
+
42
+ var getProduct = function getProduct(productInfo) {
43
+ var _productInfo$product;
44
+
45
+ return (_productInfo$product = productInfo === null || productInfo === void 0 ? void 0 : productInfo.product) !== null && _productInfo$product !== void 0 ? _productInfo$product : 'unknown';
46
+ };
47
+
48
+ exports.getProduct = getProduct;
49
+
50
+ var getSubProduct = function getSubProduct(productInfo) {
51
+ var _productInfo$subProdu;
52
+
53
+ return (_productInfo$subProdu = productInfo === null || productInfo === void 0 ? void 0 : productInfo.subProduct) !== null && _productInfo$subProdu !== void 0 ? _productInfo$subProdu : !!(productInfo !== null && productInfo !== void 0 && productInfo.product) ? 'none' : 'unknown';
54
+ };
55
+
56
+ exports.getSubProduct = getSubProduct;