@atlaskit/collab-provider 8.3.0 → 8.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 (86) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/cjs/analytics/{index.js → analytics-helper.js} +45 -5
  3. package/dist/cjs/analytics/performance.js +7 -5
  4. package/dist/cjs/channel.js +318 -210
  5. package/dist/cjs/{provider → document}/catchup.js +2 -2
  6. package/dist/cjs/document/document-service.js +617 -0
  7. package/dist/cjs/document/step-queue-state.js +51 -0
  8. package/dist/cjs/errors/error-code-mapper.js +107 -0
  9. package/dist/cjs/errors/error-types.js +273 -0
  10. package/dist/cjs/helpers/const.js +2 -4
  11. package/dist/cjs/helpers/utils.js +1 -12
  12. package/dist/cjs/participants/participants-helper.js +51 -0
  13. package/dist/cjs/participants/participants-service.js +217 -0
  14. package/dist/cjs/participants/participants-state.js +53 -0
  15. package/dist/cjs/{provider/telepointers.js → participants/telepointers-helper.js} +6 -6
  16. package/dist/cjs/provider/commit-step.js +40 -36
  17. package/dist/cjs/provider/index.js +215 -762
  18. package/dist/cjs/types.js +3 -0
  19. package/dist/cjs/version-wrapper.js +1 -1
  20. package/dist/cjs/version.json +1 -1
  21. package/dist/es2019/analytics/{index.js → analytics-helper.js} +17 -5
  22. package/dist/es2019/analytics/performance.js +6 -6
  23. package/dist/es2019/channel.js +204 -129
  24. package/dist/es2019/{provider → document}/catchup.js +2 -2
  25. package/dist/es2019/document/document-service.js +495 -0
  26. package/dist/es2019/document/step-queue-state.js +30 -0
  27. package/dist/es2019/errors/error-code-mapper.js +102 -0
  28. package/dist/es2019/errors/error-types.js +151 -0
  29. package/dist/es2019/helpers/const.js +2 -4
  30. package/dist/es2019/helpers/utils.js +0 -10
  31. package/dist/es2019/participants/participants-helper.js +25 -0
  32. package/dist/es2019/participants/participants-service.js +166 -0
  33. package/dist/es2019/participants/participants-state.js +28 -0
  34. package/dist/es2019/{provider/telepointers.js → participants/telepointers-helper.js} +2 -2
  35. package/dist/es2019/provider/commit-step.js +38 -34
  36. package/dist/es2019/provider/index.js +163 -626
  37. package/dist/es2019/types.js +4 -0
  38. package/dist/es2019/version-wrapper.js +1 -1
  39. package/dist/es2019/version.json +1 -1
  40. package/dist/esm/analytics/{index.js → analytics-helper.js} +45 -5
  41. package/dist/esm/analytics/performance.js +6 -6
  42. package/dist/esm/channel.js +318 -210
  43. package/dist/esm/{provider → document}/catchup.js +2 -2
  44. package/dist/esm/document/document-service.js +609 -0
  45. package/dist/esm/document/step-queue-state.js +43 -0
  46. package/dist/esm/errors/error-code-mapper.js +102 -0
  47. package/dist/esm/errors/error-types.js +259 -0
  48. package/dist/esm/helpers/const.js +2 -4
  49. package/dist/esm/helpers/utils.js +0 -10
  50. package/dist/esm/participants/participants-helper.js +43 -0
  51. package/dist/esm/participants/participants-service.js +209 -0
  52. package/dist/esm/participants/participants-state.js +45 -0
  53. package/dist/esm/{provider/telepointers.js → participants/telepointers-helper.js} +4 -4
  54. package/dist/esm/provider/commit-step.js +40 -36
  55. package/dist/esm/provider/index.js +214 -762
  56. package/dist/esm/types.js +4 -0
  57. package/dist/esm/version-wrapper.js +1 -1
  58. package/dist/esm/version.json +1 -1
  59. package/dist/types/analytics/{index.d.ts → analytics-helper.d.ts} +3 -1
  60. package/dist/types/analytics/performance.d.ts +5 -2
  61. package/dist/types/analytics/ufo.d.ts +1 -1
  62. package/dist/types/channel.d.ts +17 -5
  63. package/dist/types/document/document-service.d.ts +105 -0
  64. package/dist/types/document/step-queue-state.d.ts +16 -0
  65. package/dist/types/errors/error-code-mapper.d.ts +2 -0
  66. package/dist/types/errors/error-types.d.ts +443 -0
  67. package/dist/types/helpers/const.d.ts +31 -8
  68. package/dist/types/helpers/utils.d.ts +0 -6
  69. package/dist/types/index.d.ts +2 -1
  70. package/dist/types/participants/participants-helper.d.ts +15 -0
  71. package/dist/types/participants/participants-service.d.ts +70 -0
  72. package/dist/types/participants/participants-state.d.ts +13 -0
  73. package/dist/types/participants/telepointers-helper.d.ts +4 -0
  74. package/dist/types/provider/commit-step.d.ts +6 -6
  75. package/dist/types/provider/index.d.ts +86 -65
  76. package/dist/types/socket-io-provider.d.ts +2 -2
  77. package/dist/types/types.d.ts +65 -33
  78. package/package.json +4 -4
  79. package/report.api.md +193 -23
  80. package/dist/cjs/error-code-mapper.js +0 -88
  81. package/dist/es2019/error-code-mapper.js +0 -78
  82. package/dist/esm/error-code-mapper.js +0 -79
  83. package/dist/types/error-code-mapper.d.ts +0 -36
  84. package/dist/types/provider/telepointers.d.ts +0 -5
  85. package/error-code-mapper/package.json +0 -15
  86. /package/dist/types/{provider → document}/catchup.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # @atlaskit/collab-provider
