@atlaskit/collab-provider 7.6.2 → 7.6.3
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 +10 -0
- package/dist/cjs/analytics/index.js +4 -1
- package/dist/cjs/analytics/performance.js +2 -0
- package/dist/cjs/config.js +2 -2
- package/dist/cjs/helpers/const.js +3 -4
- package/dist/cjs/provider/index.js +47 -21
- package/dist/cjs/socket-io-provider.js +1 -0
- package/dist/cjs/version-wrapper.js +16 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/index.js +4 -2
- package/dist/es2019/analytics/performance.js +2 -0
- package/dist/es2019/config.js +2 -2
- package/dist/es2019/helpers/const.js +2 -2
- package/dist/es2019/provider/index.js +33 -8
- package/dist/es2019/socket-io-provider.js +1 -0
- package/dist/es2019/version-wrapper.js +5 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/index.js +4 -2
- package/dist/esm/analytics/performance.js +2 -0
- package/dist/esm/config.js +2 -2
- package/dist/esm/helpers/const.js +2 -2
- package/dist/esm/provider/index.js +47 -21
- package/dist/esm/socket-io-provider.js +1 -0
- package/dist/esm/version-wrapper.js +5 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/performance.d.ts +3 -1
- package/dist/types/helpers/const.d.ts +3 -3
- package/dist/types/version-wrapper.d.ts +3 -0
- package/dist/types-ts4.0/analytics/performance.d.ts +3 -1
- package/dist/types-ts4.0/helpers/const.d.ts +3 -3
- package/dist/types-ts4.0/version-wrapper.d.ts +3 -0
- package/package.json +9 -5
- package/report.api.md +143 -171
- package/version-wrapper/package.json +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @atlaskit/collab-provider
|
|
2
2
|
|
|
3
|
+
## 7.6.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`1a64a3e3e53`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1a64a3e3e53) - ESS-2591 Reduce initial re-connection delay and increase randomization factor for socket io connections.
|
|
8
|
+
- [`ee8ac15d730`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ee8ac15d730) - ESS-1363 add packageVersion to analytic events
|
|
9
|
+
- [`29292da81d7`](https://bitbucket.org/atlassian/atlassian-frontend/commits/29292da81d7) - Increased the limits for the collab sync on returning the document to the consumer
|
|
10
|
+
- [`e06f8ba062f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e06f8ba062f) - Disable collab provider transport closing on the beforeunload event.
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
3
13
|
## 7.6.2
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -11,6 +11,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
11
11
|
|
|
12
12
|
var _const = require("../helpers/const");
|
|
13
13
|
|
|
14
|
+
var _versionWrapper = require("../version-wrapper");
|
|
15
|
+
|
|
14
16
|
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
17
|
|
|
16
18
|
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,7 +45,8 @@ var triggerCollabAnalyticsEvent = function triggerCollabAnalyticsEvent(analytics
|
|
|
43
45
|
actionSubject: _const.EVENT_SUBJECT,
|
|
44
46
|
source: 'unknown',
|
|
45
47
|
attributes: _objectSpread({
|
|
46
|
-
packageName:
|
|
48
|
+
packageName: _versionWrapper.name,
|
|
49
|
+
packageVersion: _versionWrapper.version,
|
|
47
50
|
collabService: _const.COLLAB_SERVICE.NCS
|
|
48
51
|
}, analyticsEvent.attributes)
|
|
49
52
|
};
|
|
@@ -15,6 +15,8 @@ exports.MEASURE_NAME = MEASURE_NAME;
|
|
|
15
15
|
MEASURE_NAME["SOCKET_CONNECT"] = "socketConnect";
|
|
16
16
|
MEASURE_NAME["DOCUMENT_INIT"] = "documentInit";
|
|
17
17
|
MEASURE_NAME["CONVERT_PM_TO_ADF"] = "convertPMToADF";
|
|
18
|
+
MEASURE_NAME["ADD_STEPS"] = "addSteps";
|
|
19
|
+
MEASURE_NAME["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
|
|
18
20
|
})(MEASURE_NAME || (exports.MEASURE_NAME = MEASURE_NAME = {}));
|
|
19
21
|
|
|
20
22
|
var isPerformanceAPIAvailable = function isPerformanceAPIAvailable() {
|
package/dist/cjs/config.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.SOCKET_IO_OPTIONS = void 0;
|
|
7
7
|
var SOCKET_IO_OPTIONS = {
|
|
8
8
|
RECONNECTION_DELAY_MAX: 128 * 1000,
|
|
9
|
-
RECONNECTION_DELAY:
|
|
10
|
-
RANDOMIZATION_FACTOR: 0.
|
|
9
|
+
RECONNECTION_DELAY: 200,
|
|
10
|
+
RANDOMIZATION_FACTOR: 0.5
|
|
11
11
|
};
|
|
12
12
|
exports.SOCKET_IO_OPTIONS = SOCKET_IO_OPTIONS;
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.EVENT_SUBJECT = exports.EVENT_STATUS = exports.EVENT_ACTION = exports.COLLAB_SERVICE = exports.
|
|
7
|
-
var ATTRIBUTES_PACKAGE = 'collabProvider';
|
|
8
|
-
exports.ATTRIBUTES_PACKAGE = ATTRIBUTES_PACKAGE;
|
|
6
|
+
exports.EVENT_SUBJECT = exports.EVENT_STATUS = exports.EVENT_ACTION = exports.COLLAB_SERVICE = exports.ACK_MAX_TRY = void 0;
|
|
9
7
|
var EVENT_SUBJECT = 'collab';
|
|
10
8
|
exports.EVENT_SUBJECT = EVENT_SUBJECT;
|
|
11
9
|
var COLLAB_SERVICE;
|
|
@@ -26,6 +24,7 @@ exports.EVENT_ACTION = EVENT_ACTION;
|
|
|
26
24
|
EVENT_ACTION["ADD_STEPS"] = "addSteps";
|
|
27
25
|
EVENT_ACTION["CONVERT_PM_TO_ADF"] = "convertPMToADF";
|
|
28
26
|
EVENT_ACTION["UPDATE_PARTICIPANTS"] = "updateParticipants";
|
|
27
|
+
EVENT_ACTION["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
|
|
29
28
|
})(EVENT_ACTION || (exports.EVENT_ACTION = EVENT_ACTION = {}));
|
|
30
29
|
|
|
31
30
|
var EVENT_STATUS;
|
|
@@ -36,5 +35,5 @@ exports.EVENT_STATUS = EVENT_STATUS;
|
|
|
36
35
|
EVENT_STATUS["FAILURE"] = "FAILURE";
|
|
37
36
|
})(EVENT_STATUS || (exports.EVENT_STATUS = EVENT_STATUS = {}));
|
|
38
37
|
|
|
39
|
-
var ACK_MAX_TRY =
|
|
38
|
+
var ACK_MAX_TRY = 30;
|
|
40
39
|
exports.ACK_MAX_TRY = ACK_MAX_TRY;
|
|
@@ -306,12 +306,14 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
306
306
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onErrorHandled", function (error) {
|
|
307
307
|
if (error && error.data) {
|
|
308
308
|
if (error.data.code === 'HEAD_VERSION_UPDATE_FAILED' || error.data.code === 'VERSION_NUMBER_ALREADY_EXISTS') {
|
|
309
|
+
var measure = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.ADD_STEPS);
|
|
309
310
|
(0, _analytics.triggerCollabAnalyticsEvent)({
|
|
310
311
|
eventAction: _const.EVENT_ACTION.ADD_STEPS,
|
|
311
312
|
attributes: {
|
|
312
313
|
eventStatus: _const.EVENT_STATUS.FAILURE,
|
|
313
314
|
error: error,
|
|
314
|
-
documentAri: _this.config.documentAri
|
|
315
|
+
documentAri: _this.config.documentAri,
|
|
316
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration
|
|
315
317
|
}
|
|
316
318
|
}, _this.analyticsClient);
|
|
317
319
|
_this.stepRejectCounter++;
|
|
@@ -581,7 +583,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
581
583
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getFinalAcknowledgedState", /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
582
584
|
var _this$metadata$title;
|
|
583
585
|
|
|
584
|
-
var maxAttemptsToSync, count, unconfirmedState, state, adfDocument, measure,
|
|
586
|
+
var maxAttemptsToSync, count, unconfirmedState, state, adfDocument, measure, _measure3;
|
|
585
587
|
|
|
586
588
|
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
587
589
|
while (1) {
|
|
@@ -597,32 +599,33 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
597
599
|
}
|
|
598
600
|
|
|
599
601
|
return _context4.delegateYield( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
600
|
-
var unconfirmedTrs, lastTr, isLastTrConfirmed, nextUnconfirmedState, nextUnconfirmedTrs, _state;
|
|
602
|
+
var unconfirmedTrs, lastTr, isLastTrConfirmed, nextUnconfirmedState, nextUnconfirmedTrs, _state, _measure2, measure;
|
|
601
603
|
|
|
602
604
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
603
605
|
while (1) {
|
|
604
606
|
switch (_context3.prev = _context3.next) {
|
|
605
607
|
case 0:
|
|
606
|
-
// We use origins here as steps can be rebased. When steps are rebased a new step is created.
|
|
608
|
+
(0, _performance.startMeasure)(_performance.MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS); // We use origins here as steps can be rebased. When steps are rebased a new step is created.
|
|
607
609
|
// This means that we can not track if it has been removed from the unconfirmed array or not.
|
|
608
610
|
// Origins points to the original transaction that the step was created in. This is never changed
|
|
609
611
|
// and gets passed down when a step is rebased.
|
|
612
|
+
|
|
610
613
|
unconfirmedTrs = unconfirmedState.origins;
|
|
611
614
|
lastTr = unconfirmedTrs[unconfirmedTrs.length - 1];
|
|
612
615
|
isLastTrConfirmed = false;
|
|
613
616
|
|
|
614
|
-
case
|
|
617
|
+
case 4:
|
|
615
618
|
if (isLastTrConfirmed) {
|
|
616
|
-
_context3.next =
|
|
619
|
+
_context3.next = 17;
|
|
617
620
|
break;
|
|
618
621
|
}
|
|
619
622
|
|
|
620
623
|
_this.sendStepsFromCurrentState();
|
|
621
624
|
|
|
622
|
-
_context3.next =
|
|
623
|
-
return (0, _utils.sleep)(
|
|
625
|
+
_context3.next = 8;
|
|
626
|
+
return (0, _utils.sleep)(1000);
|
|
624
627
|
|
|
625
|
-
case
|
|
628
|
+
case 8:
|
|
626
629
|
nextUnconfirmedState = _this.getUnconfirmedSteps();
|
|
627
630
|
|
|
628
631
|
if (nextUnconfirmedState && nextUnconfirmedState.steps.length) {
|
|
@@ -635,7 +638,7 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
635
638
|
}
|
|
636
639
|
|
|
637
640
|
if (!(!isLastTrConfirmed && count++ >= maxAttemptsToSync)) {
|
|
638
|
-
_context3.next =
|
|
641
|
+
_context3.next = 15;
|
|
639
642
|
break;
|
|
640
643
|
}
|
|
641
644
|
|
|
@@ -651,13 +654,33 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
651
654
|
});
|
|
652
655
|
}
|
|
653
656
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
657
|
+
_measure2 = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS);
|
|
658
|
+
(0, _analytics.triggerCollabAnalyticsEvent)({
|
|
659
|
+
eventAction: _const.EVENT_ACTION.COMMIT_UNCONFIRMED_STEPS,
|
|
660
|
+
attributes: {
|
|
661
|
+
eventStatus: _const.EVENT_STATUS.FAILURE,
|
|
662
|
+
latency: _measure2 === null || _measure2 === void 0 ? void 0 : _measure2.duration,
|
|
663
|
+
documentAri: _this.config.documentAri
|
|
664
|
+
}
|
|
665
|
+
}, _this.analyticsClient);
|
|
666
|
+
throw new Error("Can't sync up with Collab Service");
|
|
667
|
+
|
|
668
|
+
case 15:
|
|
669
|
+
_context3.next = 4;
|
|
658
670
|
break;
|
|
659
671
|
|
|
660
|
-
case
|
|
672
|
+
case 17:
|
|
673
|
+
measure = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS);
|
|
674
|
+
(0, _analytics.triggerCollabAnalyticsEvent)({
|
|
675
|
+
eventAction: _const.EVENT_ACTION.COMMIT_UNCONFIRMED_STEPS,
|
|
676
|
+
attributes: {
|
|
677
|
+
eventStatus: _const.EVENT_STATUS.SUCCESS,
|
|
678
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration,
|
|
679
|
+
documentAri: _this.config.documentAri
|
|
680
|
+
}
|
|
681
|
+
}, _this.analyticsClient);
|
|
682
|
+
|
|
683
|
+
case 19:
|
|
661
684
|
case "end":
|
|
662
685
|
return _context3.stop();
|
|
663
686
|
}
|
|
@@ -681,12 +704,12 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
681
704
|
}
|
|
682
705
|
}, _this.analyticsClient);
|
|
683
706
|
} catch (error) {
|
|
684
|
-
|
|
707
|
+
_measure3 = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.CONVERT_PM_TO_ADF);
|
|
685
708
|
(0, _analytics.triggerCollabAnalyticsEvent)({
|
|
686
709
|
eventAction: _const.EVENT_ACTION.CONVERT_PM_TO_ADF,
|
|
687
710
|
attributes: {
|
|
688
711
|
eventStatus: _const.EVENT_STATUS.FAILURE,
|
|
689
|
-
latency:
|
|
712
|
+
latency: _measure3 === null || _measure3 === void 0 ? void 0 : _measure3.duration,
|
|
690
713
|
error: error,
|
|
691
714
|
documentAri: _this.config.documentAri
|
|
692
715
|
}
|
|
@@ -785,11 +808,12 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
785
808
|
|
|
786
809
|
if (!steps || !steps.length) {
|
|
787
810
|
return;
|
|
788
|
-
}
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
(0, _performance.startMeasure)(_performance.MEASURE_NAME.ADD_STEPS); // Avoid reference issues using a
|
|
789
814
|
// method outside of the provider
|
|
790
815
|
// scope
|
|
791
816
|
|
|
792
|
-
|
|
793
817
|
throttledCommitStep({
|
|
794
818
|
channel: this.channel,
|
|
795
819
|
userId: this.userId,
|
|
@@ -852,14 +876,16 @@ var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
852
876
|
json: steps,
|
|
853
877
|
version: version,
|
|
854
878
|
userIds: clientIds
|
|
855
|
-
}); // If steps can apply to local editor
|
|
879
|
+
}); // If steps can apply to local editor successfully, no need to accumulate the error counter.
|
|
856
880
|
|
|
857
881
|
this.stepRejectCounter = 0;
|
|
882
|
+
var measure = (0, _performance.stopMeasure)(_performance.MEASURE_NAME.ADD_STEPS);
|
|
858
883
|
(0, _analytics.triggerCollabAnalyticsEvent)({
|
|
859
884
|
eventAction: _const.EVENT_ACTION.ADD_STEPS,
|
|
860
885
|
attributes: {
|
|
861
886
|
eventStatus: _const.EVENT_STATUS.SUCCESS,
|
|
862
|
-
documentAri: this.config.documentAri
|
|
887
|
+
documentAri: this.config.documentAri,
|
|
888
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration
|
|
863
889
|
}
|
|
864
890
|
}, this.analyticsClient);
|
|
865
891
|
this.emitTelepointersFromSteps(steps); // Resend local steps if none of the received steps originated with us!
|
|
@@ -31,6 +31,7 @@ function createSocketIOSocket(url, auth, productInfo) {
|
|
|
31
31
|
reconnectionDelayMax: _config.SOCKET_IO_OPTIONS.RECONNECTION_DELAY_MAX,
|
|
32
32
|
reconnectionDelay: _config.SOCKET_IO_OPTIONS.RECONNECTION_DELAY,
|
|
33
33
|
randomizationFactor: _config.SOCKET_IO_OPTIONS.RANDOMIZATION_FACTOR,
|
|
34
|
+
closeOnBeforeunload: false,
|
|
34
35
|
withCredentials: true,
|
|
35
36
|
transports: ['polling', 'websocket'],
|
|
36
37
|
path: "/".concat(pathname.split('/')[1], "/socket.io"),
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.version = exports.nextMajorVersion = exports.name = void 0;
|
|
7
|
+
var name = "@atlaskit/collab-provider";
|
|
8
|
+
exports.name = name;
|
|
9
|
+
var version = "7.6.3";
|
|
10
|
+
exports.version = version;
|
|
11
|
+
|
|
12
|
+
var nextMajorVersion = function nextMajorVersion() {
|
|
13
|
+
return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.nextMajorVersion = nextMajorVersion;
|
package/dist/cjs/version.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EVENT_SUBJECT, COLLAB_SERVICE } from '../helpers/const';
|
|
2
|
+
import { name as packageName, version as packageVersion } from '../version-wrapper';
|
|
2
3
|
export const fireAnalyticsEvent = (analyticsClient, payload) => {
|
|
3
4
|
if (!analyticsClient || !payload) {
|
|
4
5
|
return;
|
|
@@ -24,7 +25,8 @@ export const triggerCollabAnalyticsEvent = (analyticsEvent, analyticsClient) =>
|
|
|
24
25
|
actionSubject: EVENT_SUBJECT,
|
|
25
26
|
source: 'unknown',
|
|
26
27
|
attributes: {
|
|
27
|
-
packageName
|
|
28
|
+
packageName,
|
|
29
|
+
packageVersion,
|
|
28
30
|
collabService: COLLAB_SERVICE.NCS,
|
|
29
31
|
...analyticsEvent.attributes
|
|
30
32
|
}
|
|
@@ -5,6 +5,8 @@ export let MEASURE_NAME;
|
|
|
5
5
|
MEASURE_NAME["SOCKET_CONNECT"] = "socketConnect";
|
|
6
6
|
MEASURE_NAME["DOCUMENT_INIT"] = "documentInit";
|
|
7
7
|
MEASURE_NAME["CONVERT_PM_TO_ADF"] = "convertPMToADF";
|
|
8
|
+
MEASURE_NAME["ADD_STEPS"] = "addSteps";
|
|
9
|
+
MEASURE_NAME["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
|
|
8
10
|
})(MEASURE_NAME || (MEASURE_NAME = {}));
|
|
9
11
|
|
|
10
12
|
const isPerformanceAPIAvailable = () => {
|
package/dist/es2019/config.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export const ATTRIBUTES_PACKAGE = 'collabProvider';
|
|
2
1
|
export const EVENT_SUBJECT = 'collab';
|
|
3
2
|
export let COLLAB_SERVICE;
|
|
4
3
|
|
|
@@ -16,6 +15,7 @@ export let EVENT_ACTION;
|
|
|
16
15
|
EVENT_ACTION["ADD_STEPS"] = "addSteps";
|
|
17
16
|
EVENT_ACTION["CONVERT_PM_TO_ADF"] = "convertPMToADF";
|
|
18
17
|
EVENT_ACTION["UPDATE_PARTICIPANTS"] = "updateParticipants";
|
|
18
|
+
EVENT_ACTION["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
|
|
19
19
|
})(EVENT_ACTION || (EVENT_ACTION = {}));
|
|
20
20
|
|
|
21
21
|
export let EVENT_STATUS;
|
|
@@ -25,4 +25,4 @@ export let EVENT_STATUS;
|
|
|
25
25
|
EVENT_STATUS["FAILURE"] = "FAILURE";
|
|
26
26
|
})(EVENT_STATUS || (EVENT_STATUS = {}));
|
|
27
27
|
|
|
28
|
-
export const ACK_MAX_TRY =
|
|
28
|
+
export const ACK_MAX_TRY = 30;
|
|
@@ -216,12 +216,14 @@ export class Provider extends Emitter {
|
|
|
216
216
|
_defineProperty(this, "onErrorHandled", error => {
|
|
217
217
|
if (error && error.data) {
|
|
218
218
|
if (error.data.code === 'HEAD_VERSION_UPDATE_FAILED' || error.data.code === 'VERSION_NUMBER_ALREADY_EXISTS') {
|
|
219
|
+
const measure = stopMeasure(MEASURE_NAME.ADD_STEPS);
|
|
219
220
|
triggerCollabAnalyticsEvent({
|
|
220
221
|
eventAction: EVENT_ACTION.ADD_STEPS,
|
|
221
222
|
attributes: {
|
|
222
223
|
eventStatus: EVENT_STATUS.FAILURE,
|
|
223
224
|
error,
|
|
224
|
-
documentAri: this.config.documentAri
|
|
225
|
+
documentAri: this.config.documentAri,
|
|
226
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration
|
|
225
227
|
}
|
|
226
228
|
}, this.analyticsClient);
|
|
227
229
|
this.stepRejectCounter++;
|
|
@@ -468,17 +470,18 @@ export class Provider extends Emitter {
|
|
|
468
470
|
let unconfirmedState = this.getUnconfirmedSteps();
|
|
469
471
|
|
|
470
472
|
if (unconfirmedState && unconfirmedState.steps.length) {
|
|
471
|
-
// We use origins here as steps can be rebased. When steps are rebased a new step is created.
|
|
473
|
+
startMeasure(MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS); // We use origins here as steps can be rebased. When steps are rebased a new step is created.
|
|
472
474
|
// This means that we can not track if it has been removed from the unconfirmed array or not.
|
|
473
475
|
// Origins points to the original transaction that the step was created in. This is never changed
|
|
474
476
|
// and gets passed down when a step is rebased.
|
|
477
|
+
|
|
475
478
|
const unconfirmedTrs = unconfirmedState.origins;
|
|
476
479
|
const lastTr = unconfirmedTrs[unconfirmedTrs.length - 1];
|
|
477
480
|
let isLastTrConfirmed = false;
|
|
478
481
|
|
|
479
482
|
while (!isLastTrConfirmed) {
|
|
480
483
|
this.sendStepsFromCurrentState();
|
|
481
|
-
await sleep(
|
|
484
|
+
await sleep(1000);
|
|
482
485
|
const nextUnconfirmedState = this.getUnconfirmedSteps();
|
|
483
486
|
|
|
484
487
|
if (nextUnconfirmedState && nextUnconfirmedState.steps.length) {
|
|
@@ -500,9 +503,28 @@ export class Provider extends Emitter {
|
|
|
500
503
|
});
|
|
501
504
|
}
|
|
502
505
|
|
|
503
|
-
|
|
506
|
+
const measure = stopMeasure(MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS);
|
|
507
|
+
triggerCollabAnalyticsEvent({
|
|
508
|
+
eventAction: EVENT_ACTION.COMMIT_UNCONFIRMED_STEPS,
|
|
509
|
+
attributes: {
|
|
510
|
+
eventStatus: EVENT_STATUS.FAILURE,
|
|
511
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration,
|
|
512
|
+
documentAri: this.config.documentAri
|
|
513
|
+
}
|
|
514
|
+
}, this.analyticsClient);
|
|
515
|
+
throw new Error("Can't sync up with Collab Service");
|
|
504
516
|
}
|
|
505
517
|
}
|
|
518
|
+
|
|
519
|
+
const measure = stopMeasure(MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS);
|
|
520
|
+
triggerCollabAnalyticsEvent({
|
|
521
|
+
eventAction: EVENT_ACTION.COMMIT_UNCONFIRMED_STEPS,
|
|
522
|
+
attributes: {
|
|
523
|
+
eventStatus: EVENT_STATUS.SUCCESS,
|
|
524
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration,
|
|
525
|
+
documentAri: this.config.documentAri
|
|
526
|
+
}
|
|
527
|
+
}, this.analyticsClient);
|
|
506
528
|
}
|
|
507
529
|
|
|
508
530
|
const state = this.getState(); // Convert ProseMirror document in Editor state to ADF document
|
|
@@ -613,11 +635,12 @@ export class Provider extends Emitter {
|
|
|
613
635
|
|
|
614
636
|
if (!steps || !steps.length) {
|
|
615
637
|
return;
|
|
616
|
-
}
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
startMeasure(MEASURE_NAME.ADD_STEPS); // Avoid reference issues using a
|
|
617
641
|
// method outside of the provider
|
|
618
642
|
// scope
|
|
619
643
|
|
|
620
|
-
|
|
621
644
|
throttledCommitStep({
|
|
622
645
|
channel: this.channel,
|
|
623
646
|
userId: this.userId,
|
|
@@ -674,14 +697,16 @@ export class Provider extends Emitter {
|
|
|
674
697
|
json: steps,
|
|
675
698
|
version,
|
|
676
699
|
userIds: clientIds
|
|
677
|
-
}); // If steps can apply to local editor
|
|
700
|
+
}); // If steps can apply to local editor successfully, no need to accumulate the error counter.
|
|
678
701
|
|
|
679
702
|
this.stepRejectCounter = 0;
|
|
703
|
+
const measure = stopMeasure(MEASURE_NAME.ADD_STEPS);
|
|
680
704
|
triggerCollabAnalyticsEvent({
|
|
681
705
|
eventAction: EVENT_ACTION.ADD_STEPS,
|
|
682
706
|
attributes: {
|
|
683
707
|
eventStatus: EVENT_STATUS.SUCCESS,
|
|
684
|
-
documentAri: this.config.documentAri
|
|
708
|
+
documentAri: this.config.documentAri,
|
|
709
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration
|
|
685
710
|
}
|
|
686
711
|
}, this.analyticsClient);
|
|
687
712
|
this.emitTelepointersFromSteps(steps); // Resend local steps if none of the received steps originated with us!
|
|
@@ -11,6 +11,7 @@ export function createSocketIOSocket(url, auth, productInfo) {
|
|
|
11
11
|
reconnectionDelayMax: SOCKET_IO_OPTIONS.RECONNECTION_DELAY_MAX,
|
|
12
12
|
reconnectionDelay: SOCKET_IO_OPTIONS.RECONNECTION_DELAY,
|
|
13
13
|
randomizationFactor: SOCKET_IO_OPTIONS.RANDOMIZATION_FACTOR,
|
|
14
|
+
closeOnBeforeunload: false,
|
|
14
15
|
withCredentials: true,
|
|
15
16
|
transports: ['polling', 'websocket'],
|
|
16
17
|
path: `/${pathname.split('/')[1]}/socket.io`,
|
package/dist/es2019/version.json
CHANGED
|
@@ -4,7 +4,8 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
4
4
|
|
|
5
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
|
-
import {
|
|
7
|
+
import { EVENT_SUBJECT, COLLAB_SERVICE } from '../helpers/const';
|
|
8
|
+
import { name as packageName, version as packageVersion } from '../version-wrapper';
|
|
8
9
|
export var fireAnalyticsEvent = function fireAnalyticsEvent(analyticsClient, payload) {
|
|
9
10
|
if (!analyticsClient || !payload) {
|
|
10
11
|
return;
|
|
@@ -30,7 +31,8 @@ export var triggerCollabAnalyticsEvent = function triggerCollabAnalyticsEvent(an
|
|
|
30
31
|
actionSubject: EVENT_SUBJECT,
|
|
31
32
|
source: 'unknown',
|
|
32
33
|
attributes: _objectSpread({
|
|
33
|
-
packageName:
|
|
34
|
+
packageName: packageName,
|
|
35
|
+
packageVersion: packageVersion,
|
|
34
36
|
collabService: COLLAB_SERVICE.NCS
|
|
35
37
|
}, analyticsEvent.attributes)
|
|
36
38
|
};
|
|
@@ -5,6 +5,8 @@ export var MEASURE_NAME;
|
|
|
5
5
|
MEASURE_NAME["SOCKET_CONNECT"] = "socketConnect";
|
|
6
6
|
MEASURE_NAME["DOCUMENT_INIT"] = "documentInit";
|
|
7
7
|
MEASURE_NAME["CONVERT_PM_TO_ADF"] = "convertPMToADF";
|
|
8
|
+
MEASURE_NAME["ADD_STEPS"] = "addSteps";
|
|
9
|
+
MEASURE_NAME["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
|
|
8
10
|
})(MEASURE_NAME || (MEASURE_NAME = {}));
|
|
9
11
|
|
|
10
12
|
var isPerformanceAPIAvailable = function isPerformanceAPIAvailable() {
|
package/dist/esm/config.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export var ATTRIBUTES_PACKAGE = 'collabProvider';
|
|
2
1
|
export var EVENT_SUBJECT = 'collab';
|
|
3
2
|
export var COLLAB_SERVICE;
|
|
4
3
|
|
|
@@ -16,6 +15,7 @@ export var EVENT_ACTION;
|
|
|
16
15
|
EVENT_ACTION["ADD_STEPS"] = "addSteps";
|
|
17
16
|
EVENT_ACTION["CONVERT_PM_TO_ADF"] = "convertPMToADF";
|
|
18
17
|
EVENT_ACTION["UPDATE_PARTICIPANTS"] = "updateParticipants";
|
|
18
|
+
EVENT_ACTION["COMMIT_UNCONFIRMED_STEPS"] = "commitUnconfirmedSteps";
|
|
19
19
|
})(EVENT_ACTION || (EVENT_ACTION = {}));
|
|
20
20
|
|
|
21
21
|
export var EVENT_STATUS;
|
|
@@ -25,4 +25,4 @@ export var EVENT_STATUS;
|
|
|
25
25
|
EVENT_STATUS["FAILURE"] = "FAILURE";
|
|
26
26
|
})(EVENT_STATUS || (EVENT_STATUS = {}));
|
|
27
27
|
|
|
28
|
-
export var ACK_MAX_TRY =
|
|
28
|
+
export var ACK_MAX_TRY = 30;
|
|
@@ -283,12 +283,14 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
283
283
|
_defineProperty(_assertThisInitialized(_this), "onErrorHandled", function (error) {
|
|
284
284
|
if (error && error.data) {
|
|
285
285
|
if (error.data.code === 'HEAD_VERSION_UPDATE_FAILED' || error.data.code === 'VERSION_NUMBER_ALREADY_EXISTS') {
|
|
286
|
+
var measure = stopMeasure(MEASURE_NAME.ADD_STEPS);
|
|
286
287
|
triggerCollabAnalyticsEvent({
|
|
287
288
|
eventAction: EVENT_ACTION.ADD_STEPS,
|
|
288
289
|
attributes: {
|
|
289
290
|
eventStatus: EVENT_STATUS.FAILURE,
|
|
290
291
|
error: error,
|
|
291
|
-
documentAri: _this.config.documentAri
|
|
292
|
+
documentAri: _this.config.documentAri,
|
|
293
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration
|
|
292
294
|
}
|
|
293
295
|
}, _this.analyticsClient);
|
|
294
296
|
_this.stepRejectCounter++;
|
|
@@ -571,7 +573,7 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
571
573
|
_defineProperty(_assertThisInitialized(_this), "getFinalAcknowledgedState", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
572
574
|
var _this$metadata$title;
|
|
573
575
|
|
|
574
|
-
var maxAttemptsToSync, count, unconfirmedState, state, adfDocument, measure,
|
|
576
|
+
var maxAttemptsToSync, count, unconfirmedState, state, adfDocument, measure, _measure3;
|
|
575
577
|
|
|
576
578
|
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
577
579
|
while (1) {
|
|
@@ -587,32 +589,33 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
587
589
|
}
|
|
588
590
|
|
|
589
591
|
return _context4.delegateYield( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
590
|
-
var unconfirmedTrs, lastTr, isLastTrConfirmed, nextUnconfirmedState, nextUnconfirmedTrs, _state;
|
|
592
|
+
var unconfirmedTrs, lastTr, isLastTrConfirmed, nextUnconfirmedState, nextUnconfirmedTrs, _state, _measure2, measure;
|
|
591
593
|
|
|
592
594
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
593
595
|
while (1) {
|
|
594
596
|
switch (_context3.prev = _context3.next) {
|
|
595
597
|
case 0:
|
|
596
|
-
// We use origins here as steps can be rebased. When steps are rebased a new step is created.
|
|
598
|
+
startMeasure(MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS); // We use origins here as steps can be rebased. When steps are rebased a new step is created.
|
|
597
599
|
// This means that we can not track if it has been removed from the unconfirmed array or not.
|
|
598
600
|
// Origins points to the original transaction that the step was created in. This is never changed
|
|
599
601
|
// and gets passed down when a step is rebased.
|
|
602
|
+
|
|
600
603
|
unconfirmedTrs = unconfirmedState.origins;
|
|
601
604
|
lastTr = unconfirmedTrs[unconfirmedTrs.length - 1];
|
|
602
605
|
isLastTrConfirmed = false;
|
|
603
606
|
|
|
604
|
-
case
|
|
607
|
+
case 4:
|
|
605
608
|
if (isLastTrConfirmed) {
|
|
606
|
-
_context3.next =
|
|
609
|
+
_context3.next = 17;
|
|
607
610
|
break;
|
|
608
611
|
}
|
|
609
612
|
|
|
610
613
|
_this.sendStepsFromCurrentState();
|
|
611
614
|
|
|
612
|
-
_context3.next =
|
|
613
|
-
return sleep(
|
|
615
|
+
_context3.next = 8;
|
|
616
|
+
return sleep(1000);
|
|
614
617
|
|
|
615
|
-
case
|
|
618
|
+
case 8:
|
|
616
619
|
nextUnconfirmedState = _this.getUnconfirmedSteps();
|
|
617
620
|
|
|
618
621
|
if (nextUnconfirmedState && nextUnconfirmedState.steps.length) {
|
|
@@ -625,7 +628,7 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
625
628
|
}
|
|
626
629
|
|
|
627
630
|
if (!(!isLastTrConfirmed && count++ >= maxAttemptsToSync)) {
|
|
628
|
-
_context3.next =
|
|
631
|
+
_context3.next = 15;
|
|
629
632
|
break;
|
|
630
633
|
}
|
|
631
634
|
|
|
@@ -641,13 +644,33 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
641
644
|
});
|
|
642
645
|
}
|
|
643
646
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
647
|
+
_measure2 = stopMeasure(MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS);
|
|
648
|
+
triggerCollabAnalyticsEvent({
|
|
649
|
+
eventAction: EVENT_ACTION.COMMIT_UNCONFIRMED_STEPS,
|
|
650
|
+
attributes: {
|
|
651
|
+
eventStatus: EVENT_STATUS.FAILURE,
|
|
652
|
+
latency: _measure2 === null || _measure2 === void 0 ? void 0 : _measure2.duration,
|
|
653
|
+
documentAri: _this.config.documentAri
|
|
654
|
+
}
|
|
655
|
+
}, _this.analyticsClient);
|
|
656
|
+
throw new Error("Can't sync up with Collab Service");
|
|
657
|
+
|
|
658
|
+
case 15:
|
|
659
|
+
_context3.next = 4;
|
|
648
660
|
break;
|
|
649
661
|
|
|
650
|
-
case
|
|
662
|
+
case 17:
|
|
663
|
+
measure = stopMeasure(MEASURE_NAME.COMMIT_UNCONFIRMED_STEPS);
|
|
664
|
+
triggerCollabAnalyticsEvent({
|
|
665
|
+
eventAction: EVENT_ACTION.COMMIT_UNCONFIRMED_STEPS,
|
|
666
|
+
attributes: {
|
|
667
|
+
eventStatus: EVENT_STATUS.SUCCESS,
|
|
668
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration,
|
|
669
|
+
documentAri: _this.config.documentAri
|
|
670
|
+
}
|
|
671
|
+
}, _this.analyticsClient);
|
|
672
|
+
|
|
673
|
+
case 19:
|
|
651
674
|
case "end":
|
|
652
675
|
return _context3.stop();
|
|
653
676
|
}
|
|
@@ -671,12 +694,12 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
671
694
|
}
|
|
672
695
|
}, _this.analyticsClient);
|
|
673
696
|
} catch (error) {
|
|
674
|
-
|
|
697
|
+
_measure3 = stopMeasure(MEASURE_NAME.CONVERT_PM_TO_ADF);
|
|
675
698
|
triggerCollabAnalyticsEvent({
|
|
676
699
|
eventAction: EVENT_ACTION.CONVERT_PM_TO_ADF,
|
|
677
700
|
attributes: {
|
|
678
701
|
eventStatus: EVENT_STATUS.FAILURE,
|
|
679
|
-
latency:
|
|
702
|
+
latency: _measure3 === null || _measure3 === void 0 ? void 0 : _measure3.duration,
|
|
680
703
|
error: error,
|
|
681
704
|
documentAri: _this.config.documentAri
|
|
682
705
|
}
|
|
@@ -776,11 +799,12 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
776
799
|
|
|
777
800
|
if (!steps || !steps.length) {
|
|
778
801
|
return;
|
|
779
|
-
}
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
startMeasure(MEASURE_NAME.ADD_STEPS); // Avoid reference issues using a
|
|
780
805
|
// method outside of the provider
|
|
781
806
|
// scope
|
|
782
807
|
|
|
783
|
-
|
|
784
808
|
throttledCommitStep({
|
|
785
809
|
channel: this.channel,
|
|
786
810
|
userId: this.userId,
|
|
@@ -843,14 +867,16 @@ export var Provider = /*#__PURE__*/function (_Emitter) {
|
|
|
843
867
|
json: steps,
|
|
844
868
|
version: version,
|
|
845
869
|
userIds: clientIds
|
|
846
|
-
}); // If steps can apply to local editor
|
|
870
|
+
}); // If steps can apply to local editor successfully, no need to accumulate the error counter.
|
|
847
871
|
|
|
848
872
|
this.stepRejectCounter = 0;
|
|
873
|
+
var measure = stopMeasure(MEASURE_NAME.ADD_STEPS);
|
|
849
874
|
triggerCollabAnalyticsEvent({
|
|
850
875
|
eventAction: EVENT_ACTION.ADD_STEPS,
|
|
851
876
|
attributes: {
|
|
852
877
|
eventStatus: EVENT_STATUS.SUCCESS,
|
|
853
|
-
documentAri: this.config.documentAri
|
|
878
|
+
documentAri: this.config.documentAri,
|
|
879
|
+
latency: measure === null || measure === void 0 ? void 0 : measure.duration
|
|
854
880
|
}
|
|
855
881
|
}, this.analyticsClient);
|
|
856
882
|
this.emitTelepointersFromSteps(steps); // Resend local steps if none of the received steps originated with us!
|
|
@@ -17,6 +17,7 @@ export function createSocketIOSocket(url, auth, productInfo) {
|
|
|
17
17
|
reconnectionDelayMax: SOCKET_IO_OPTIONS.RECONNECTION_DELAY_MAX,
|
|
18
18
|
reconnectionDelay: SOCKET_IO_OPTIONS.RECONNECTION_DELAY,
|
|
19
19
|
randomizationFactor: SOCKET_IO_OPTIONS.RANDOMIZATION_FACTOR,
|
|
20
|
+
closeOnBeforeunload: false,
|
|
20
21
|
withCredentials: true,
|
|
21
22
|
transports: ['polling', 'websocket'],
|
|
22
23
|
path: "/".concat(pathname.split('/')[1], "/socket.io"),
|
package/dist/esm/version.json
CHANGED
|
@@ -2,7 +2,9 @@ export declare enum MEASURE_NAME {
|
|
|
2
2
|
CALLING_CATCHUP_API = "callingCatchupApi",
|
|
3
3
|
SOCKET_CONNECT = "socketConnect",
|
|
4
4
|
DOCUMENT_INIT = "documentInit",
|
|
5
|
-
CONVERT_PM_TO_ADF = "convertPMToADF"
|
|
5
|
+
CONVERT_PM_TO_ADF = "convertPMToADF",
|
|
6
|
+
ADD_STEPS = "addSteps",
|
|
7
|
+
COMMIT_UNCONFIRMED_STEPS = "commitUnconfirmedSteps"
|
|
6
8
|
}
|
|
7
9
|
export declare function startMeasure(measureName: MEASURE_NAME): void;
|
|
8
10
|
export declare function stopMeasure(measureName: MEASURE_NAME, onMeasureComplete?: (duration: number, startTime: number) => void): {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ErrorPayload } from '../types';
|
|
2
|
-
export declare const ATTRIBUTES_PACKAGE = "collabProvider";
|
|
3
2
|
export declare const EVENT_SUBJECT = "collab";
|
|
4
3
|
export declare enum COLLAB_SERVICE {
|
|
5
4
|
NCS = "ncs",
|
|
@@ -11,7 +10,8 @@ export declare enum EVENT_ACTION {
|
|
|
11
10
|
DOCUMENT_INIT = "documentInit",
|
|
12
11
|
ADD_STEPS = "addSteps",
|
|
13
12
|
CONVERT_PM_TO_ADF = "convertPMToADF",
|
|
14
|
-
UPDATE_PARTICIPANTS = "updateParticipants"
|
|
13
|
+
UPDATE_PARTICIPANTS = "updateParticipants",
|
|
14
|
+
COMMIT_UNCONFIRMED_STEPS = "commitUnconfirmedSteps"
|
|
15
15
|
}
|
|
16
16
|
export declare enum EVENT_STATUS {
|
|
17
17
|
SUCCESS = "SUCCESS",
|
|
@@ -28,4 +28,4 @@ export declare type AnalyticsEvent = {
|
|
|
28
28
|
participants?: number;
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
-
export declare const ACK_MAX_TRY =
|
|
31
|
+
export declare const ACK_MAX_TRY = 30;
|
|
@@ -2,7 +2,9 @@ export declare enum MEASURE_NAME {
|
|
|
2
2
|
CALLING_CATCHUP_API = "callingCatchupApi",
|
|
3
3
|
SOCKET_CONNECT = "socketConnect",
|
|
4
4
|
DOCUMENT_INIT = "documentInit",
|
|
5
|
-
CONVERT_PM_TO_ADF = "convertPMToADF"
|
|
5
|
+
CONVERT_PM_TO_ADF = "convertPMToADF",
|
|
6
|
+
ADD_STEPS = "addSteps",
|
|
7
|
+
COMMIT_UNCONFIRMED_STEPS = "commitUnconfirmedSteps"
|
|
6
8
|
}
|
|
7
9
|
export declare function startMeasure(measureName: MEASURE_NAME): void;
|
|
8
10
|
export declare function stopMeasure(measureName: MEASURE_NAME, onMeasureComplete?: (duration: number, startTime: number) => void): {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ErrorPayload } from '../types';
|
|
2
|
-
export declare const ATTRIBUTES_PACKAGE = "collabProvider";
|
|
3
2
|
export declare const EVENT_SUBJECT = "collab";
|
|
4
3
|
export declare enum COLLAB_SERVICE {
|
|
5
4
|
NCS = "ncs",
|
|
@@ -11,7 +10,8 @@ export declare enum EVENT_ACTION {
|
|
|
11
10
|
DOCUMENT_INIT = "documentInit",
|
|
12
11
|
ADD_STEPS = "addSteps",
|
|
13
12
|
CONVERT_PM_TO_ADF = "convertPMToADF",
|
|
14
|
-
UPDATE_PARTICIPANTS = "updateParticipants"
|
|
13
|
+
UPDATE_PARTICIPANTS = "updateParticipants",
|
|
14
|
+
COMMIT_UNCONFIRMED_STEPS = "commitUnconfirmedSteps"
|
|
15
15
|
}
|
|
16
16
|
export declare enum EVENT_STATUS {
|
|
17
17
|
SUCCESS = "SUCCESS",
|
|
@@ -28,4 +28,4 @@ export declare type AnalyticsEvent = {
|
|
|
28
28
|
participants?: number;
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
-
export declare const ACK_MAX_TRY =
|
|
31
|
+
export declare const ACK_MAX_TRY = 30;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/collab-provider",
|
|
3
|
-
"version": "7.6.
|
|
3
|
+
"version": "7.6.3",
|
|
4
4
|
"description": "A provider for collaborative editing.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"typesVersions": {
|
|
16
16
|
">=4.0 <4.5": {
|
|
17
17
|
"*": [
|
|
18
|
-
"dist/types-ts4.0/*"
|
|
18
|
+
"dist/types-ts4.0/*",
|
|
19
|
+
"dist/types-ts4.0/index.d.ts"
|
|
19
20
|
]
|
|
20
21
|
}
|
|
21
22
|
},
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"dependencies": {
|
|
31
32
|
"@atlaskit/analytics-gas-types": "5.0.9",
|
|
32
33
|
"@atlaskit/analytics-listeners": "^8.3.0",
|
|
33
|
-
"@atlaskit/editor-common": "^70.
|
|
34
|
+
"@atlaskit/editor-common": "^70.2.0",
|
|
34
35
|
"@atlaskit/editor-json-transformer": "^8.8.0",
|
|
35
36
|
"@atlaskit/util-service-support": "^6.1.0",
|
|
36
37
|
"@babel/runtime": "^7.0.0",
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
"prosemirror-collab": "^1.2.2",
|
|
40
41
|
"prosemirror-state": "1.3.4",
|
|
41
42
|
"prosemirror-transform": "1.3.2",
|
|
42
|
-
"socket.io-client": "^4.
|
|
43
|
+
"socket.io-client": "^4.1.3"
|
|
43
44
|
},
|
|
44
45
|
"techstack": {
|
|
45
46
|
"@atlassian/frontend": {
|
|
@@ -47,7 +48,10 @@
|
|
|
47
48
|
},
|
|
48
49
|
"@repo/internal": {
|
|
49
50
|
"deprecation": "no-deprecated-imports",
|
|
50
|
-
"theming": "tokens"
|
|
51
|
+
"theming": "tokens",
|
|
52
|
+
"styling": [
|
|
53
|
+
"emotion"
|
|
54
|
+
]
|
|
51
55
|
}
|
|
52
56
|
},
|
|
53
57
|
"devDependencies": {
|
package/report.api.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
## API Report File for "@atlaskit/collab-provider"
|
|
1
|
+
## API Report File for "@atlaskit/collab-provider"
|
|
2
2
|
|
|
3
|
-
> Do not edit this file.
|
|
3
|
+
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
|
|
4
|
+
|
|
5
|
+
<!--
|
|
6
|
+
Generated API Report version: 2.0
|
|
7
|
+
-->
|
|
4
8
|
|
|
5
9
|
[Learn more about API reports](https://hello.atlassian.net/wiki/spaces/UR/pages/1825484529/Package+API+Reports)
|
|
6
10
|
|
|
@@ -20,73 +24,108 @@ import type { Step } from 'prosemirror-transform';
|
|
|
20
24
|
import { SyncUpErrorFunction } from '@atlaskit/editor-common/types';
|
|
21
25
|
import { Transaction } from 'prosemirror-state';
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
// @public (undocumented)
|
|
28
|
+
type BaseEvents = Pick<
|
|
24
29
|
CollabEditProvider<CollabEvents>,
|
|
25
30
|
'setup' | 'send' | 'sendMessage'
|
|
26
31
|
>;
|
|
27
32
|
|
|
28
|
-
|
|
33
|
+
// @public (undocumented)
|
|
34
|
+
export type CollabConnectedPayload = CollabEventConnectionData;
|
|
29
35
|
|
|
30
|
-
|
|
31
|
-
|
|
36
|
+
// @public (undocumented)
|
|
37
|
+
export interface CollabDataPayload extends CollabEventRemoteData {
|
|
38
|
+
// (undocumented)
|
|
32
39
|
json: StepJson[];
|
|
40
|
+
// (undocumented)
|
|
33
41
|
userIds: string[];
|
|
42
|
+
// (undocumented)
|
|
43
|
+
version: number;
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
|
|
46
|
+
// @public (undocumented)
|
|
47
|
+
export interface CollabDisconnectedPayload {
|
|
48
|
+
// (undocumented)
|
|
37
49
|
reason: DisconnectReason;
|
|
50
|
+
// (undocumented)
|
|
38
51
|
sid: string;
|
|
39
52
|
}
|
|
40
53
|
|
|
41
|
-
|
|
42
|
-
|
|
54
|
+
// @public (undocumented)
|
|
55
|
+
export interface CollabErrorPayload {
|
|
56
|
+
// (undocumented)
|
|
43
57
|
code: string;
|
|
58
|
+
// (undocumented)
|
|
44
59
|
message: string;
|
|
60
|
+
// (undocumented)
|
|
45
61
|
reason?: string;
|
|
62
|
+
// (undocumented)
|
|
63
|
+
status: number;
|
|
46
64
|
}
|
|
47
65
|
|
|
48
|
-
|
|
66
|
+
// @public (undocumented)
|
|
67
|
+
export interface CollabEvents {
|
|
68
|
+
// (undocumented)
|
|
69
|
+
'local-steps': CollabLocalStepsPayload;
|
|
70
|
+
// (undocumented)
|
|
49
71
|
'metadata:changed': CollabMetadataPayload;
|
|
50
|
-
|
|
72
|
+
// (undocumented)
|
|
51
73
|
connected: CollabConnectedPayload;
|
|
52
|
-
|
|
74
|
+
// (undocumented)
|
|
53
75
|
data: CollabDataPayload;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
error: CollabErrorPayload;
|
|
76
|
+
// (undocumented)
|
|
77
|
+
disconnected: CollabDisconnectedPayload;
|
|
78
|
+
// (undocumented)
|
|
58
79
|
entity: any;
|
|
80
|
+
// (undocumented)
|
|
81
|
+
error: CollabErrorPayload;
|
|
82
|
+
// (undocumented)
|
|
83
|
+
init: CollabInitPayload;
|
|
84
|
+
// (undocumented)
|
|
85
|
+
presence: CollabPresencePayload;
|
|
86
|
+
// (undocumented)
|
|
87
|
+
telepointer: CollabTelepointerPayload;
|
|
59
88
|
}
|
|
60
89
|
|
|
61
|
-
|
|
90
|
+
// @public (undocumented)
|
|
91
|
+
export interface CollabInitPayload extends CollabEventInitData {
|
|
92
|
+
// (undocumented)
|
|
62
93
|
doc: any;
|
|
63
|
-
|
|
64
|
-
userId?: string;
|
|
94
|
+
// (undocumented)
|
|
65
95
|
metadata?: Metadata_2;
|
|
96
|
+
// (undocumented)
|
|
97
|
+
userId?: string;
|
|
98
|
+
// (undocumented)
|
|
99
|
+
version: number;
|
|
66
100
|
}
|
|
67
101
|
|
|
68
|
-
|
|
102
|
+
// @public (undocumented)
|
|
103
|
+
export type CollabLocalStepsPayload = {
|
|
69
104
|
steps: Step[];
|
|
70
105
|
};
|
|
71
106
|
|
|
72
|
-
|
|
107
|
+
// @public (undocumented)
|
|
108
|
+
export type CollabMetadataPayload = Metadata_2;
|
|
73
109
|
|
|
74
|
-
|
|
110
|
+
// @public (undocumented)
|
|
111
|
+
export type CollabPresencePayload = CollabEventPresenceData;
|
|
75
112
|
|
|
76
|
-
|
|
113
|
+
// @public (undocumented)
|
|
114
|
+
export type CollabTelepointerPayload = CollabEventTelepointerData;
|
|
77
115
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
need404?: boolean;
|
|
116
|
+
// @public (undocumented)
|
|
117
|
+
interface Config {
|
|
118
|
+
// (undocumented)
|
|
119
|
+
analyticsClient?: AnalyticsWebClient;
|
|
120
|
+
// (undocumented)
|
|
84
121
|
createSocket: (
|
|
85
122
|
path: string,
|
|
86
123
|
auth?: (cb: (data: object) => void) => void,
|
|
87
124
|
productInfo?: ProductInformation,
|
|
88
125
|
) => Socket;
|
|
89
|
-
|
|
126
|
+
// (undocumented)
|
|
127
|
+
documentAri: string;
|
|
128
|
+
// (undocumented)
|
|
90
129
|
getUser?(
|
|
91
130
|
userId: string,
|
|
92
131
|
): Promise<
|
|
@@ -94,194 +133,123 @@ declare interface Config {
|
|
|
94
133
|
userId: string;
|
|
95
134
|
}
|
|
96
135
|
>;
|
|
136
|
+
// (undocumented)
|
|
137
|
+
lifecycle?: Lifecycle;
|
|
138
|
+
// (undocumented)
|
|
139
|
+
need404?: boolean;
|
|
140
|
+
// (undocumented)
|
|
97
141
|
permissionTokenRefresh?: () => Promise<string>;
|
|
142
|
+
// (undocumented)
|
|
98
143
|
productInfo?: ProductInformation;
|
|
144
|
+
// (undocumented)
|
|
145
|
+
storage?: Storage_2;
|
|
146
|
+
// (undocumented)
|
|
147
|
+
url: string;
|
|
99
148
|
}
|
|
100
149
|
|
|
101
|
-
|
|
150
|
+
// @public (undocumented)
|
|
151
|
+
enum DisconnectReason {
|
|
152
|
+
// (undocumented)
|
|
102
153
|
CLIENT_DISCONNECT = 'CLIENT_DISCONNECT',
|
|
154
|
+
// (undocumented)
|
|
103
155
|
SERVER_DISCONNECT = 'SERVER_DISCONNECT',
|
|
156
|
+
// (undocumented)
|
|
104
157
|
SOCKET_CLOSED = 'SOCKET_CLOSED',
|
|
158
|
+
// (undocumented)
|
|
105
159
|
SOCKET_ERROR = 'SOCKET_ERROR',
|
|
160
|
+
// (undocumented)
|
|
106
161
|
SOCKET_TIMEOUT = 'SOCKET_TIMEOUT',
|
|
162
|
+
// (undocumented)
|
|
107
163
|
UNKNOWN_DISCONNECT = 'UNKNOWN_DISCONNECT',
|
|
108
164
|
}
|
|
109
165
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Emit events to subscribers
|
|
114
|
-
*/
|
|
166
|
+
// @public (undocumented)
|
|
167
|
+
class Emitter<T = any> {
|
|
115
168
|
protected emit<K extends keyof T>(evt: K, data: T[K]): this;
|
|
116
|
-
/**
|
|
117
|
-
* Subscribe to events emitted by this provider
|
|
118
|
-
*/
|
|
119
|
-
on<K extends keyof T>(evt: K, handler: (args: T[K]) => void): this;
|
|
120
|
-
/**
|
|
121
|
-
* Unsubscribe from events emitted by this provider
|
|
122
|
-
*/
|
|
123
169
|
off<K extends keyof T>(evt: K, handler: (args: T[K]) => void): this;
|
|
124
|
-
|
|
125
|
-
* Unsubscribe from all events emitted by this provider.
|
|
126
|
-
*/
|
|
170
|
+
on<K extends keyof T>(evt: K, handler: (args: T[K]) => void): this;
|
|
127
171
|
unsubscribeAll<K extends keyof T>(evt?: K): this;
|
|
128
172
|
}
|
|
129
173
|
|
|
130
|
-
|
|
174
|
+
// @public (undocumented)
|
|
175
|
+
type EventHandler = () => void;
|
|
131
176
|
|
|
132
|
-
|
|
177
|
+
// @public (undocumented)
|
|
178
|
+
interface Lifecycle {
|
|
179
|
+
// (undocumented)
|
|
133
180
|
on(event: LifecycleEvents, handler: EventHandler): void;
|
|
134
181
|
}
|
|
135
182
|
|
|
136
|
-
|
|
183
|
+
// @public (undocumented)
|
|
184
|
+
type LifecycleEvents = 'save' | 'restore';
|
|
137
185
|
|
|
138
|
-
|
|
186
|
+
// @public (undocumented)
|
|
187
|
+
interface Metadata_2 {
|
|
188
|
+
// (undocumented)
|
|
139
189
|
[key: string]: string | number | boolean;
|
|
140
190
|
}
|
|
141
191
|
|
|
142
|
-
|
|
192
|
+
// @public (undocumented)
|
|
193
|
+
type ProductInformation = {
|
|
143
194
|
product: string;
|
|
144
195
|
subProduct?: string;
|
|
145
196
|
};
|
|
146
197
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
implements BaseEvents {
|
|
150
|
-
private participants;
|
|
151
|
-
private channel;
|
|
152
|
-
private config;
|
|
153
|
-
private getState;
|
|
154
|
-
private metadata;
|
|
155
|
-
private stepRejectCounter;
|
|
156
|
-
private analyticsClient?;
|
|
157
|
-
private isChannelInitialized;
|
|
158
|
-
private onSyncUpError?;
|
|
159
|
-
private sessionId?;
|
|
160
|
-
private clientId?;
|
|
161
|
-
private userId?;
|
|
162
|
-
private participantUpdateTimeout?;
|
|
163
|
-
private presenceUpdateTimeout?;
|
|
164
|
-
private disconnectedAt?;
|
|
198
|
+
// @public (undocumented)
|
|
199
|
+
export class Provider extends Emitter<CollabEvents> implements BaseEvents {
|
|
165
200
|
constructor(config: Config);
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
201
|
+
// (undocumented)
|
|
202
|
+
destroy(): this;
|
|
203
|
+
// (undocumented)
|
|
204
|
+
disconnect(): this;
|
|
205
|
+
// (undocumented)
|
|
206
|
+
getFinalAcknowledgedState: () => Promise<ResolvedEditorState>;
|
|
171
207
|
initialize(getState: () => EditorState): this;
|
|
172
|
-
setup({
|
|
173
|
-
getState,
|
|
174
|
-
onSyncUpError,
|
|
175
|
-
}: {
|
|
176
|
-
getState: () => EditorState;
|
|
177
|
-
onSyncUpError?: SyncUpErrorFunction;
|
|
178
|
-
}): this;
|
|
179
|
-
/**
|
|
180
|
-
* We can use this function to throttle/delay
|
|
181
|
-
* Any send steps operation
|
|
182
|
-
*
|
|
183
|
-
* The getState function will return the current EditorState
|
|
184
|
-
* from the EditorView.
|
|
185
|
-
*/
|
|
186
|
-
private sendStepsFromCurrentState;
|
|
187
|
-
/**
|
|
188
|
-
* Send steps from transaction to other participants
|
|
189
|
-
*/
|
|
190
208
|
send(
|
|
191
209
|
_tr: Transaction | null,
|
|
192
210
|
_oldState: EditorState | null,
|
|
193
211
|
newState: EditorState,
|
|
194
212
|
): void;
|
|
195
|
-
/**
|
|
196
|
-
* Called when we receive steps from the service
|
|
197
|
-
*/
|
|
198
|
-
private onStepsAdded;
|
|
199
|
-
private throttledCatchup;
|
|
200
|
-
private fitlerQueue;
|
|
201
|
-
private updateDocumentWithMetadata;
|
|
202
|
-
private applyLocalsteps;
|
|
203
|
-
private getCurrentPmVersion;
|
|
204
|
-
private getUnconfirmedSteps;
|
|
205
|
-
/**
|
|
206
|
-
* Called when:
|
|
207
|
-
* * session established(offline -> online)
|
|
208
|
-
* * try to accept steps but version is behind.
|
|
209
|
-
*/
|
|
210
|
-
private catchup;
|
|
211
|
-
private onErrorHandled;
|
|
212
|
-
private pauseQueue?;
|
|
213
|
-
private queue;
|
|
214
|
-
private queueSteps;
|
|
215
|
-
private processQueue;
|
|
216
|
-
private processSteps;
|
|
217
|
-
/**
|
|
218
|
-
* Send messages, such as telepointers, to other participants.
|
|
219
|
-
*/
|
|
220
213
|
sendMessage(data: any): void;
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Called when a participant joins the session.
|
|
224
|
-
*
|
|
225
|
-
* We keep track of participants internally in this class, and emit the `presence` event to update
|
|
226
|
-
* the active avatars in the editor.
|
|
227
|
-
* This method will be triggered from backend to notify all participants to exchange presence
|
|
228
|
-
*
|
|
229
|
-
*/
|
|
230
|
-
private onPresenceJoined;
|
|
231
|
-
private onPresence;
|
|
232
|
-
/**
|
|
233
|
-
* Called when a metadata is changed.
|
|
234
|
-
*
|
|
235
|
-
*/
|
|
236
|
-
private onMetadataChanged;
|
|
237
|
-
/**
|
|
238
|
-
* Called when a participant leaves the session.
|
|
239
|
-
*
|
|
240
|
-
* We emit the `presence` event to update the active avatars in the editor.
|
|
241
|
-
*/
|
|
242
|
-
private onParticipantLeft;
|
|
243
|
-
/**
|
|
244
|
-
* Called when we receive an update event from another participant.
|
|
245
|
-
*/
|
|
246
|
-
private onParticipantUpdated;
|
|
247
|
-
/**
|
|
248
|
-
* Called when we receive a telepointer update from another
|
|
249
|
-
* participant.
|
|
250
|
-
*/
|
|
251
|
-
private onParticipantTelepointer;
|
|
252
|
-
private updateParticipant;
|
|
253
|
-
/**
|
|
254
|
-
* Keep list of participants up to date. Filter out inactive users etc.
|
|
255
|
-
*/
|
|
256
|
-
private updateParticipants;
|
|
257
|
-
private emitTelepointersFromSteps;
|
|
258
|
-
private disconnectedReasonMapper;
|
|
259
|
-
private onDisconnected;
|
|
260
|
-
destroy(): this;
|
|
261
|
-
disconnect(): this;
|
|
262
|
-
setTitle(title: string, broadcast?: boolean): void;
|
|
214
|
+
// (undocumented)
|
|
263
215
|
setEditorWidth(editorWidth: string, broadcast?: boolean): void;
|
|
216
|
+
// (undocumented)
|
|
264
217
|
setMetadata(metadata: Metadata_2): void;
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
218
|
+
// (undocumented)
|
|
219
|
+
setTitle(title: string, broadcast?: boolean): void;
|
|
220
|
+
// (undocumented)
|
|
221
|
+
setup({
|
|
222
|
+
getState,
|
|
223
|
+
onSyncUpError,
|
|
224
|
+
}: {
|
|
225
|
+
getState: () => EditorState;
|
|
226
|
+
onSyncUpError?: SyncUpErrorFunction;
|
|
227
|
+
}): this;
|
|
269
228
|
unsubscribeAll(): this;
|
|
270
229
|
}
|
|
271
230
|
|
|
272
|
-
|
|
231
|
+
// @public (undocumented)
|
|
232
|
+
interface SimpleEventEmitter {
|
|
233
|
+
// (undocumented)
|
|
273
234
|
on(event: string, fn: Function): SimpleEventEmitter;
|
|
274
235
|
}
|
|
275
236
|
|
|
276
|
-
|
|
277
|
-
|
|
237
|
+
// @public (undocumented)
|
|
238
|
+
export interface Socket extends SimpleEventEmitter {
|
|
239
|
+
// (undocumented)
|
|
240
|
+
close(): Socket;
|
|
241
|
+
// (undocumented)
|
|
278
242
|
connect(): Socket;
|
|
243
|
+
// (undocumented)
|
|
279
244
|
emit(event: string, ...args: any[]): Socket;
|
|
280
|
-
|
|
245
|
+
// (undocumented)
|
|
246
|
+
id: string;
|
|
247
|
+
// (undocumented)
|
|
281
248
|
io?: Manager;
|
|
282
249
|
}
|
|
283
250
|
|
|
284
|
-
|
|
251
|
+
// @public (undocumented)
|
|
252
|
+
type StepJson = {
|
|
285
253
|
from?: number;
|
|
286
254
|
to?: number;
|
|
287
255
|
stepType?: string;
|
|
@@ -289,11 +257,15 @@ declare type StepJson = {
|
|
|
289
257
|
userId: string;
|
|
290
258
|
};
|
|
291
259
|
|
|
292
|
-
|
|
260
|
+
// @public (undocumented)
|
|
261
|
+
interface Storage_2 {
|
|
262
|
+
// (undocumented)
|
|
263
|
+
delete(key: string): Promise<void>;
|
|
264
|
+
// (undocumented)
|
|
293
265
|
get(key: string): Promise<string>;
|
|
266
|
+
// (undocumented)
|
|
294
267
|
set(key: string, value: string): Promise<void>;
|
|
295
|
-
delete(key: string): Promise<void>;
|
|
296
268
|
}
|
|
297
269
|
|
|
298
|
-
|
|
270
|
+
// (No @packageDocumentation comment for this package)
|
|
299
271
|
```
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/collab-provider/version-wrapper",
|
|
3
|
+
"main": "../dist/cjs/version-wrapper.js",
|
|
4
|
+
"module": "../dist/esm/version-wrapper.js",
|
|
5
|
+
"module:es2019": "../dist/es2019/version-wrapper.js",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"types": "../dist/types/version-wrapper.d.ts",
|
|
8
|
+
"typesVersions": {
|
|
9
|
+
">=4.0 <4.5": {
|
|
10
|
+
"*": [
|
|
11
|
+
"../dist/types-ts4.0/version-wrapper.d.ts"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|