@atlaskit/editor-plugin-collab-edit 3.1.0 → 3.2.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.
- package/CHANGELOG.md +20 -0
- package/dist/cjs/pm-plugins/mergeUnconfirmed.js +12 -41
- package/dist/es2019/pm-plugins/mergeUnconfirmed.js +12 -30
- package/dist/esm/pm-plugins/mergeUnconfirmed.js +12 -41
- package/dist/types/pm-plugins/mergeUnconfirmed.d.ts +2 -6
- package/dist/types-ts4.5/pm-plugins/mergeUnconfirmed.d.ts +2 -6
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-collab-edit
|
|
2
2
|
|
|
3
|
+
## 3.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#120472](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/120472)
|
|
8
|
+
[`73c800ab5f2fc`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/73c800ab5f2fc) -
|
|
9
|
+
ED-26766 update adf-schema from 47.2.1 to 47.6.0 and adf-schema-json from 1.27.0 to 1.31.0
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
|
|
15
|
+
## 3.1.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [#120905](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/120905)
|
|
20
|
+
[`4194ea903d7d6`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4194ea903d7d6) -
|
|
21
|
+
Refactor step merging while offline.
|
|
22
|
+
|
|
3
23
|
## 3.1.0
|
|
4
24
|
|
|
5
25
|
### Minor Changes
|
|
@@ -5,38 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.mergeUnconfirmedSteps = mergeUnconfirmedSteps;
|
|
8
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
9
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
10
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
11
8
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
var
|
|
14
|
-
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
15
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
16
|
-
function isLockable(step) {
|
|
17
|
-
return (step === null || step === void 0 ? void 0 : step.lockStep) !== undefined;
|
|
18
|
-
}
|
|
19
|
-
var createLockableProseMirrorStep = function createLockableProseMirrorStep(step) {
|
|
20
|
-
var stepIsLocked = false;
|
|
21
|
-
if (isLockable(step)) {
|
|
22
|
-
return step;
|
|
23
|
-
}
|
|
24
|
-
return new Proxy(step, {
|
|
25
|
-
get: function get(target, prop, receiver) {
|
|
26
|
-
if (prop === 'lockStep') {
|
|
27
|
-
return function () {
|
|
28
|
-
stepIsLocked = true;
|
|
29
|
-
};
|
|
30
|
-
} else if (prop === 'isLocked') {
|
|
31
|
-
return function () {
|
|
32
|
-
return stepIsLocked;
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
return Reflect.get(target, prop, receiver);
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
};
|
|
39
|
-
|
|
10
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
40
11
|
// Based on: `packages/editor/prosemirror-collab/src/index.ts`
|
|
41
12
|
var LockableRebaseable = /*#__PURE__*/(0, _createClass2.default)(function LockableRebaseable(step, inverted, origin) {
|
|
42
13
|
(0, _classCallCheck2.default)(this, LockableRebaseable);
|
|
@@ -44,14 +15,13 @@ var LockableRebaseable = /*#__PURE__*/(0, _createClass2.default)(function Lockab
|
|
|
44
15
|
this.inverted = inverted;
|
|
45
16
|
this.origin = origin;
|
|
46
17
|
});
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return _callSuper(this, LockableProseMirrorStep, arguments);
|
|
18
|
+
var isLocked = function isLocked(step) {
|
|
19
|
+
if (step.origin instanceof _state.Transaction) {
|
|
20
|
+
return step.origin.getMeta('mergeIsLocked');
|
|
51
21
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
22
|
+
return false;
|
|
23
|
+
};
|
|
24
|
+
|
|
55
25
|
/**
|
|
56
26
|
* Merge a set of steps together to reduce the total number of steps stored in memory.
|
|
57
27
|
*
|
|
@@ -64,9 +34,10 @@ var LockableProseMirrorStep = /*#__PURE__*/function (_ProseMirrorStep) {
|
|
|
64
34
|
*/
|
|
65
35
|
function mergeUnconfirmedSteps(steps, api) {
|
|
66
36
|
var mergedSteps = steps.reduce(function (acc, rebaseable) {
|
|
67
|
-
var _api$connectivity
|
|
37
|
+
var _api$connectivity;
|
|
68
38
|
var lastStep = acc[acc.length - 1];
|
|
69
|
-
|
|
39
|
+
var isOffline = (api === null || api === void 0 || (_api$connectivity = api.connectivity) === null || _api$connectivity === void 0 || (_api$connectivity = _api$connectivity.sharedState.currentState()) === null || _api$connectivity === void 0 ? void 0 : _api$connectivity.mode) === 'offline';
|
|
40
|
+
if (isOffline && lastStep && !isLocked(lastStep) && !isLocked(rebaseable)) {
|
|
70
41
|
var mergedStep = lastStep.step.merge(rebaseable.step);
|
|
71
42
|
var _inverted = rebaseable.inverted.merge(lastStep.inverted);
|
|
72
43
|
// Always take the origin of the new step.
|
|
@@ -75,11 +46,11 @@ function mergeUnconfirmedSteps(steps, api) {
|
|
|
75
46
|
// As we want to wait until all the transactions have been pushed through
|
|
76
47
|
var _origin = lastStep.origin;
|
|
77
48
|
if (mergedStep && _inverted) {
|
|
78
|
-
acc[acc.length - 1] = new LockableRebaseable(
|
|
49
|
+
acc[acc.length - 1] = new LockableRebaseable(mergedStep, _inverted, _origin instanceof _state.Transaction ? _origin.setMeta('isOffline', isOffline) : _origin);
|
|
79
50
|
return acc;
|
|
80
51
|
}
|
|
81
52
|
}
|
|
82
|
-
return acc.concat(new LockableRebaseable(
|
|
53
|
+
return acc.concat(new LockableRebaseable(rebaseable.step, rebaseable.inverted, rebaseable.origin instanceof _state.Transaction ? rebaseable.origin.setMeta('isOffline', isOffline) : rebaseable.origin));
|
|
83
54
|
}, []);
|
|
84
55
|
return mergedSteps;
|
|
85
56
|
}
|
|
@@ -1,28 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
function isLockable(step) {
|
|
3
|
-
return (step === null || step === void 0 ? void 0 : step.lockStep) !== undefined;
|
|
4
|
-
}
|
|
5
|
-
const createLockableProseMirrorStep = step => {
|
|
6
|
-
let stepIsLocked = false;
|
|
7
|
-
if (isLockable(step)) {
|
|
8
|
-
return step;
|
|
9
|
-
}
|
|
10
|
-
return new Proxy(step, {
|
|
11
|
-
get(target, prop, receiver) {
|
|
12
|
-
if (prop === 'lockStep') {
|
|
13
|
-
return () => {
|
|
14
|
-
stepIsLocked = true;
|
|
15
|
-
};
|
|
16
|
-
} else if (prop === 'isLocked') {
|
|
17
|
-
return () => {
|
|
18
|
-
return stepIsLocked;
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
return Reflect.get(target, prop, receiver);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
|
|
1
|
+
import { Transaction } from '@atlaskit/editor-prosemirror/state';
|
|
26
2
|
// Based on: `packages/editor/prosemirror-collab/src/index.ts`
|
|
27
3
|
class LockableRebaseable {
|
|
28
4
|
constructor(step, inverted, origin) {
|
|
@@ -31,7 +7,12 @@ class LockableRebaseable {
|
|
|
31
7
|
this.origin = origin;
|
|
32
8
|
}
|
|
33
9
|
}
|
|
34
|
-
|
|
10
|
+
const isLocked = step => {
|
|
11
|
+
if (step.origin instanceof Transaction) {
|
|
12
|
+
return step.origin.getMeta('mergeIsLocked');
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
};
|
|
35
16
|
|
|
36
17
|
/**
|
|
37
18
|
* Merge a set of steps together to reduce the total number of steps stored in memory.
|
|
@@ -45,9 +26,10 @@ class LockableProseMirrorStep extends ProseMirrorStep {}
|
|
|
45
26
|
*/
|
|
46
27
|
export function mergeUnconfirmedSteps(steps, api) {
|
|
47
28
|
const mergedSteps = steps.reduce((acc, rebaseable) => {
|
|
48
|
-
var _api$connectivity, _api$connectivity$sha
|
|
29
|
+
var _api$connectivity, _api$connectivity$sha;
|
|
49
30
|
const lastStep = acc[acc.length - 1];
|
|
50
|
-
|
|
31
|
+
const isOffline = (api === null || api === void 0 ? void 0 : (_api$connectivity = api.connectivity) === null || _api$connectivity === void 0 ? void 0 : (_api$connectivity$sha = _api$connectivity.sharedState.currentState()) === null || _api$connectivity$sha === void 0 ? void 0 : _api$connectivity$sha.mode) === 'offline';
|
|
32
|
+
if (isOffline && lastStep && !isLocked(lastStep) && !isLocked(rebaseable)) {
|
|
51
33
|
const mergedStep = lastStep.step.merge(rebaseable.step);
|
|
52
34
|
const inverted = rebaseable.inverted.merge(lastStep.inverted);
|
|
53
35
|
// Always take the origin of the new step.
|
|
@@ -56,11 +38,11 @@ export function mergeUnconfirmedSteps(steps, api) {
|
|
|
56
38
|
// As we want to wait until all the transactions have been pushed through
|
|
57
39
|
const origin = lastStep.origin;
|
|
58
40
|
if (mergedStep && inverted) {
|
|
59
|
-
acc[acc.length - 1] = new LockableRebaseable(
|
|
41
|
+
acc[acc.length - 1] = new LockableRebaseable(mergedStep, inverted, origin instanceof Transaction ? origin.setMeta('isOffline', isOffline) : origin);
|
|
60
42
|
return acc;
|
|
61
43
|
}
|
|
62
44
|
}
|
|
63
|
-
return acc.concat(new LockableRebaseable(
|
|
45
|
+
return acc.concat(new LockableRebaseable(rebaseable.step, rebaseable.inverted, rebaseable.origin instanceof Transaction ? rebaseable.origin.setMeta('isOffline', isOffline) : rebaseable.origin));
|
|
64
46
|
}, []);
|
|
65
47
|
return mergedSteps;
|
|
66
48
|
}
|
|
@@ -1,35 +1,6 @@
|
|
|
1
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
2
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
4
1
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
5
2
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
6
|
-
|
|
7
|
-
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
8
|
-
import { Step as ProseMirrorStep } from '@atlaskit/editor-prosemirror/transform';
|
|
9
|
-
function isLockable(step) {
|
|
10
|
-
return (step === null || step === void 0 ? void 0 : step.lockStep) !== undefined;
|
|
11
|
-
}
|
|
12
|
-
var createLockableProseMirrorStep = function createLockableProseMirrorStep(step) {
|
|
13
|
-
var stepIsLocked = false;
|
|
14
|
-
if (isLockable(step)) {
|
|
15
|
-
return step;
|
|
16
|
-
}
|
|
17
|
-
return new Proxy(step, {
|
|
18
|
-
get: function get(target, prop, receiver) {
|
|
19
|
-
if (prop === 'lockStep') {
|
|
20
|
-
return function () {
|
|
21
|
-
stepIsLocked = true;
|
|
22
|
-
};
|
|
23
|
-
} else if (prop === 'isLocked') {
|
|
24
|
-
return function () {
|
|
25
|
-
return stepIsLocked;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return Reflect.get(target, prop, receiver);
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
|
|
3
|
+
import { Transaction } from '@atlaskit/editor-prosemirror/state';
|
|
33
4
|
// Based on: `packages/editor/prosemirror-collab/src/index.ts`
|
|
34
5
|
var LockableRebaseable = /*#__PURE__*/_createClass(function LockableRebaseable(step, inverted, origin) {
|
|
35
6
|
_classCallCheck(this, LockableRebaseable);
|
|
@@ -37,14 +8,13 @@ var LockableRebaseable = /*#__PURE__*/_createClass(function LockableRebaseable(s
|
|
|
37
8
|
this.inverted = inverted;
|
|
38
9
|
this.origin = origin;
|
|
39
10
|
});
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return _callSuper(this, LockableProseMirrorStep, arguments);
|
|
11
|
+
var isLocked = function isLocked(step) {
|
|
12
|
+
if (step.origin instanceof Transaction) {
|
|
13
|
+
return step.origin.getMeta('mergeIsLocked');
|
|
44
14
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
15
|
+
return false;
|
|
16
|
+
};
|
|
17
|
+
|
|
48
18
|
/**
|
|
49
19
|
* Merge a set of steps together to reduce the total number of steps stored in memory.
|
|
50
20
|
*
|
|
@@ -57,9 +27,10 @@ var LockableProseMirrorStep = /*#__PURE__*/function (_ProseMirrorStep) {
|
|
|
57
27
|
*/
|
|
58
28
|
export function mergeUnconfirmedSteps(steps, api) {
|
|
59
29
|
var mergedSteps = steps.reduce(function (acc, rebaseable) {
|
|
60
|
-
var _api$connectivity
|
|
30
|
+
var _api$connectivity;
|
|
61
31
|
var lastStep = acc[acc.length - 1];
|
|
62
|
-
|
|
32
|
+
var isOffline = (api === null || api === void 0 || (_api$connectivity = api.connectivity) === null || _api$connectivity === void 0 || (_api$connectivity = _api$connectivity.sharedState.currentState()) === null || _api$connectivity === void 0 ? void 0 : _api$connectivity.mode) === 'offline';
|
|
33
|
+
if (isOffline && lastStep && !isLocked(lastStep) && !isLocked(rebaseable)) {
|
|
63
34
|
var mergedStep = lastStep.step.merge(rebaseable.step);
|
|
64
35
|
var _inverted = rebaseable.inverted.merge(lastStep.inverted);
|
|
65
36
|
// Always take the origin of the new step.
|
|
@@ -68,11 +39,11 @@ export function mergeUnconfirmedSteps(steps, api) {
|
|
|
68
39
|
// As we want to wait until all the transactions have been pushed through
|
|
69
40
|
var _origin = lastStep.origin;
|
|
70
41
|
if (mergedStep && _inverted) {
|
|
71
|
-
acc[acc.length - 1] = new LockableRebaseable(
|
|
42
|
+
acc[acc.length - 1] = new LockableRebaseable(mergedStep, _inverted, _origin instanceof Transaction ? _origin.setMeta('isOffline', isOffline) : _origin);
|
|
72
43
|
return acc;
|
|
73
44
|
}
|
|
74
45
|
}
|
|
75
|
-
return acc.concat(new LockableRebaseable(
|
|
46
|
+
return acc.concat(new LockableRebaseable(rebaseable.step, rebaseable.inverted, rebaseable.origin instanceof Transaction ? rebaseable.origin.setMeta('isOffline', isOffline) : rebaseable.origin));
|
|
76
47
|
}, []);
|
|
77
48
|
return mergedSteps;
|
|
78
49
|
}
|
|
@@ -3,14 +3,10 @@ import { Step as ProseMirrorStep } from '@atlaskit/editor-prosemirror/transform'
|
|
|
3
3
|
import type { Transform as ProseMirrorTransform } from '@atlaskit/editor-prosemirror/transform';
|
|
4
4
|
import type { CollabEditPlugin } from '../collabEditPluginType';
|
|
5
5
|
declare class LockableRebaseable {
|
|
6
|
-
readonly step:
|
|
6
|
+
readonly step: ProseMirrorStep;
|
|
7
7
|
readonly inverted: ProseMirrorStep;
|
|
8
8
|
readonly origin: ProseMirrorTransform;
|
|
9
|
-
constructor(step:
|
|
10
|
-
}
|
|
11
|
-
declare abstract class LockableProseMirrorStep extends ProseMirrorStep {
|
|
12
|
-
lockStep?: () => void;
|
|
13
|
-
isLocked?: () => boolean;
|
|
9
|
+
constructor(step: ProseMirrorStep, inverted: ProseMirrorStep, origin: ProseMirrorTransform);
|
|
14
10
|
}
|
|
15
11
|
/**
|
|
16
12
|
* Merge a set of steps together to reduce the total number of steps stored in memory.
|
|
@@ -3,14 +3,10 @@ import { Step as ProseMirrorStep } from '@atlaskit/editor-prosemirror/transform'
|
|
|
3
3
|
import type { Transform as ProseMirrorTransform } from '@atlaskit/editor-prosemirror/transform';
|
|
4
4
|
import type { CollabEditPlugin } from '../collabEditPluginType';
|
|
5
5
|
declare class LockableRebaseable {
|
|
6
|
-
readonly step:
|
|
6
|
+
readonly step: ProseMirrorStep;
|
|
7
7
|
readonly inverted: ProseMirrorStep;
|
|
8
8
|
readonly origin: ProseMirrorTransform;
|
|
9
|
-
constructor(step:
|
|
10
|
-
}
|
|
11
|
-
declare abstract class LockableProseMirrorStep extends ProseMirrorStep {
|
|
12
|
-
lockStep?: () => void;
|
|
13
|
-
isLocked?: () => boolean;
|
|
9
|
+
constructor(step: ProseMirrorStep, inverted: ProseMirrorStep, origin: ProseMirrorTransform);
|
|
14
10
|
}
|
|
15
11
|
/**
|
|
16
12
|
* Merge a set of steps together to reduce the total number of steps stored in memory.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-collab-edit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Collab Edit plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
".": "./src/index.ts"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@atlaskit/adf-schema": "^47.
|
|
35
|
-
"@atlaskit/custom-steps": "^0.
|
|
36
|
-
"@atlaskit/editor-common": "^100.
|
|
37
|
-
"@atlaskit/editor-json-transformer": "^8.
|
|
38
|
-
"@atlaskit/editor-plugin-analytics": "2.
|
|
34
|
+
"@atlaskit/adf-schema": "^47.6.0",
|
|
35
|
+
"@atlaskit/custom-steps": "^0.11.0",
|
|
36
|
+
"@atlaskit/editor-common": "^100.5.0",
|
|
37
|
+
"@atlaskit/editor-json-transformer": "^8.24.0",
|
|
38
|
+
"@atlaskit/editor-plugin-analytics": "2.1.0",
|
|
39
39
|
"@atlaskit/editor-plugin-connectivity": "^2.0.0",
|
|
40
40
|
"@atlaskit/editor-plugin-editor-viewmode": "^3.0.0",
|
|
41
41
|
"@atlaskit/editor-plugin-feature-flags": "^1.3.0",
|
|
42
42
|
"@atlaskit/editor-prosemirror": "7.0.0",
|
|
43
43
|
"@atlaskit/editor-shared-styles": "^3.4.0",
|
|
44
44
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
45
|
-
"@atlaskit/prosemirror-collab": "^0.
|
|
45
|
+
"@atlaskit/prosemirror-collab": "^0.15.0",
|
|
46
46
|
"@babel/runtime": "^7.0.0",
|
|
47
47
|
"memoize-one": "^6.0.0"
|
|
48
48
|
},
|
|
@@ -53,11 +53,11 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@af/integration-testing": "*",
|
|
55
55
|
"@af/visual-regression": "*",
|
|
56
|
-
"@atlaskit/editor-plugin-mentions": "^4.
|
|
57
|
-
"@atlaskit/editor-plugin-text-formatting": "^2.
|
|
58
|
-
"@atlaskit/editor-plugin-type-ahead": "^2.
|
|
59
|
-
"@atlaskit/editor-plugin-unsupported-content": "^2.
|
|
60
|
-
"@atlaskit/editor-test-helpers": "^22.
|
|
56
|
+
"@atlaskit/editor-plugin-mentions": "^4.1.0",
|
|
57
|
+
"@atlaskit/editor-plugin-text-formatting": "^2.1.0",
|
|
58
|
+
"@atlaskit/editor-plugin-type-ahead": "^2.1.0",
|
|
59
|
+
"@atlaskit/editor-plugin-unsupported-content": "^2.1.0",
|
|
60
|
+
"@atlaskit/editor-test-helpers": "^22.1.0",
|
|
61
61
|
"@atlaskit/ssr": "*",
|
|
62
62
|
"@atlaskit/synchrony-test-helpers": "^3.1.0",
|
|
63
63
|
"@atlaskit/util-data-test": "^18.0.0",
|