@atlaskit/collab-provider 9.18.4 → 9.20.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 +12 -0
- package/dist/cjs/document/catchup.js +21 -2
- package/dist/cjs/errors/error-code-mapper.js +6 -0
- package/dist/cjs/errors/ncs-errors.js +5 -0
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/es2019/document/catchup.js +18 -2
- package/dist/es2019/errors/error-code-mapper.js +6 -0
- package/dist/es2019/errors/ncs-errors.js +5 -0
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/esm/document/catchup.js +20 -2
- package/dist/esm/errors/error-code-mapper.js +6 -0
- package/dist/esm/errors/ncs-errors.js +5 -0
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/types/document/catchup.d.ts +5 -0
- package/dist/types/errors/ncs-errors.d.ts +14 -2
- package/dist/types-ts4.5/document/catchup.d.ts +5 -0
- package/dist/types-ts4.5/errors/ncs-errors.d.ts +14 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/collab-provider
|
|
2
2
|
|
|
3
|
+
## 9.20.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#60038](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/60038) [`b1b34b86ab59`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b1b34b86ab59) - verify clientIds from serverStepMaps to avoid content duplication
|
|
8
|
+
|
|
9
|
+
## 9.19.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#58777](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/58777) [`f28d4e12e540`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f28d4e12e540) - Added PROSEMIRROR_SCHEMA_VALIDATION_ERROR from NCS
|
|
14
|
+
|
|
3
15
|
## 9.18.4
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.catchup = void 0;
|
|
8
8
|
exports.rebaseSteps = rebaseSteps;
|
|
9
|
+
exports.removeConfirmedSteps = removeConfirmedSteps;
|
|
9
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
12
|
var _const = require("../helpers/const");
|
|
@@ -41,9 +42,26 @@ function rebaseSteps(steps, mapping) {
|
|
|
41
42
|
}
|
|
42
43
|
return newSteps;
|
|
43
44
|
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Check if clientId is in list of StepMaps returned by server, to avoid duplicating content
|
|
48
|
+
* Each time a StepMap contains the clientId, we should drop an unconfirmedStep
|
|
49
|
+
*/
|
|
50
|
+
function removeConfirmedSteps() {
|
|
51
|
+
var unconfirmedSteps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
52
|
+
var serverStepMaps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
53
|
+
var clientId = arguments.length > 2 ? arguments[2] : undefined;
|
|
54
|
+
var newUnconfirmedSteps = Array.from(unconfirmedSteps);
|
|
55
|
+
for (var i = 0; i < serverStepMaps.length; i++) {
|
|
56
|
+
if (serverStepMaps[i].clientId === clientId) {
|
|
57
|
+
newUnconfirmedSteps.shift();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return newUnconfirmedSteps;
|
|
61
|
+
}
|
|
44
62
|
var catchup = exports.catchup = /*#__PURE__*/function () {
|
|
45
63
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(opt) {
|
|
46
|
-
var doc, serverStepMaps, serverVersion, metadata, _yield$opt$fetchCatch, _opt$analyticsHelper, currentPmVersion, unconfirmedSteps, _unconfirmedSteps, stepMaps, mapping, newUnconfirmedSteps, _opt$analyticsHelper2, _opt$analyticsHelper3;
|
|
64
|
+
var doc, serverStepMaps, serverVersion, metadata, _yield$opt$fetchCatch, _opt$analyticsHelper, currentPmVersion, unconfirmedSteps, _unconfirmedSteps2, _unconfirmedSteps, stepMaps, mapping, newUnconfirmedSteps, _opt$analyticsHelper2, _opt$analyticsHelper3;
|
|
47
65
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
48
66
|
while (1) switch (_context.prev = _context.next) {
|
|
49
67
|
case 0:
|
|
@@ -117,9 +135,10 @@ var catchup = exports.catchup = /*#__PURE__*/function () {
|
|
|
117
135
|
// steps back into the editor, so we don't lose any data. But before that, we need to rebase
|
|
118
136
|
// those steps since their position could be changed after replacing.
|
|
119
137
|
// https://prosemirror.net/docs/guide/#transform.rebasing
|
|
120
|
-
if (_unconfirmedSteps !== null &&
|
|
138
|
+
if ((_unconfirmedSteps2 = _unconfirmedSteps) !== null && _unconfirmedSteps2 !== void 0 && _unconfirmedSteps2.length) {
|
|
121
139
|
// Create StepMap from StepMap JSON
|
|
122
140
|
// eslint-disable-next-line no-unused-vars
|
|
141
|
+
_unconfirmedSteps = removeConfirmedSteps(_unconfirmedSteps, serverStepMaps, opt.clientId);
|
|
123
142
|
stepMaps = serverStepMaps.map(function (_ref2) {
|
|
124
143
|
var ranges = _ref2.ranges,
|
|
125
144
|
inverted = _ref2.inverted;
|
|
@@ -73,6 +73,12 @@ var errorCodeMapper = exports.errorCodeMapper = function errorCodeMapper(error)
|
|
|
73
73
|
recoverable: false,
|
|
74
74
|
status: 500
|
|
75
75
|
};
|
|
76
|
+
case _ncsErrors.NCS_ERROR_CODE.PROSEMIRROR_SCHEMA_VALIDATION_ERROR:
|
|
77
|
+
return {
|
|
78
|
+
code: _collab.PROVIDER_ERROR_CODE.INITIALISATION_ERROR,
|
|
79
|
+
message: "The initial document couldn't be loaded from the collab service due to a prosemirror schema validation error",
|
|
80
|
+
recoverable: false
|
|
81
|
+
};
|
|
76
82
|
case _internalErrors.INTERNAL_ERROR_CODE.DOCUMENT_UPDATE_ERROR:
|
|
77
83
|
return {
|
|
78
84
|
code: _collab.PROVIDER_ERROR_CODE.DOCUMENT_UPDATE_ERROR,
|
|
@@ -23,6 +23,7 @@ var NCS_ERROR_CODE = exports.NCS_ERROR_CODE = /*#__PURE__*/function (NCS_ERROR_C
|
|
|
23
23
|
NCS_ERROR_CODE["INVALID_DOCUMENT_ARI"] = "INVALID_DOCUMENT_ARI";
|
|
24
24
|
NCS_ERROR_CODE["INVALID_CLOUD_ID"] = "INVALID_CLOUD_ID";
|
|
25
25
|
NCS_ERROR_CODE["RATE_LIMIT_ERROR"] = "RATE_LIMIT_ERROR";
|
|
26
|
+
NCS_ERROR_CODE["PROSEMIRROR_SCHEMA_VALIDATION_ERROR"] = "PROSEMIRROR_SCHEMA_VALIDATION_ERROR";
|
|
26
27
|
return NCS_ERROR_CODE;
|
|
27
28
|
}({}); // TODO: Import emitted error codes from NCS
|
|
28
29
|
// NCS Errors
|
|
@@ -30,6 +31,10 @@ var NCS_ERROR_CODE = exports.NCS_ERROR_CODE = /*#__PURE__*/function (NCS_ERROR_C
|
|
|
30
31
|
// - Permission errors
|
|
31
32
|
// - Page missing / TTL errors
|
|
32
33
|
// - Server errors
|
|
34
|
+
/**
|
|
35
|
+
* The backend has retrieved the document successfully, as ADF, but failed to convert it to Prosemirror.
|
|
36
|
+
* This might be because invalid ADF has been written to a document, as it was not validated correctly.
|
|
37
|
+
*/
|
|
33
38
|
// - Less common back-end errors
|
|
34
39
|
/**
|
|
35
40
|
* The client is trying to send too many messages or messages that are too large. This not expected to be a standard
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.version = exports.nextMajorVersion = exports.name = void 0;
|
|
7
7
|
var name = exports.name = "@atlaskit/collab-provider";
|
|
8
|
-
var version = exports.version = "9.
|
|
8
|
+
var version = exports.version = "9.20.0";
|
|
9
9
|
var nextMajorVersion = exports.nextMajorVersion = function nextMajorVersion() {
|
|
10
10
|
return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
|
|
11
11
|
};
|
|
@@ -19,6 +19,20 @@ export function rebaseSteps(steps, mapping) {
|
|
|
19
19
|
}
|
|
20
20
|
return newSteps;
|
|
21
21
|
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Check if clientId is in list of StepMaps returned by server, to avoid duplicating content
|
|
25
|
+
* Each time a StepMap contains the clientId, we should drop an unconfirmedStep
|
|
26
|
+
*/
|
|
27
|
+
export function removeConfirmedSteps(unconfirmedSteps = [], serverStepMaps = [], clientId) {
|
|
28
|
+
let newUnconfirmedSteps = Array.from(unconfirmedSteps);
|
|
29
|
+
for (let i = 0; i < serverStepMaps.length; i++) {
|
|
30
|
+
if (serverStepMaps[i].clientId === clientId) {
|
|
31
|
+
newUnconfirmedSteps.shift();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return newUnconfirmedSteps;
|
|
35
|
+
}
|
|
22
36
|
export const catchup = async opt => {
|
|
23
37
|
let doc, serverStepMaps, serverVersion, metadata;
|
|
24
38
|
try {
|
|
@@ -58,9 +72,10 @@ export const catchup = async opt => {
|
|
|
58
72
|
opt.applyLocalSteps(unconfirmedSteps);
|
|
59
73
|
}
|
|
60
74
|
} else {
|
|
75
|
+
var _unconfirmedSteps;
|
|
61
76
|
// Please, do not use those steps inside of async
|
|
62
77
|
// method. That will lead to outdated steps
|
|
63
|
-
|
|
78
|
+
let unconfirmedSteps = opt.getUnconfirmedSteps();
|
|
64
79
|
logger(`Too far behind[current: v${currentPmVersion}, server: v${serverVersion}. ${serverStepMaps.length} steps need to catchup]`);
|
|
65
80
|
/**
|
|
66
81
|
* Remove steps from queue where the version is older than
|
|
@@ -86,9 +101,10 @@ export const catchup = async opt => {
|
|
|
86
101
|
// steps back into the editor, so we don't lose any data. But before that, we need to rebase
|
|
87
102
|
// those steps since their position could be changed after replacing.
|
|
88
103
|
// https://prosemirror.net/docs/guide/#transform.rebasing
|
|
89
|
-
if (unconfirmedSteps !== null &&
|
|
104
|
+
if ((_unconfirmedSteps = unconfirmedSteps) !== null && _unconfirmedSteps !== void 0 && _unconfirmedSteps.length) {
|
|
90
105
|
// Create StepMap from StepMap JSON
|
|
91
106
|
// eslint-disable-next-line no-unused-vars
|
|
107
|
+
unconfirmedSteps = removeConfirmedSteps(unconfirmedSteps, serverStepMaps, opt.clientId);
|
|
92
108
|
const stepMaps = serverStepMaps.map(({
|
|
93
109
|
ranges,
|
|
94
110
|
inverted
|
|
@@ -68,6 +68,12 @@ export const errorCodeMapper = error => {
|
|
|
68
68
|
recoverable: false,
|
|
69
69
|
status: 500
|
|
70
70
|
};
|
|
71
|
+
case NCS_ERROR_CODE.PROSEMIRROR_SCHEMA_VALIDATION_ERROR:
|
|
72
|
+
return {
|
|
73
|
+
code: PROVIDER_ERROR_CODE.INITIALISATION_ERROR,
|
|
74
|
+
message: "The initial document couldn't be loaded from the collab service due to a prosemirror schema validation error",
|
|
75
|
+
recoverable: false
|
|
76
|
+
};
|
|
71
77
|
case INTERNAL_ERROR_CODE.DOCUMENT_UPDATE_ERROR:
|
|
72
78
|
return {
|
|
73
79
|
code: PROVIDER_ERROR_CODE.DOCUMENT_UPDATE_ERROR,
|
|
@@ -17,6 +17,7 @@ export let NCS_ERROR_CODE = /*#__PURE__*/function (NCS_ERROR_CODE) {
|
|
|
17
17
|
NCS_ERROR_CODE["INVALID_DOCUMENT_ARI"] = "INVALID_DOCUMENT_ARI";
|
|
18
18
|
NCS_ERROR_CODE["INVALID_CLOUD_ID"] = "INVALID_CLOUD_ID";
|
|
19
19
|
NCS_ERROR_CODE["RATE_LIMIT_ERROR"] = "RATE_LIMIT_ERROR";
|
|
20
|
+
NCS_ERROR_CODE["PROSEMIRROR_SCHEMA_VALIDATION_ERROR"] = "PROSEMIRROR_SCHEMA_VALIDATION_ERROR";
|
|
20
21
|
return NCS_ERROR_CODE;
|
|
21
22
|
}({});
|
|
22
23
|
|
|
@@ -27,6 +28,10 @@ export let NCS_ERROR_CODE = /*#__PURE__*/function (NCS_ERROR_CODE) {
|
|
|
27
28
|
// - Permission errors
|
|
28
29
|
// - Page missing / TTL errors
|
|
29
30
|
// - Server errors
|
|
31
|
+
/**
|
|
32
|
+
* The backend has retrieved the document successfully, as ADF, but failed to convert it to Prosemirror.
|
|
33
|
+
* This might be because invalid ADF has been written to a document, as it was not validated correctly.
|
|
34
|
+
*/
|
|
30
35
|
// - Less common back-end errors
|
|
31
36
|
/**
|
|
32
37
|
* The client is trying to send too many messages or messages that are too large. This not expected to be a standard
|
|
@@ -33,9 +33,26 @@ export function rebaseSteps(steps, mapping) {
|
|
|
33
33
|
}
|
|
34
34
|
return newSteps;
|
|
35
35
|
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Check if clientId is in list of StepMaps returned by server, to avoid duplicating content
|
|
39
|
+
* Each time a StepMap contains the clientId, we should drop an unconfirmedStep
|
|
40
|
+
*/
|
|
41
|
+
export function removeConfirmedSteps() {
|
|
42
|
+
var unconfirmedSteps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
43
|
+
var serverStepMaps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
44
|
+
var clientId = arguments.length > 2 ? arguments[2] : undefined;
|
|
45
|
+
var newUnconfirmedSteps = Array.from(unconfirmedSteps);
|
|
46
|
+
for (var i = 0; i < serverStepMaps.length; i++) {
|
|
47
|
+
if (serverStepMaps[i].clientId === clientId) {
|
|
48
|
+
newUnconfirmedSteps.shift();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return newUnconfirmedSteps;
|
|
52
|
+
}
|
|
36
53
|
export var catchup = /*#__PURE__*/function () {
|
|
37
54
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(opt) {
|
|
38
|
-
var doc, serverStepMaps, serverVersion, metadata, _yield$opt$fetchCatch, _opt$analyticsHelper, currentPmVersion, unconfirmedSteps, _unconfirmedSteps, stepMaps, mapping, newUnconfirmedSteps, _opt$analyticsHelper2, _opt$analyticsHelper3;
|
|
55
|
+
var doc, serverStepMaps, serverVersion, metadata, _yield$opt$fetchCatch, _opt$analyticsHelper, currentPmVersion, unconfirmedSteps, _unconfirmedSteps2, _unconfirmedSteps, stepMaps, mapping, newUnconfirmedSteps, _opt$analyticsHelper2, _opt$analyticsHelper3;
|
|
39
56
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
40
57
|
while (1) switch (_context.prev = _context.next) {
|
|
41
58
|
case 0:
|
|
@@ -109,9 +126,10 @@ export var catchup = /*#__PURE__*/function () {
|
|
|
109
126
|
// steps back into the editor, so we don't lose any data. But before that, we need to rebase
|
|
110
127
|
// those steps since their position could be changed after replacing.
|
|
111
128
|
// https://prosemirror.net/docs/guide/#transform.rebasing
|
|
112
|
-
if (_unconfirmedSteps !== null &&
|
|
129
|
+
if ((_unconfirmedSteps2 = _unconfirmedSteps) !== null && _unconfirmedSteps2 !== void 0 && _unconfirmedSteps2.length) {
|
|
113
130
|
// Create StepMap from StepMap JSON
|
|
114
131
|
// eslint-disable-next-line no-unused-vars
|
|
132
|
+
_unconfirmedSteps = removeConfirmedSteps(_unconfirmedSteps, serverStepMaps, opt.clientId);
|
|
115
133
|
stepMaps = serverStepMaps.map(function (_ref2) {
|
|
116
134
|
var ranges = _ref2.ranges,
|
|
117
135
|
inverted = _ref2.inverted;
|
|
@@ -68,6 +68,12 @@ export var errorCodeMapper = function errorCodeMapper(error) {
|
|
|
68
68
|
recoverable: false,
|
|
69
69
|
status: 500
|
|
70
70
|
};
|
|
71
|
+
case NCS_ERROR_CODE.PROSEMIRROR_SCHEMA_VALIDATION_ERROR:
|
|
72
|
+
return {
|
|
73
|
+
code: PROVIDER_ERROR_CODE.INITIALISATION_ERROR,
|
|
74
|
+
message: "The initial document couldn't be loaded from the collab service due to a prosemirror schema validation error",
|
|
75
|
+
recoverable: false
|
|
76
|
+
};
|
|
71
77
|
case INTERNAL_ERROR_CODE.DOCUMENT_UPDATE_ERROR:
|
|
72
78
|
return {
|
|
73
79
|
code: PROVIDER_ERROR_CODE.DOCUMENT_UPDATE_ERROR,
|
|
@@ -17,6 +17,7 @@ export var NCS_ERROR_CODE = /*#__PURE__*/function (NCS_ERROR_CODE) {
|
|
|
17
17
|
NCS_ERROR_CODE["INVALID_DOCUMENT_ARI"] = "INVALID_DOCUMENT_ARI";
|
|
18
18
|
NCS_ERROR_CODE["INVALID_CLOUD_ID"] = "INVALID_CLOUD_ID";
|
|
19
19
|
NCS_ERROR_CODE["RATE_LIMIT_ERROR"] = "RATE_LIMIT_ERROR";
|
|
20
|
+
NCS_ERROR_CODE["PROSEMIRROR_SCHEMA_VALIDATION_ERROR"] = "PROSEMIRROR_SCHEMA_VALIDATION_ERROR";
|
|
20
21
|
return NCS_ERROR_CODE;
|
|
21
22
|
}({});
|
|
22
23
|
|
|
@@ -27,6 +28,10 @@ export var NCS_ERROR_CODE = /*#__PURE__*/function (NCS_ERROR_CODE) {
|
|
|
27
28
|
// - Permission errors
|
|
28
29
|
// - Page missing / TTL errors
|
|
29
30
|
// - Server errors
|
|
31
|
+
/**
|
|
32
|
+
* The backend has retrieved the document successfully, as ADF, but failed to convert it to Prosemirror.
|
|
33
|
+
* This might be because invalid ADF has been written to a document, as it was not validated correctly.
|
|
34
|
+
*/
|
|
30
35
|
// - Less common back-end errors
|
|
31
36
|
/**
|
|
32
37
|
* The client is trying to send too many messages or messages that are too large. This not expected to be a standard
|
|
@@ -7,4 +7,9 @@ import { Mapping } from '@atlaskit/editor-prosemirror/transform';
|
|
|
7
7
|
* invalid after rebased.
|
|
8
8
|
*/
|
|
9
9
|
export declare function rebaseSteps(steps: readonly Step[], mapping: Mapping): Step[];
|
|
10
|
+
/**
|
|
11
|
+
* Check if clientId is in list of StepMaps returned by server, to avoid duplicating content
|
|
12
|
+
* Each time a StepMap contains the clientId, we should drop an unconfirmedStep
|
|
13
|
+
*/
|
|
14
|
+
export declare function removeConfirmedSteps(unconfirmedSteps: readonly Step[] | undefined, serverStepMaps: any[] | undefined, clientId: string | number | undefined): Step[];
|
|
10
15
|
export declare const catchup: (opt: CatchupOptions) => Promise<void>;
|
|
@@ -15,7 +15,8 @@ export declare enum NCS_ERROR_CODE {
|
|
|
15
15
|
INVALID_ACTIVATION_ID = "INVALID_ACTIVATION_ID",
|
|
16
16
|
INVALID_DOCUMENT_ARI = "INVALID_DOCUMENT_ARI",
|
|
17
17
|
INVALID_CLOUD_ID = "INVALID_CLOUD_ID",
|
|
18
|
-
RATE_LIMIT_ERROR = "RATE_LIMIT_ERROR"
|
|
18
|
+
RATE_LIMIT_ERROR = "RATE_LIMIT_ERROR",
|
|
19
|
+
PROSEMIRROR_SCHEMA_VALIDATION_ERROR = "PROSEMIRROR_SCHEMA_VALIDATION_ERROR"
|
|
19
20
|
}
|
|
20
21
|
type HeadVersionUpdateFailedError = {
|
|
21
22
|
message: string;
|
|
@@ -69,6 +70,17 @@ type FailedToLoadInitDataError = {
|
|
|
69
70
|
status: number;
|
|
70
71
|
};
|
|
71
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* The backend has retrieved the document successfully, as ADF, but failed to convert it to Prosemirror.
|
|
75
|
+
* This might be because invalid ADF has been written to a document, as it was not validated correctly.
|
|
76
|
+
*/
|
|
77
|
+
type ProsemirrorSchemaValidationError = {
|
|
78
|
+
message: string;
|
|
79
|
+
data: {
|
|
80
|
+
code: NCS_ERROR_CODE.PROSEMIRROR_SCHEMA_VALIDATION_ERROR;
|
|
81
|
+
status: number;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
72
84
|
type ErrorMappingError = {
|
|
73
85
|
message: string;
|
|
74
86
|
data: {
|
|
@@ -168,5 +180,5 @@ export type RateLimitError = {
|
|
|
168
180
|
status: 500;
|
|
169
181
|
};
|
|
170
182
|
};
|
|
171
|
-
export type NCSErrors = HeadVersionUpdateFailedError | VersionAlreadyPresentInDynamoError | InsufficientEditingPermissionError | ForbiddenUserTokenError | NCSDocumentNotFoundError | FailedToLoadInitDataError | ErrorMappingError | InvalidNamespaceDefinedError | SocketNamespaceNotFoundError | TenantInstanceMaintenanceError | NamespaceLockedError | EmptyBroadcastError | DynamoError | InvalidActivationIdError | InvalidDocumentAriError | InvalidCloudIdError | RateLimitError;
|
|
183
|
+
export type NCSErrors = HeadVersionUpdateFailedError | VersionAlreadyPresentInDynamoError | InsufficientEditingPermissionError | ForbiddenUserTokenError | NCSDocumentNotFoundError | FailedToLoadInitDataError | ErrorMappingError | InvalidNamespaceDefinedError | SocketNamespaceNotFoundError | TenantInstanceMaintenanceError | NamespaceLockedError | EmptyBroadcastError | DynamoError | InvalidActivationIdError | InvalidDocumentAriError | InvalidCloudIdError | RateLimitError | ProsemirrorSchemaValidationError;
|
|
172
184
|
export {};
|
|
@@ -7,4 +7,9 @@ import { Mapping } from '@atlaskit/editor-prosemirror/transform';
|
|
|
7
7
|
* invalid after rebased.
|
|
8
8
|
*/
|
|
9
9
|
export declare function rebaseSteps(steps: readonly Step[], mapping: Mapping): Step[];
|
|
10
|
+
/**
|
|
11
|
+
* Check if clientId is in list of StepMaps returned by server, to avoid duplicating content
|
|
12
|
+
* Each time a StepMap contains the clientId, we should drop an unconfirmedStep
|
|
13
|
+
*/
|
|
14
|
+
export declare function removeConfirmedSteps(unconfirmedSteps: readonly Step[] | undefined, serverStepMaps: any[] | undefined, clientId: string | number | undefined): Step[];
|
|
10
15
|
export declare const catchup: (opt: CatchupOptions) => Promise<void>;
|
|
@@ -15,7 +15,8 @@ export declare enum NCS_ERROR_CODE {
|
|
|
15
15
|
INVALID_ACTIVATION_ID = "INVALID_ACTIVATION_ID",
|
|
16
16
|
INVALID_DOCUMENT_ARI = "INVALID_DOCUMENT_ARI",
|
|
17
17
|
INVALID_CLOUD_ID = "INVALID_CLOUD_ID",
|
|
18
|
-
RATE_LIMIT_ERROR = "RATE_LIMIT_ERROR"
|
|
18
|
+
RATE_LIMIT_ERROR = "RATE_LIMIT_ERROR",
|
|
19
|
+
PROSEMIRROR_SCHEMA_VALIDATION_ERROR = "PROSEMIRROR_SCHEMA_VALIDATION_ERROR"
|
|
19
20
|
}
|
|
20
21
|
type HeadVersionUpdateFailedError = {
|
|
21
22
|
message: string;
|
|
@@ -69,6 +70,17 @@ type FailedToLoadInitDataError = {
|
|
|
69
70
|
status: number;
|
|
70
71
|
};
|
|
71
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* The backend has retrieved the document successfully, as ADF, but failed to convert it to Prosemirror.
|
|
75
|
+
* This might be because invalid ADF has been written to a document, as it was not validated correctly.
|
|
76
|
+
*/
|
|
77
|
+
type ProsemirrorSchemaValidationError = {
|
|
78
|
+
message: string;
|
|
79
|
+
data: {
|
|
80
|
+
code: NCS_ERROR_CODE.PROSEMIRROR_SCHEMA_VALIDATION_ERROR;
|
|
81
|
+
status: number;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
72
84
|
type ErrorMappingError = {
|
|
73
85
|
message: string;
|
|
74
86
|
data: {
|
|
@@ -168,5 +180,5 @@ export type RateLimitError = {
|
|
|
168
180
|
status: 500;
|
|
169
181
|
};
|
|
170
182
|
};
|
|
171
|
-
export type NCSErrors = HeadVersionUpdateFailedError | VersionAlreadyPresentInDynamoError | InsufficientEditingPermissionError | ForbiddenUserTokenError | NCSDocumentNotFoundError | FailedToLoadInitDataError | ErrorMappingError | InvalidNamespaceDefinedError | SocketNamespaceNotFoundError | TenantInstanceMaintenanceError | NamespaceLockedError | EmptyBroadcastError | DynamoError | InvalidActivationIdError | InvalidDocumentAriError | InvalidCloudIdError | RateLimitError;
|
|
183
|
+
export type NCSErrors = HeadVersionUpdateFailedError | VersionAlreadyPresentInDynamoError | InsufficientEditingPermissionError | ForbiddenUserTokenError | NCSDocumentNotFoundError | FailedToLoadInitDataError | ErrorMappingError | InvalidNamespaceDefinedError | SocketNamespaceNotFoundError | TenantInstanceMaintenanceError | NamespaceLockedError | EmptyBroadcastError | DynamoError | InvalidActivationIdError | InvalidDocumentAriError | InvalidCloudIdError | RateLimitError | ProsemirrorSchemaValidationError;
|
|
172
184
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/collab-provider",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.20.0",
|
|
4
4
|
"description": "A provider for collaborative editing.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@atlaskit/analytics-gas-types": "^5.1.0",
|
|
38
38
|
"@atlaskit/analytics-listeners": "^8.7.0",
|
|
39
|
-
"@atlaskit/editor-common": "^76.
|
|
39
|
+
"@atlaskit/editor-common": "^76.26.0",
|
|
40
40
|
"@atlaskit/editor-json-transformer": "^8.10.0",
|
|
41
41
|
"@atlaskit/editor-prosemirror": "1.1.0",
|
|
42
42
|
"@atlaskit/prosemirror-collab": "^0.2.0",
|