2
2
 
3
+ ## 8.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`2192c9417d7`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2192c9417d7) - [ESS-3335] Review Collab Provider API error handling & types
8
+ - [`c75fcb75c4e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c75fcb75c4e) - ESS-3241 Added unit tests for document restore.
9
+ ESS-3238 Internal refactor of collab provider, split document code from provider to document service.
10
+ Remove unused userId field from CollabInitPayload, it is never sent as part of the CollabInitPayload.
11
+ - [`27b106a736b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/27b106a736b) - ESS-3274 Refactor participant logic our of Provider class
12
+ - [`bdd8d88cad0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bdd8d88cad0) - [ESS-3332] Improved error mapping
13
+ - [`1d52016f25d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1d52016f25d) - Refactor collab-provider to accept a getAnalyticsClient Promise. And resolve when sending event.
14
+ Ticket: https://product-fabric.atlassian.net/browse/CCP-2863
15
+ - [`dfd96d6b48a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dfd96d6b48a) - [ESS-3333] Update to the structure of errors emitted on the collab provider
16
+
17
+ Upgrade instructions:
18
+
19
+ - Change the type of the errors emitted on the provider from `CollabEventError` to `ProviderError`
20
+ - Remove the reliance on the `status` field of the emitted errors, switch to using either the error code (exported as enum `PROVIDER_ERROR_CODE`) or the error flag `recoverable` indicating whether the provider can recover from the emitted error or not
21
+
22
+ The mapping from the old status codes to the error codes is:
23
+
24
+ - Status 403: PROVIDER_ERROR_CODE.NO_PERMISSION_ERROR, PROVIDER_ERROR_CODE.INVALID_USER_TOKEN
25
+ - Status 404: PROVIDER_ERROR_CODE.DOCUMENT_NOT_FOUND
26
+ - Status 423: PROVIDER_ERROR_CODE.LOCKED
27
+ - Status 500: PROVIDER_ERROR_CODE.FAIL_TO_SAVE, PROVIDER_ERROR_CODE.DOCUMENT_RESTORE_ERROR, PROVIDER_ERROR_CODE.INTERNAL_SERVICE_ERROR
28
+
29
+ - [`078a6d029f0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/078a6d029f0) - ESS-3333 temporarily re-add error status to fix product fabric from breaking changes
30
+
31
+ ### Patch Changes
32
+
33
+ - [`8217befcee0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8217befcee0) - logs the ignoring of steps for data versions older than current version in DocumentService.onStepsAdded()
34
+ - [`66f07c721c4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/66f07c721c4) - Add JSDoc to provider errors that are emitted to editor
35
+ - Updated dependencies
36
+
37
+ ## 8.4.0
38
+
39
+ ### Minor Changes
40
+
41
+ - [`eae755e434a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/eae755e434a) - [ESS-3269] Don't return an empty document if something goes wrong when returning the final acknowledge state from the collab provider
42
+ - [`ca548613b49`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ca548613b49) - ESS-3218 Add new configuration option throwOnNotConnected, which will throw not connected errors when attempting to save data whilst client is offline.
43
+ - [`329d3bb4e05`](https://bitbucket.org/atlassian/atlassian-frontend/commits/329d3bb4e05) - ESS-2962: added canCache flag in Config for Collab-provider. Channel now stores token locally if canCache flag is passed. Uses local token for reconnections if connection is lost for errors other that 401 and 403.
44
+ - [`1b9c38c7f48`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1b9c38c7f48) - [ESS-3269] Added error handling and metrics for retrieving the current state
45
+
46
+ ### Patch Changes
47
+
48
+ - [`2a076027203`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2a076027203) - NO-ISSUE fix the permission error on permissionTokenRefresh
49
+ - [`bde10feab09`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bde10feab09) - Avoid using callbacks when initialising socket connection
50
+ - [`f9a6a671d14`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f9a6a671d14) - add comment to indicate that disconnect handler will be called when Firefox reload
51
+ - Updated dependencies
52
+
3
53
  ## 8.3.0
4
54
 
5
55
  ### Minor Changes
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -55,10 +57,11 @@ var triggerAnalyticsEvent = function triggerAnalyticsEvent(analyticsEvent, analy
55
57
  }
56
58
  };
57
59
  var AnalyticsHelper = /*#__PURE__*/function () {
58
- function AnalyticsHelper(documentAri, analyticsClient) {
60
+ function AnalyticsHelper(documentAri, analyticsClient, getAnalyticsClient) {
59
61
  (0, _classCallCheck2.default)(this, AnalyticsHelper);
60
- this.analyticsClient = analyticsClient;
61
62
  this.documentAri = documentAri;
63
+ this.analyticsClient = analyticsClient;
64
+ this.getAnalyticsClient = getAnalyticsClient;
62
65
  }
63
66
  (0, _createClass2.default)(AnalyticsHelper, [{
64
67
  key: "sendErrorEvent",
@@ -67,13 +70,14 @@ var AnalyticsHelper = /*#__PURE__*/function () {
67
70
  eventAction: _const.EVENT_ACTION.ERROR,
68
71
  attributes: {
69
72
  documentAri: this.documentAri,
70
- errorMessage: errorMessage
73
+ errorMessage: errorMessage,
74
+ errorName: error instanceof Error ? error.name : undefined
71
75
  },
72
76
  nonPrivacySafeAttributes: {
73
77
  error: error
74
78
  }
75
79
  };
76
- triggerAnalyticsEvent(errorAnalyticsEvent, this.analyticsClient);
80
+ this.sendEvent(errorAnalyticsEvent);
77
81
  }
78
82
  }, {
79
83
  key: "sendActionEvent",
@@ -86,8 +90,44 @@ var AnalyticsHelper = /*#__PURE__*/function () {
86
90
  eventStatus: status
87
91
  }, attributes)
88
92
  };
89
- triggerAnalyticsEvent(analyticsEvent, this.analyticsClient);
93
+ this.sendEvent(analyticsEvent);
90
94
  }
95
+ }, {
96
+ key: "sendEvent",
97
+ value: function () {
98
+ var _sendEvent = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(event) {
99
+ return _regenerator.default.wrap(function _callee$(_context) {
100
+ while (1) {
101
+ switch (_context.prev = _context.next) {
102
+ case 0:
103
+ if (!(this.getAnalyticsClient && !this.analyticsClient)) {
104
+ _context.next = 9;
105
+ break;
106
+ }
107
+ _context.prev = 1;
108
+ _context.next = 4;
109
+ return this.getAnalyticsClient;
110
+ case 4:
111
+ this.analyticsClient = _context.sent;
112
+ _context.next = 9;
113
+ break;
114
+ case 7:
115
+ _context.prev = 7;
116
+ _context.t0 = _context["catch"](1);
117
+ case 9:
118
+ triggerAnalyticsEvent(event, this.analyticsClient);
119
+ case 10:
120
+ case "end":
121
+ return _context.stop();
122
+ }
123
+ }
124
+ }, _callee, this, [[1, 7]]);
125
+ }));
126
+ function sendEvent(_x) {
127
+ return _sendEvent.apply(this, arguments);
128
+ }
129
+ return sendEvent;
130
+ }()
91
131
  }]);
92
132
  return AnalyticsHelper;
93
133
  }();
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.MEASURE_NAME = void 0;
6
+ exports.measureMap = exports.isPerformanceAPIAvailable = exports.MEASURE_NAME = void 0;
7
7
  exports.startMeasure = startMeasure;
8
8
  exports.stopMeasure = stopMeasure;
9
9
  var MEASURE_NAME;
@@ -13,17 +13,19 @@ exports.MEASURE_NAME = MEASURE_NAME;
13
13
  MEASURE_NAME["DOCUMENT_INIT"] = "documentInit";
14
14
  MEASURE_NAME["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
15
15
  MEASURE_NAME["PUBLISH_PAGE"] = "publishPage";
16
+ MEASURE_NAME["GET_CURRENT_STATE"] = "getCurrentState";
16
17
  })(MEASURE_NAME || (exports.MEASURE_NAME = MEASURE_NAME = {}));
17
18
  var isPerformanceAPIAvailable = function isPerformanceAPIAvailable() {
18
19
  return typeof window !== 'undefined' && 'performance' in window && ['measure', 'clearMeasures', 'clearMarks', 'getEntriesByName', 'getEntriesByType'].every(function (api) {
19
20
  return !!performance[api];
20
21
  });
21
22
  };
22
- var hasPerformanceAPIAvailable = isPerformanceAPIAvailable();
23
+ exports.isPerformanceAPIAvailable = isPerformanceAPIAvailable;
23
24
  var measureMap = new Map();
25
+ exports.measureMap = measureMap;
24
26
  function startMeasure(measureName, analyticsHelper) {
25
27
  try {
26
- if (!hasPerformanceAPIAvailable) {
28
+ if (!isPerformanceAPIAvailable()) {
27
29
  return;
28
30
  }
29
31
  performance.mark("".concat(measureName, "::start"));
@@ -35,7 +37,7 @@ function startMeasure(measureName, analyticsHelper) {
35
37
  function stopMeasure(measureName, analyticsHelper, onMeasureComplete) {
36
38
  var start;
37
39
  try {
38
- if (!hasPerformanceAPIAvailable) {
40
+ if (!isPerformanceAPIAvailable()) {
39
41
  return;
40
42
  }
41
43
 
@@ -73,7 +75,7 @@ function stopMeasure(measureName, analyticsHelper, onMeasureComplete) {
73
75
  }
74
76
  }
75
77
  function clearMeasure(measureName) {
76
- if (!hasPerformanceAPIAvailable) {
78
+ if (!isPerformanceAPIAvailable()) {
77
79
  return;
78
80
  }
79
81
  measureMap.delete(measureName);