@atlaskit/editor-synced-block-provider 6.4.3 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/clients/confluence/ari/package.json +17 -0
- package/common/types/package.json +17 -0
- package/dist/cjs/providers/block-service/blockServiceAPI.js +73 -45
- package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +12 -0
- package/dist/es2019/providers/block-service/blockServiceAPI.js +44 -19
- package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +10 -0
- package/dist/esm/providers/block-service/blockServiceAPI.js +69 -45
- package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +12 -0
- package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +7 -0
- package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +7 -0
- package/package.json +3 -3
- package/providers/block-service/blockServiceAPI/package.json +17 -0
- package/providers/types/package.json +17 -0
- package/utils/resourceId/package.json +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 6.5.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`6905b24d57293`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6905b24d57293) -
|
|
8
|
+
Add deep import subpath exports for SSR preload tree-shaking (providers/types,
|
|
9
|
+
providers/block-service/blockServiceAPI, clients/confluence/ari, utils/resourceId, common/types)
|
|
10
|
+
|
|
3
11
|
## 6.4.3
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/editor-synced-block-provider/clients/confluence/ari",
|
|
3
|
+
"main": "../../../dist/cjs/clients/confluence/ari.js",
|
|
4
|
+
"module": "../../../dist/esm/clients/confluence/ari.js",
|
|
5
|
+
"module:es2019": "../../../dist/es2019/clients/confluence/ari.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../../../dist/types/clients/confluence/ari.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../../../dist/types-ts4.5/clients/confluence/ari.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/editor-synced-block-provider/common/types",
|
|
3
|
+
"main": "../../dist/cjs/common/types.js",
|
|
4
|
+
"module": "../../dist/esm/common/types.js",
|
|
5
|
+
"module:es2019": "../../dist/es2019/common/types.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../../dist/types/common/types.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../../dist/types-ts4.5/common/types.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
@@ -16,11 +17,11 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
16
17
|
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
17
18
|
var _ari = require("../../clients/block-service/ari");
|
|
18
19
|
var _blockService = require("../../clients/block-service/blockService");
|
|
19
|
-
var _blockSubscription = require("../../clients/block-service/blockSubscription");
|
|
20
20
|
var _types = require("../../common/types");
|
|
21
21
|
var _errorHandling = require("../../utils/errorHandling");
|
|
22
22
|
var _resourceId2 = require("../../utils/resourceId");
|
|
23
23
|
var _utils = require("../../utils/utils");
|
|
24
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
24
25
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
25
26
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
26
27
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
@@ -798,24 +799,51 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
798
799
|
cloudId: this.cloudId,
|
|
799
800
|
resourceId: resourceId
|
|
800
801
|
});
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
802
|
+
|
|
803
|
+
// Track the real unsubscribe fn once the dynamic import resolves
|
|
804
|
+
var unsubscribe;
|
|
805
|
+
var cancelled = false;
|
|
806
|
+
|
|
807
|
+
// Dynamically import blockSubscription so that graphql-ws is NOT pulled
|
|
808
|
+
// into the SSR/preload bundle that imports this subpath.
|
|
809
|
+
void Promise.resolve().then(function () {
|
|
810
|
+
return _interopRequireWildcard(require('../../clients/block-service/blockSubscription'));
|
|
811
|
+
}).then(function (_ref6) {
|
|
812
|
+
var subscribeToBlockUpdatesWS = _ref6.subscribeToBlockUpdates;
|
|
813
|
+
if (cancelled) {
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
unsubscribe = subscribeToBlockUpdatesWS(blockAri, function (parsedData) {
|
|
817
|
+
// Convert ParsedBlockSubscriptionData to SyncBlockInstance
|
|
818
|
+
var syncBlockInstance = {
|
|
819
|
+
data: {
|
|
820
|
+
content: parsedData.content,
|
|
821
|
+
resourceId: parsedData.blockAri,
|
|
822
|
+
blockInstanceId: parsedData.blockInstanceId,
|
|
823
|
+
sourceAri: parsedData.sourceAri,
|
|
824
|
+
product: parsedData.product,
|
|
825
|
+
createdAt: parsedData.createdAt,
|
|
826
|
+
contentUpdatedAt: parsedData.contentUpdatedAt,
|
|
827
|
+
createdBy: parsedData.createdBy,
|
|
828
|
+
status: parsedData.status
|
|
829
|
+
},
|
|
830
|
+
resourceId: parsedData.resourceId
|
|
831
|
+
};
|
|
832
|
+
onUpdate(syncBlockInstance);
|
|
833
|
+
}, onError);
|
|
834
|
+
}).catch(function (err) {
|
|
835
|
+
if (cancelled) {
|
|
836
|
+
return;
|
|
837
|
+
}
|
|
838
|
+
onError === null || onError === void 0 || onError(err instanceof Error ? err : new Error('Failed to load subscription module'));
|
|
839
|
+
});
|
|
840
|
+
|
|
841
|
+
// Return an unsubscribe fn that works whether the import has resolved or not
|
|
842
|
+
return function () {
|
|
843
|
+
var _unsubscribe;
|
|
844
|
+
cancelled = true;
|
|
845
|
+
(_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 || _unsubscribe();
|
|
846
|
+
};
|
|
819
847
|
}
|
|
820
848
|
}]);
|
|
821
849
|
}();
|
|
@@ -823,12 +851,12 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
823
851
|
* ADFWriteProvider implementation that writes synced block data to Block Service API
|
|
824
852
|
*/
|
|
825
853
|
var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
|
|
826
|
-
function BlockServiceADFWriteProvider(
|
|
827
|
-
var cloudId =
|
|
828
|
-
parentAri =
|
|
829
|
-
parentId =
|
|
830
|
-
product =
|
|
831
|
-
getVersion =
|
|
854
|
+
function BlockServiceADFWriteProvider(_ref7) {
|
|
855
|
+
var cloudId = _ref7.cloudId,
|
|
856
|
+
parentAri = _ref7.parentAri,
|
|
857
|
+
parentId = _ref7.parentId,
|
|
858
|
+
product = _ref7.product,
|
|
859
|
+
getVersion = _ref7.getVersion;
|
|
832
860
|
(0, _classCallCheck2.default)(this, BlockServiceADFWriteProvider);
|
|
833
861
|
this.cloudId = cloudId;
|
|
834
862
|
this.parentAri = parentAri;
|
|
@@ -1083,12 +1111,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
1083
1111
|
}, {
|
|
1084
1112
|
key: "deleteOrphanBlock",
|
|
1085
1113
|
value: function () {
|
|
1086
|
-
var _deleteOrphanBlock = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee0(
|
|
1114
|
+
var _deleteOrphanBlock = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee0(_ref8) {
|
|
1087
1115
|
var blockAri, resourceId, parentAri, deleteReason, stepVersion;
|
|
1088
1116
|
return _regenerator.default.wrap(function _callee0$(_context1) {
|
|
1089
1117
|
while (1) switch (_context1.prev = _context1.next) {
|
|
1090
1118
|
case 0:
|
|
1091
|
-
blockAri =
|
|
1119
|
+
blockAri = _ref8.blockAri, resourceId = _ref8.resourceId, parentAri = _ref8.parentAri, deleteReason = _ref8.deleteReason;
|
|
1092
1120
|
_context1.prev = 1;
|
|
1093
1121
|
if (!this.getVersion) {
|
|
1094
1122
|
_context1.next = 8;
|
|
@@ -1439,12 +1467,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
1439
1467
|
}()
|
|
1440
1468
|
}]);
|
|
1441
1469
|
}();
|
|
1442
|
-
var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(
|
|
1443
|
-
var cloudId =
|
|
1444
|
-
parentAri =
|
|
1445
|
-
parentId =
|
|
1446
|
-
product =
|
|
1447
|
-
getVersion =
|
|
1470
|
+
var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_ref9) {
|
|
1471
|
+
var cloudId = _ref9.cloudId,
|
|
1472
|
+
parentAri = _ref9.parentAri,
|
|
1473
|
+
parentId = _ref9.parentId,
|
|
1474
|
+
product = _ref9.product,
|
|
1475
|
+
getVersion = _ref9.getVersion;
|
|
1448
1476
|
return {
|
|
1449
1477
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1450
1478
|
cloudId: cloudId,
|
|
@@ -1459,12 +1487,12 @@ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_re
|
|
|
1459
1487
|
})
|
|
1460
1488
|
};
|
|
1461
1489
|
};
|
|
1462
|
-
var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(
|
|
1463
|
-
var cloudId =
|
|
1464
|
-
parentAri =
|
|
1465
|
-
parentId =
|
|
1466
|
-
product =
|
|
1467
|
-
getVersion =
|
|
1490
|
+
var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref0) {
|
|
1491
|
+
var cloudId = _ref0.cloudId,
|
|
1492
|
+
parentAri = _ref0.parentAri,
|
|
1493
|
+
parentId = _ref0.parentId,
|
|
1494
|
+
product = _ref0.product,
|
|
1495
|
+
getVersion = _ref0.getVersion;
|
|
1468
1496
|
return (0, _react.useMemo)(function () {
|
|
1469
1497
|
return createBlockServiceAPIProviders({
|
|
1470
1498
|
cloudId: cloudId,
|
|
@@ -1475,9 +1503,9 @@ var useMemoizedBlockServiceAPIProviders = exports.useMemoizedBlockServiceAPIProv
|
|
|
1475
1503
|
});
|
|
1476
1504
|
}, [cloudId, parentAri, parentId, product, getVersion]);
|
|
1477
1505
|
};
|
|
1478
|
-
var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(
|
|
1479
|
-
var cloudId =
|
|
1480
|
-
parentAri =
|
|
1506
|
+
var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref1) {
|
|
1507
|
+
var cloudId = _ref1.cloudId,
|
|
1508
|
+
parentAri = _ref1.parentAri;
|
|
1481
1509
|
return {
|
|
1482
1510
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1483
1511
|
cloudId: cloudId,
|
|
@@ -1490,9 +1518,9 @@ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnl
|
|
|
1490
1518
|
/**
|
|
1491
1519
|
* If the parentAri is not a valid ARI, pass in an empty string.
|
|
1492
1520
|
*/
|
|
1493
|
-
var useMemoizedBlockServiceFetchOnlyAPIProvider = exports.useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(
|
|
1494
|
-
var cloudId =
|
|
1495
|
-
parentAri =
|
|
1521
|
+
var useMemoizedBlockServiceFetchOnlyAPIProvider = exports.useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref10) {
|
|
1522
|
+
var cloudId = _ref10.cloudId,
|
|
1523
|
+
parentAri = _ref10.parentAri;
|
|
1496
1524
|
return (0, _react.useMemo)(function () {
|
|
1497
1525
|
return createBlockServiceFetchOnlyAPIProvider({
|
|
1498
1526
|
cloudId: cloudId,
|
|
@@ -291,6 +291,18 @@ var SourceSyncBlockStoreManager = exports.SourceSyncBlockStoreManager = /*#__PUR
|
|
|
291
291
|
return this.creationCompletionCallbacks.has(resourceId);
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
+
/**
|
|
295
|
+
* Returns `true` when at least one sync block is waiting for its backend
|
|
296
|
+
* creation call to complete. Used as a cheap pre-check in the decoration
|
|
297
|
+
* rebuild path to avoid a full `doc.descendants()` walk when no creations
|
|
298
|
+
* are in flight (see EDITOR-6930).
|
|
299
|
+
*/
|
|
300
|
+
}, {
|
|
301
|
+
key: "hasPendingCreations",
|
|
302
|
+
value: function hasPendingCreations() {
|
|
303
|
+
return this.creationCompletionCallbacks.size > 0;
|
|
304
|
+
}
|
|
305
|
+
|
|
294
306
|
/**
|
|
295
307
|
* Fires callback to insert node (if creation is successful) and clears pending creation data
|
|
296
308
|
* @param success
|
|
@@ -4,7 +4,6 @@ import { fg } from '@atlaskit/platform-feature-flags';
|
|
|
4
4
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
5
5
|
import { generateBlockAri, generateBlockAriFromReference } from '../../clients/block-service/ari';
|
|
6
6
|
import { batchRetrieveSyncedBlocks, BlockError, BlockNotFoundError, BlockTimeoutError, createSyncedBlock, deleteSyncedBlock, getReferenceSyncedBlocks, getReferenceSyncedBlocksByBlockAri, getSyncedBlockContent, updateReferenceSyncedBlockOnDocument, updateSyncedBlock, updateSyncedBlocks } from '../../clients/block-service/blockService';
|
|
7
|
-
import { subscribeToBlockUpdates as subscribeToBlockUpdatesWS } from '../../clients/block-service/blockSubscription';
|
|
8
7
|
import { SyncBlockError } from '../../common/types';
|
|
9
8
|
import { stringifyError } from '../../utils/errorHandling';
|
|
10
9
|
import { createResourceIdForReference } from '../../utils/resourceId';
|
|
@@ -540,24 +539,50 @@ class BlockServiceADFFetchProvider {
|
|
|
540
539
|
cloudId: this.cloudId,
|
|
541
540
|
resourceId
|
|
542
541
|
});
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
542
|
+
|
|
543
|
+
// Track the real unsubscribe fn once the dynamic import resolves
|
|
544
|
+
let unsubscribe;
|
|
545
|
+
let cancelled = false;
|
|
546
|
+
|
|
547
|
+
// Dynamically import blockSubscription so that graphql-ws is NOT pulled
|
|
548
|
+
// into the SSR/preload bundle that imports this subpath.
|
|
549
|
+
void import('../../clients/block-service/blockSubscription').then(({
|
|
550
|
+
subscribeToBlockUpdates: subscribeToBlockUpdatesWS
|
|
551
|
+
}) => {
|
|
552
|
+
if (cancelled) {
|
|
553
|
+
return;
|
|
554
|
+
}
|
|
555
|
+
unsubscribe = subscribeToBlockUpdatesWS(blockAri, parsedData => {
|
|
556
|
+
// Convert ParsedBlockSubscriptionData to SyncBlockInstance
|
|
557
|
+
const syncBlockInstance = {
|
|
558
|
+
data: {
|
|
559
|
+
content: parsedData.content,
|
|
560
|
+
resourceId: parsedData.blockAri,
|
|
561
|
+
blockInstanceId: parsedData.blockInstanceId,
|
|
562
|
+
sourceAri: parsedData.sourceAri,
|
|
563
|
+
product: parsedData.product,
|
|
564
|
+
createdAt: parsedData.createdAt,
|
|
565
|
+
contentUpdatedAt: parsedData.contentUpdatedAt,
|
|
566
|
+
createdBy: parsedData.createdBy,
|
|
567
|
+
status: parsedData.status
|
|
568
|
+
},
|
|
569
|
+
resourceId: parsedData.resourceId
|
|
570
|
+
};
|
|
571
|
+
onUpdate(syncBlockInstance);
|
|
572
|
+
}, onError);
|
|
573
|
+
}).catch(err => {
|
|
574
|
+
if (cancelled) {
|
|
575
|
+
return;
|
|
576
|
+
}
|
|
577
|
+
onError === null || onError === void 0 ? void 0 : onError(err instanceof Error ? err : new Error('Failed to load subscription module'));
|
|
578
|
+
});
|
|
579
|
+
|
|
580
|
+
// Return an unsubscribe fn that works whether the import has resolved or not
|
|
581
|
+
return () => {
|
|
582
|
+
var _unsubscribe;
|
|
583
|
+
cancelled = true;
|
|
584
|
+
(_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 ? void 0 : _unsubscribe();
|
|
585
|
+
};
|
|
561
586
|
}
|
|
562
587
|
}
|
|
563
588
|
/**
|
|
@@ -227,6 +227,16 @@ export class SourceSyncBlockStoreManager {
|
|
|
227
227
|
return this.creationCompletionCallbacks.has(resourceId);
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Returns `true` when at least one sync block is waiting for its backend
|
|
232
|
+
* creation call to complete. Used as a cheap pre-check in the decoration
|
|
233
|
+
* rebuild path to avoid a full `doc.descendants()` walk when no creations
|
|
234
|
+
* are in flight (see EDITOR-6930).
|
|
235
|
+
*/
|
|
236
|
+
hasPendingCreations() {
|
|
237
|
+
return this.creationCompletionCallbacks.size > 0;
|
|
238
|
+
}
|
|
239
|
+
|
|
230
240
|
/**
|
|
231
241
|
* Fires callback to insert node (if creation is successful) and clears pending creation data
|
|
232
242
|
* @param success
|
|
@@ -15,7 +15,6 @@ import { fg } from '@atlaskit/platform-feature-flags';
|
|
|
15
15
|
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
16
16
|
import { generateBlockAri as _generateBlockAri, generateBlockAriFromReference } from '../../clients/block-service/ari';
|
|
17
17
|
import { batchRetrieveSyncedBlocks, BlockError, BlockNotFoundError, BlockTimeoutError, createSyncedBlock, deleteSyncedBlock, getReferenceSyncedBlocks, getReferenceSyncedBlocksByBlockAri, getSyncedBlockContent, updateReferenceSyncedBlockOnDocument, updateSyncedBlock, updateSyncedBlocks } from '../../clients/block-service/blockService';
|
|
18
|
-
import { subscribeToBlockUpdates as subscribeToBlockUpdatesWS } from '../../clients/block-service/blockSubscription';
|
|
19
18
|
import { SyncBlockError } from '../../common/types';
|
|
20
19
|
import { stringifyError } from '../../utils/errorHandling';
|
|
21
20
|
import { createResourceIdForReference } from '../../utils/resourceId';
|
|
@@ -793,24 +792,49 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
793
792
|
cloudId: this.cloudId,
|
|
794
793
|
resourceId: resourceId
|
|
795
794
|
});
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
795
|
+
|
|
796
|
+
// Track the real unsubscribe fn once the dynamic import resolves
|
|
797
|
+
var unsubscribe;
|
|
798
|
+
var cancelled = false;
|
|
799
|
+
|
|
800
|
+
// Dynamically import blockSubscription so that graphql-ws is NOT pulled
|
|
801
|
+
// into the SSR/preload bundle that imports this subpath.
|
|
802
|
+
void import('../../clients/block-service/blockSubscription').then(function (_ref6) {
|
|
803
|
+
var subscribeToBlockUpdatesWS = _ref6.subscribeToBlockUpdates;
|
|
804
|
+
if (cancelled) {
|
|
805
|
+
return;
|
|
806
|
+
}
|
|
807
|
+
unsubscribe = subscribeToBlockUpdatesWS(blockAri, function (parsedData) {
|
|
808
|
+
// Convert ParsedBlockSubscriptionData to SyncBlockInstance
|
|
809
|
+
var syncBlockInstance = {
|
|
810
|
+
data: {
|
|
811
|
+
content: parsedData.content,
|
|
812
|
+
resourceId: parsedData.blockAri,
|
|
813
|
+
blockInstanceId: parsedData.blockInstanceId,
|
|
814
|
+
sourceAri: parsedData.sourceAri,
|
|
815
|
+
product: parsedData.product,
|
|
816
|
+
createdAt: parsedData.createdAt,
|
|
817
|
+
contentUpdatedAt: parsedData.contentUpdatedAt,
|
|
818
|
+
createdBy: parsedData.createdBy,
|
|
819
|
+
status: parsedData.status
|
|
820
|
+
},
|
|
821
|
+
resourceId: parsedData.resourceId
|
|
822
|
+
};
|
|
823
|
+
onUpdate(syncBlockInstance);
|
|
824
|
+
}, onError);
|
|
825
|
+
}).catch(function (err) {
|
|
826
|
+
if (cancelled) {
|
|
827
|
+
return;
|
|
828
|
+
}
|
|
829
|
+
onError === null || onError === void 0 || onError(err instanceof Error ? err : new Error('Failed to load subscription module'));
|
|
830
|
+
});
|
|
831
|
+
|
|
832
|
+
// Return an unsubscribe fn that works whether the import has resolved or not
|
|
833
|
+
return function () {
|
|
834
|
+
var _unsubscribe;
|
|
835
|
+
cancelled = true;
|
|
836
|
+
(_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 || _unsubscribe();
|
|
837
|
+
};
|
|
814
838
|
}
|
|
815
839
|
}]);
|
|
816
840
|
}();
|
|
@@ -818,12 +842,12 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
|
|
|
818
842
|
* ADFWriteProvider implementation that writes synced block data to Block Service API
|
|
819
843
|
*/
|
|
820
844
|
var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
|
|
821
|
-
function BlockServiceADFWriteProvider(
|
|
822
|
-
var cloudId =
|
|
823
|
-
parentAri =
|
|
824
|
-
parentId =
|
|
825
|
-
product =
|
|
826
|
-
getVersion =
|
|
845
|
+
function BlockServiceADFWriteProvider(_ref7) {
|
|
846
|
+
var cloudId = _ref7.cloudId,
|
|
847
|
+
parentAri = _ref7.parentAri,
|
|
848
|
+
parentId = _ref7.parentId,
|
|
849
|
+
product = _ref7.product,
|
|
850
|
+
getVersion = _ref7.getVersion;
|
|
827
851
|
_classCallCheck(this, BlockServiceADFWriteProvider);
|
|
828
852
|
this.cloudId = cloudId;
|
|
829
853
|
this.parentAri = parentAri;
|
|
@@ -1078,12 +1102,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
1078
1102
|
}, {
|
|
1079
1103
|
key: "deleteOrphanBlock",
|
|
1080
1104
|
value: function () {
|
|
1081
|
-
var _deleteOrphanBlock = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee0(
|
|
1105
|
+
var _deleteOrphanBlock = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee0(_ref8) {
|
|
1082
1106
|
var blockAri, resourceId, parentAri, deleteReason, stepVersion;
|
|
1083
1107
|
return _regeneratorRuntime.wrap(function _callee0$(_context1) {
|
|
1084
1108
|
while (1) switch (_context1.prev = _context1.next) {
|
|
1085
1109
|
case 0:
|
|
1086
|
-
blockAri =
|
|
1110
|
+
blockAri = _ref8.blockAri, resourceId = _ref8.resourceId, parentAri = _ref8.parentAri, deleteReason = _ref8.deleteReason;
|
|
1087
1111
|
_context1.prev = 1;
|
|
1088
1112
|
if (!this.getVersion) {
|
|
1089
1113
|
_context1.next = 8;
|
|
@@ -1434,12 +1458,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
1434
1458
|
}()
|
|
1435
1459
|
}]);
|
|
1436
1460
|
}();
|
|
1437
|
-
var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(
|
|
1438
|
-
var cloudId =
|
|
1439
|
-
parentAri =
|
|
1440
|
-
parentId =
|
|
1441
|
-
product =
|
|
1442
|
-
getVersion =
|
|
1461
|
+
var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_ref9) {
|
|
1462
|
+
var cloudId = _ref9.cloudId,
|
|
1463
|
+
parentAri = _ref9.parentAri,
|
|
1464
|
+
parentId = _ref9.parentId,
|
|
1465
|
+
product = _ref9.product,
|
|
1466
|
+
getVersion = _ref9.getVersion;
|
|
1443
1467
|
return {
|
|
1444
1468
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1445
1469
|
cloudId: cloudId,
|
|
@@ -1454,12 +1478,12 @@ var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(_re
|
|
|
1454
1478
|
})
|
|
1455
1479
|
};
|
|
1456
1480
|
};
|
|
1457
|
-
export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(
|
|
1458
|
-
var cloudId =
|
|
1459
|
-
parentAri =
|
|
1460
|
-
parentId =
|
|
1461
|
-
product =
|
|
1462
|
-
getVersion =
|
|
1481
|
+
export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref0) {
|
|
1482
|
+
var cloudId = _ref0.cloudId,
|
|
1483
|
+
parentAri = _ref0.parentAri,
|
|
1484
|
+
parentId = _ref0.parentId,
|
|
1485
|
+
product = _ref0.product,
|
|
1486
|
+
getVersion = _ref0.getVersion;
|
|
1463
1487
|
return useMemo(function () {
|
|
1464
1488
|
return createBlockServiceAPIProviders({
|
|
1465
1489
|
cloudId: cloudId,
|
|
@@ -1470,9 +1494,9 @@ export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServic
|
|
|
1470
1494
|
});
|
|
1471
1495
|
}, [cloudId, parentAri, parentId, product, getVersion]);
|
|
1472
1496
|
};
|
|
1473
|
-
var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(
|
|
1474
|
-
var cloudId =
|
|
1475
|
-
parentAri =
|
|
1497
|
+
var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnlyAPIProvider(_ref1) {
|
|
1498
|
+
var cloudId = _ref1.cloudId,
|
|
1499
|
+
parentAri = _ref1.parentAri;
|
|
1476
1500
|
return {
|
|
1477
1501
|
fetchProvider: new BlockServiceADFFetchProvider({
|
|
1478
1502
|
cloudId: cloudId,
|
|
@@ -1485,9 +1509,9 @@ var createBlockServiceFetchOnlyAPIProvider = function createBlockServiceFetchOnl
|
|
|
1485
1509
|
/**
|
|
1486
1510
|
* If the parentAri is not a valid ARI, pass in an empty string.
|
|
1487
1511
|
*/
|
|
1488
|
-
export var useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(
|
|
1489
|
-
var cloudId =
|
|
1490
|
-
parentAri =
|
|
1512
|
+
export var useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref10) {
|
|
1513
|
+
var cloudId = _ref10.cloudId,
|
|
1514
|
+
parentAri = _ref10.parentAri;
|
|
1491
1515
|
return useMemo(function () {
|
|
1492
1516
|
return createBlockServiceFetchOnlyAPIProvider({
|
|
1493
1517
|
cloudId: cloudId,
|
|
@@ -284,6 +284,18 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
284
284
|
return this.creationCompletionCallbacks.has(resourceId);
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
+
/**
|
|
288
|
+
* Returns `true` when at least one sync block is waiting for its backend
|
|
289
|
+
* creation call to complete. Used as a cheap pre-check in the decoration
|
|
290
|
+
* rebuild path to avoid a full `doc.descendants()` walk when no creations
|
|
291
|
+
* are in flight (see EDITOR-6930).
|
|
292
|
+
*/
|
|
293
|
+
}, {
|
|
294
|
+
key: "hasPendingCreations",
|
|
295
|
+
value: function hasPendingCreations() {
|
|
296
|
+
return this.creationCompletionCallbacks.size > 0;
|
|
297
|
+
}
|
|
298
|
+
|
|
287
299
|
/**
|
|
288
300
|
* Fires callback to insert node (if creation is successful) and clears pending creation data
|
|
289
301
|
* @param success
|
|
@@ -44,6 +44,13 @@ export declare class SourceSyncBlockStoreManager {
|
|
|
44
44
|
flush(): Promise<boolean>;
|
|
45
45
|
hasUnsavedChanges(): boolean;
|
|
46
46
|
isPendingCreation(resourceId: ResourceId): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Returns `true` when at least one sync block is waiting for its backend
|
|
49
|
+
* creation call to complete. Used as a cheap pre-check in the decoration
|
|
50
|
+
* rebuild path to avoid a full `doc.descendants()` walk when no creations
|
|
51
|
+
* are in flight (see EDITOR-6930).
|
|
52
|
+
*/
|
|
53
|
+
hasPendingCreations(): boolean;
|
|
47
54
|
/**
|
|
48
55
|
* Fires callback to insert node (if creation is successful) and clears pending creation data
|
|
49
56
|
* @param success
|
|
@@ -44,6 +44,13 @@ export declare class SourceSyncBlockStoreManager {
|
|
|
44
44
|
flush(): Promise<boolean>;
|
|
45
45
|
hasUnsavedChanges(): boolean;
|
|
46
46
|
isPendingCreation(resourceId: ResourceId): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Returns `true` when at least one sync block is waiting for its backend
|
|
49
|
+
* creation call to complete. Used as a cheap pre-check in the decoration
|
|
50
|
+
* rebuild path to avoid a full `doc.descendants()` walk when no creations
|
|
51
|
+
* are in flight (see EDITOR-6930).
|
|
52
|
+
*/
|
|
53
|
+
hasPendingCreations(): boolean;
|
|
47
54
|
/**
|
|
48
55
|
* Fires callback to insert node (if creation is successful) and clears pending creation data
|
|
49
56
|
* @param success
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@atlaskit/editor-prosemirror": "^7.3.0",
|
|
30
30
|
"@atlaskit/node-data-provider": "^11.0.0",
|
|
31
31
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
32
|
-
"@atlaskit/tmp-editor-statsig": "^77.
|
|
32
|
+
"@atlaskit/tmp-editor-statsig": "^77.3.0",
|
|
33
33
|
"@babel/runtime": "^7.0.0",
|
|
34
34
|
"@compiled/react": "^0.20.0",
|
|
35
35
|
"graphql-ws": "^5.14.2",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"uuid": "^3.1.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@atlaskit/editor-common": "^114.
|
|
41
|
+
"@atlaskit/editor-common": "^114.26.0",
|
|
42
42
|
"react": "^18.2.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
"name": "@atlaskit/editor-synced-block-provider",
|
|
84
|
-
"version": "6.
|
|
84
|
+
"version": "6.5.0",
|
|
85
85
|
"description": "Synced Block Provider for @atlaskit/editor-plugin-synced-block",
|
|
86
86
|
"author": "Atlassian Pty Ltd",
|
|
87
87
|
"license": "Apache-2.0",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/editor-synced-block-provider/providers/block-service/blockServiceAPI",
|
|
3
|
+
"main": "../../../dist/cjs/providers/block-service/blockServiceAPI.js",
|
|
4
|
+
"module": "../../../dist/esm/providers/block-service/blockServiceAPI.js",
|
|
5
|
+
"module:es2019": "../../../dist/es2019/providers/block-service/blockServiceAPI.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../../../dist/types/providers/block-service/blockServiceAPI.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../../../dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/editor-synced-block-provider/providers/types",
|
|
3
|
+
"main": "../../dist/cjs/providers/types.js",
|
|
4
|
+
"module": "../../dist/esm/providers/types.js",
|
|
5
|
+
"module:es2019": "../../dist/es2019/providers/types.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../../dist/types/providers/types.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../../dist/types-ts4.5/providers/types.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atlaskit/editor-synced-block-provider/utils/resourceId",
|
|
3
|
+
"main": "../../dist/cjs/utils/resourceId.js",
|
|
4
|
+
"module": "../../dist/esm/utils/resourceId.js",
|
|
5
|
+
"module:es2019": "../../dist/es2019/utils/resourceId.js",
|
|
6
|
+
"sideEffects": [
|
|
7
|
+
"*.compiled.css"
|
|
8
|
+
],
|
|
9
|
+
"types": "../../dist/types/utils/resourceId.d.ts",
|
|
10
|
+
"typesVersions": {
|
|
11
|
+
">=4.5 <5.9": {
|
|
12
|
+
"*": [
|
|
13
|
+
"../../dist/types-ts4.5/utils/resourceId.d.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|