@atlaskit/editor-synced-block-provider 3.29.0 → 3.29.2
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 +18 -0
- package/dist/cjs/clients/block-service/ari.js +5 -3
- package/dist/cjs/index.js +33 -1
- package/dist/cjs/providers/syncBlockProvider.js +10 -10
- package/dist/cjs/providers/types.js +7 -7
- package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +102 -35
- package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +1 -1
- package/dist/cjs/utils/errorHandling.js +21 -1
- package/dist/cjs/utils/resolveSyncBlockInstance.js +3 -2
- package/dist/cjs/utils/retry.js +2 -1
- package/dist/es2019/clients/block-service/ari.js +5 -3
- package/dist/es2019/index.js +4 -4
- package/dist/es2019/providers/syncBlockProvider.js +4 -4
- package/dist/es2019/providers/types.js +1 -1
- package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +75 -16
- package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +1 -1
- package/dist/es2019/utils/errorHandling.js +21 -1
- package/dist/es2019/utils/resolveSyncBlockInstance.js +3 -2
- package/dist/es2019/utils/retry.js +4 -1
- package/dist/esm/clients/block-service/ari.js +5 -3
- package/dist/esm/index.js +4 -4
- package/dist/esm/providers/syncBlockProvider.js +10 -10
- package/dist/esm/providers/types.js +6 -6
- package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +101 -35
- package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +1 -1
- package/dist/esm/utils/errorHandling.js +20 -0
- package/dist/esm/utils/resolveSyncBlockInstance.js +3 -2
- package/dist/esm/utils/retry.js +2 -1
- package/dist/types/clients/block-service/ari.d.ts +4 -2
- package/dist/types/index.d.ts +6 -4
- package/dist/types/providers/syncBlockProvider.d.ts +4 -4
- package/dist/types/providers/types.d.ts +1 -1
- package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +5 -2
- package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +3 -3
- package/dist/types/store-manager/syncBlockStoreManager.d.ts +3 -3
- package/dist/types/utils/errorHandling.d.ts +1 -0
- package/dist/types/utils/resolveSyncBlockInstance.d.ts +3 -2
- package/dist/types-ts4.5/clients/block-service/ari.d.ts +4 -2
- package/dist/types-ts4.5/index.d.ts +6 -4
- package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +4 -4
- package/dist/types-ts4.5/providers/types.d.ts +1 -1
- package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +5 -2
- package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +3 -3
- package/dist/types-ts4.5/store-manager/syncBlockStoreManager.d.ts +3 -3
- package/dist/types-ts4.5/utils/errorHandling.d.ts +1 -0
- package/dist/types-ts4.5/utils/resolveSyncBlockInstance.d.ts +3 -2
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 3.29.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`8806992b3642c`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8806992b3642c) -
|
|
8
|
+
EDITOR-5454 update synced block insert success event to use document inserted event
|
|
9
|
+
- [`0f351c68adbac`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0f351c68adbac) -
|
|
10
|
+
Improve robustness
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
13
|
+
## 3.29.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- [`53c9f85806f98`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/53c9f85806f98) -
|
|
18
|
+
EDITOR-5275 Store synced blocks data in session storage for look up during page transitions
|
|
19
|
+
- Updated dependencies
|
|
20
|
+
|
|
3
21
|
## 3.29.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
|
@@ -35,8 +35,10 @@ var generateBlockAriFromReference = exports.generateBlockAriFromReference = func
|
|
|
35
35
|
};
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* Extracts the local ID from a block ARI.
|
|
39
|
-
*
|
|
38
|
+
* Extracts the local ID from a source block ARI.
|
|
39
|
+
* Designed for source block ARIs of the form: ari:cloud:blocks:{cloudId}:synced-block/{localId}
|
|
40
|
+
* where the localId is a UUID immediately after synced-block/.
|
|
41
|
+
* @param ari - the source block ARI. E.G ari:cloud:blocks:cloudId:synced-block/79d4f3f4-51df-451b-b9a1-751bc77b1e77
|
|
40
42
|
* @returns the localId of the block node. A randomly generated UUID
|
|
41
43
|
*/
|
|
42
44
|
var getLocalIdFromBlockResourceId = exports.getLocalIdFromBlockResourceId = function getLocalIdFromBlockResourceId(ari) {
|
|
@@ -44,7 +46,7 @@ var getLocalIdFromBlockResourceId = exports.getLocalIdFromBlockResourceId = func
|
|
|
44
46
|
if (match !== null && match !== void 0 && match[1]) {
|
|
45
47
|
return match[1];
|
|
46
48
|
}
|
|
47
|
-
throw new Error("Invalid
|
|
49
|
+
throw new Error("Invalid block ARI: ".concat(ari));
|
|
48
50
|
};
|
|
49
51
|
var getProductFromSourceAri = exports.getProductFromSourceAri = function getProductFromSourceAri(ari) {
|
|
50
52
|
var jiraMatch = ari === null || ari === void 0 ? void 0 : ari.search(/ari:cloud:jira:.*/);
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "BlockError", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function get() {
|
|
9
|
+
return _blockService.BlockError;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "ReferenceSyncBlockStoreManager", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _referenceSyncBlockStoreManager.ReferenceSyncBlockStoreManager;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
6
18
|
Object.defineProperty(exports, "SyncBlockError", {
|
|
7
19
|
enumerable: true,
|
|
8
20
|
get: function get() {
|
|
@@ -18,7 +30,7 @@ Object.defineProperty(exports, "SyncBlockStoreManager", {
|
|
|
18
30
|
Object.defineProperty(exports, "SyncedBlockProvider", {
|
|
19
31
|
enumerable: true,
|
|
20
32
|
get: function get() {
|
|
21
|
-
return _syncBlockProvider.
|
|
33
|
+
return _syncBlockProvider.SyncedBlockProvider;
|
|
22
34
|
}
|
|
23
35
|
});
|
|
24
36
|
Object.defineProperty(exports, "batchFetchData", {
|
|
@@ -27,6 +39,12 @@ Object.defineProperty(exports, "batchFetchData", {
|
|
|
27
39
|
return _blockServiceAPI.batchFetchData;
|
|
28
40
|
}
|
|
29
41
|
});
|
|
42
|
+
Object.defineProperty(exports, "blockAriToResourceId", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function get() {
|
|
45
|
+
return _blockServiceAPI.blockAriToResourceId;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
30
48
|
Object.defineProperty(exports, "convertPMNodesToSyncBlockNodes", {
|
|
31
49
|
enumerable: true,
|
|
32
50
|
get: function get() {
|
|
@@ -45,6 +63,12 @@ Object.defineProperty(exports, "convertSyncBlockPMNodeToSyncBlockData", {
|
|
|
45
63
|
return _utils.convertSyncBlockPMNodeToSyncBlockData;
|
|
46
64
|
}
|
|
47
65
|
});
|
|
66
|
+
Object.defineProperty(exports, "convertToSyncBlockData", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function get() {
|
|
69
|
+
return _blockServiceAPI.convertToSyncBlockData;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
48
72
|
Object.defineProperty(exports, "createResourceIdForReference", {
|
|
49
73
|
enumerable: true,
|
|
50
74
|
get: function get() {
|
|
@@ -57,6 +81,12 @@ Object.defineProperty(exports, "createSyncBlockNode", {
|
|
|
57
81
|
return _utils.createSyncBlockNode;
|
|
58
82
|
}
|
|
59
83
|
});
|
|
84
|
+
Object.defineProperty(exports, "extractResourceIdFromBlockAri", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
get: function get() {
|
|
87
|
+
return _blockServiceAPI.extractResourceIdFromBlockAri;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
60
90
|
Object.defineProperty(exports, "fetchConfluencePageInfo", {
|
|
61
91
|
enumerable: true,
|
|
62
92
|
get: function get() {
|
|
@@ -207,12 +237,14 @@ var _useFetchSyncBlockData = require("./hooks/useFetchSyncBlockData");
|
|
|
207
237
|
var _useFetchSyncBlockTitle = require("./hooks/useFetchSyncBlockTitle");
|
|
208
238
|
var _useHandleContentChanges = require("./hooks/useHandleContentChanges");
|
|
209
239
|
var _ari = require("./clients/block-service/ari");
|
|
240
|
+
var _blockService = require("./clients/block-service/blockService");
|
|
210
241
|
var _ari2 = require("./clients/confluence/ari");
|
|
211
242
|
var _fetchMediaToken = require("./clients/confluence/fetchMediaToken");
|
|
212
243
|
var _ari3 = require("./clients/jira/ari");
|
|
213
244
|
var _blockServiceAPI = require("./providers/block-service/blockServiceAPI");
|
|
214
245
|
var _sourceInfo = require("./clients/confluence/sourceInfo");
|
|
215
246
|
var _syncBlockProvider = require("./providers/syncBlockProvider");
|
|
247
|
+
var _referenceSyncBlockStoreManager = require("./store-manager/referenceSyncBlockStoreManager");
|
|
216
248
|
var _syncBlockStoreManager = require("./store-manager/syncBlockStoreManager");
|
|
217
249
|
var _resolveSyncBlockInstance = require("./utils/resolveSyncBlockInstance");
|
|
218
250
|
var _resourceId = require("./utils/resourceId");
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.useMemoizedSyncedBlockProvider = exports.
|
|
7
|
+
exports.useMemoizedSyncedBlockProvider = exports.SyncedBlockProvider = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -24,26 +24,26 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
24
24
|
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; }
|
|
25
25
|
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)); }
|
|
26
26
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
27
|
-
var
|
|
27
|
+
var SyncedBlockProvider = exports.SyncedBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
28
28
|
/**
|
|
29
|
-
* Constructor for the
|
|
29
|
+
* Constructor for the SyncedBlockProvider
|
|
30
30
|
*
|
|
31
31
|
* @param fetchProvider
|
|
32
32
|
* @param writeProvider
|
|
33
33
|
* @param nestedRendererDataProviders
|
|
34
34
|
*/
|
|
35
|
-
function
|
|
35
|
+
function SyncedBlockProvider(fetchProvider, writeProvider) {
|
|
36
36
|
var _this;
|
|
37
|
-
(0, _classCallCheck2.default)(this,
|
|
38
|
-
_this = _callSuper(this,
|
|
37
|
+
(0, _classCallCheck2.default)(this, SyncedBlockProvider);
|
|
38
|
+
_this = _callSuper(this, SyncedBlockProvider);
|
|
39
39
|
(0, _defineProperty2.default)(_this, "name", 'syncBlockProvider');
|
|
40
40
|
_this.fetchProvider = fetchProvider;
|
|
41
41
|
_this.writeProvider = writeProvider;
|
|
42
42
|
_this.providerOptions = {};
|
|
43
43
|
return _this;
|
|
44
44
|
}
|
|
45
|
-
(0, _inherits2.default)(
|
|
46
|
-
return (0, _createClass2.default)(
|
|
45
|
+
(0, _inherits2.default)(SyncedBlockProvider, _SyncBlockDataProvide);
|
|
46
|
+
return (0, _createClass2.default)(SyncedBlockProvider, [{
|
|
47
47
|
key: "setProviderOptions",
|
|
48
48
|
value: function setProviderOptions(providerOptions) {
|
|
49
49
|
this.providerOptions = providerOptions;
|
|
@@ -441,11 +441,11 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
441
441
|
return undefined;
|
|
442
442
|
}
|
|
443
443
|
}]);
|
|
444
|
-
}(_types2.
|
|
444
|
+
}(_types2.SyncBlockDataProviderInterface);
|
|
445
445
|
var createSyncedBlockProvider = function createSyncedBlockProvider(_ref) {
|
|
446
446
|
var fetchProvider = _ref.fetchProvider,
|
|
447
447
|
writeProvider = _ref.writeProvider;
|
|
448
|
-
return new
|
|
448
|
+
return new SyncedBlockProvider(fetchProvider, writeProvider);
|
|
449
449
|
};
|
|
450
450
|
var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvider(_ref2) {
|
|
451
451
|
var fetchProvider = _ref2.fetchProvider,
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.SyncBlockDataProviderInterface = void 0;
|
|
8
8
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
9
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
10
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -18,11 +18,11 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
|
|
|
18
18
|
* Mainly used for representing the state of a sync block after fetching from a data provider.
|
|
19
19
|
* This will be used in both data processing and rendering contexts.
|
|
20
20
|
*/
|
|
21
|
-
var
|
|
22
|
-
function
|
|
23
|
-
(0, _classCallCheck2.default)(this,
|
|
24
|
-
return _callSuper(this,
|
|
21
|
+
var SyncBlockDataProviderInterface = exports.SyncBlockDataProviderInterface = /*#__PURE__*/function (_NodeDataProvider) {
|
|
22
|
+
function SyncBlockDataProviderInterface() {
|
|
23
|
+
(0, _classCallCheck2.default)(this, SyncBlockDataProviderInterface);
|
|
24
|
+
return _callSuper(this, SyncBlockDataProviderInterface, arguments);
|
|
25
25
|
}
|
|
26
|
-
(0, _inherits2.default)(
|
|
27
|
-
return (0, _createClass2.default)(
|
|
26
|
+
(0, _inherits2.default)(SyncBlockDataProviderInterface, _NodeDataProvider);
|
|
27
|
+
return (0, _createClass2.default)(SyncBlockDataProviderInterface);
|
|
28
28
|
}(_nodeDataProvider.NodeDataProvider);
|
|
@@ -27,6 +27,8 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
27
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; } } }; }
|
|
28
28
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
29
29
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
30
|
+
var SESSION_STORAGE_KEY_PREFIX = 'sync-block-data-';
|
|
31
|
+
|
|
30
32
|
// A store manager responsible for the lifecycle and state management of reference sync blocks in an editor instance.
|
|
31
33
|
// Designed to manage local in-memory state and synchronize with an external data provider.
|
|
32
34
|
// Supports fetch, cache, and subscription for sync block data.
|
|
@@ -34,7 +36,8 @@ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length)
|
|
|
34
36
|
// Can be used in both editor and renderer contexts.
|
|
35
37
|
var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
36
38
|
function ReferenceSyncBlockStoreManager(dataProvider) {
|
|
37
|
-
var _this = this
|
|
39
|
+
var _this = this,
|
|
40
|
+
_this$dataProvider;
|
|
38
41
|
(0, _classCallCheck2.default)(this, ReferenceSyncBlockStoreManager);
|
|
39
42
|
// Keeps track of addition and deletion of reference synced blocks on the document
|
|
40
43
|
// This starts as true to always flush the cache when document is saved for the first time
|
|
@@ -81,6 +84,9 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
81
84
|
this.graphqlSubscriptions = new Map();
|
|
82
85
|
this.subscriptionChangeListeners = new Set();
|
|
83
86
|
this.newlyAddedSyncBlocks = new Set();
|
|
87
|
+
|
|
88
|
+
// The provider might have SSR data cache already set, so we need to update the cache in session storage
|
|
89
|
+
this.setSSRDataInSessionStorage((_this$dataProvider = this.dataProvider) === null || _this$dataProvider === void 0 ? void 0 : _this$dataProvider.getNodeDataCacheKeys());
|
|
84
90
|
}
|
|
85
91
|
|
|
86
92
|
/**
|
|
@@ -217,9 +223,57 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
217
223
|
}, {
|
|
218
224
|
key: "getInitialSyncBlockData",
|
|
219
225
|
value: function getInitialSyncBlockData(resourceId) {
|
|
220
|
-
var _this$
|
|
226
|
+
var _this$dataProvider2;
|
|
221
227
|
var syncBlockNode = (0, _utils.createSyncBlockNode)('', resourceId);
|
|
222
|
-
|
|
228
|
+
var data = (_this$dataProvider2 = this.dataProvider) === null || _this$dataProvider2 === void 0 || (_this$dataProvider2 = _this$dataProvider2.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider2 === void 0 ? void 0 : _this$dataProvider2.data;
|
|
229
|
+
if (data) {
|
|
230
|
+
return data;
|
|
231
|
+
}
|
|
232
|
+
if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_3')) {
|
|
233
|
+
var sessionData = this.getSyncBlockDataFromSessionStorage(resourceId);
|
|
234
|
+
if (sessionData) {
|
|
235
|
+
return sessionData;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
}, {
|
|
241
|
+
key: "updateCacheInSessionStorage",
|
|
242
|
+
value: function updateCacheInSessionStorage(resourceId) {
|
|
243
|
+
try {
|
|
244
|
+
var latestData = this.getFromCache(resourceId);
|
|
245
|
+
if (latestData) {
|
|
246
|
+
sessionStorage.setItem("".concat(SESSION_STORAGE_KEY_PREFIX).concat(resourceId), JSON.stringify(latestData));
|
|
247
|
+
}
|
|
248
|
+
} catch (error) {
|
|
249
|
+
(0, _monitoring.logException)(error, {
|
|
250
|
+
location: 'editor-synced-block-provider/referenceSyncBlockStoreManager/updateCacheInSessionStorage'
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}, {
|
|
255
|
+
key: "getSyncBlockDataFromSessionStorage",
|
|
256
|
+
value: function getSyncBlockDataFromSessionStorage(resourceId) {
|
|
257
|
+
var sessionData = null;
|
|
258
|
+
try {
|
|
259
|
+
sessionData = sessionStorage.getItem("".concat(SESSION_STORAGE_KEY_PREFIX).concat(resourceId));
|
|
260
|
+
} catch (error) {
|
|
261
|
+
(0, _monitoring.logException)(error, {
|
|
262
|
+
location: 'editor-synced-block-provider/referenceSyncBlockStoreManager/getSyncBlockDataFromSessionStorage'
|
|
263
|
+
});
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
if (!sessionData) {
|
|
267
|
+
return undefined;
|
|
268
|
+
}
|
|
269
|
+
try {
|
|
270
|
+
return JSON.parse(sessionData);
|
|
271
|
+
} catch (error) {
|
|
272
|
+
(0, _monitoring.logException)(error, {
|
|
273
|
+
location: 'editor-synced-block-provider/referenceSyncBlockStoreManager/getSyncBlockDataFromSessionStorage'
|
|
274
|
+
});
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
223
277
|
}
|
|
224
278
|
|
|
225
279
|
/**
|
|
@@ -324,13 +378,13 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
324
378
|
}, {
|
|
325
379
|
key: "setupGraphQLSubscription",
|
|
326
380
|
value: function setupGraphQLSubscription(resourceId) {
|
|
327
|
-
var _this$
|
|
381
|
+
var _this$dataProvider3,
|
|
328
382
|
_this4 = this;
|
|
329
383
|
// Don't set up duplicate subscriptions
|
|
330
384
|
if (this.graphqlSubscriptions.has(resourceId)) {
|
|
331
385
|
return;
|
|
332
386
|
}
|
|
333
|
-
if (!((_this$
|
|
387
|
+
if (!((_this$dataProvider3 = this.dataProvider) !== null && _this$dataProvider3 !== void 0 && _this$dataProvider3.subscribeToBlockUpdates)) {
|
|
334
388
|
return;
|
|
335
389
|
}
|
|
336
390
|
var unsubscribe = this.dataProvider.subscribeToBlockUpdates(resourceId, function (syncBlockInstance) {
|
|
@@ -773,8 +827,8 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
773
827
|
value: function updateCache(syncBlock) {
|
|
774
828
|
var resourceId = syncBlock.resourceId;
|
|
775
829
|
if (resourceId) {
|
|
776
|
-
var _this$
|
|
777
|
-
(_this$
|
|
830
|
+
var _this$dataProvider4;
|
|
831
|
+
(_this$dataProvider4 = this.dataProvider) === null || _this$dataProvider4 === void 0 || _this$dataProvider4.updateCache((0, _defineProperty2.default)({}, resourceId, syncBlock), {
|
|
778
832
|
strategy: 'merge',
|
|
779
833
|
source: 'network'
|
|
780
834
|
});
|
|
@@ -784,6 +838,9 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
784
838
|
callback(syncBlock);
|
|
785
839
|
});
|
|
786
840
|
}
|
|
841
|
+
if ((0, _platformFeatureFlags.fg)('platform_synced_block_patch_3')) {
|
|
842
|
+
this.updateCacheInSessionStorage(resourceId);
|
|
843
|
+
}
|
|
787
844
|
}
|
|
788
845
|
}
|
|
789
846
|
}, {
|
|
@@ -799,15 +856,15 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
799
856
|
}, {
|
|
800
857
|
key: "getFromCache",
|
|
801
858
|
value: function getFromCache(resourceId) {
|
|
802
|
-
var _this$
|
|
859
|
+
var _this$dataProvider5;
|
|
803
860
|
var syncBlockNode = (0, _utils.createSyncBlockNode)('', resourceId);
|
|
804
|
-
return (_this$
|
|
861
|
+
return (_this$dataProvider5 = this.dataProvider) === null || _this$dataProvider5 === void 0 || (_this$dataProvider5 = _this$dataProvider5.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider5 === void 0 ? void 0 : _this$dataProvider5.data;
|
|
805
862
|
}
|
|
806
863
|
}, {
|
|
807
864
|
key: "deleteFromCache",
|
|
808
865
|
value: function deleteFromCache(resourceId) {
|
|
809
|
-
var _this$
|
|
810
|
-
(_this$
|
|
866
|
+
var _this$dataProvider6;
|
|
867
|
+
(_this$dataProvider6 = this.dataProvider) === null || _this$dataProvider6 === void 0 || _this$dataProvider6.removeFromCache([resourceId]);
|
|
811
868
|
this.providerFactories.delete(resourceId);
|
|
812
869
|
}
|
|
813
870
|
}, {
|
|
@@ -826,11 +883,22 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
826
883
|
this.scheduledBatchFetch();
|
|
827
884
|
}
|
|
828
885
|
}
|
|
886
|
+
}, {
|
|
887
|
+
key: "setSSRDataInSessionStorage",
|
|
888
|
+
value: function setSSRDataInSessionStorage(resourceIds) {
|
|
889
|
+
var _this0 = this;
|
|
890
|
+
if (!resourceIds || resourceIds.length === 0) {
|
|
891
|
+
return;
|
|
892
|
+
}
|
|
893
|
+
resourceIds.forEach(function (resourceId) {
|
|
894
|
+
_this0.updateCacheInSessionStorage(resourceId);
|
|
895
|
+
});
|
|
896
|
+
}
|
|
829
897
|
}, {
|
|
830
898
|
key: "subscribeToSyncBlock",
|
|
831
899
|
value: function subscribeToSyncBlock(resourceId, localId, callback) {
|
|
832
|
-
var _this$
|
|
833
|
-
|
|
900
|
+
var _this$dataProvider7,
|
|
901
|
+
_this1 = this;
|
|
834
902
|
// Cancel any pending cache deletion for this resourceId.
|
|
835
903
|
// This handles the case where a block is moved - the old component unmounts
|
|
836
904
|
// (scheduling deletion) but the new component mounts and subscribes before
|
|
@@ -856,7 +924,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
856
924
|
var syncBlockNode = (0, _utils.createSyncBlockNode)(localId, resourceId);
|
|
857
925
|
|
|
858
926
|
// call the callback immediately if we have cached data
|
|
859
|
-
var cachedData = (_this$
|
|
927
|
+
var cachedData = (_this$dataProvider7 = this.dataProvider) === null || _this$dataProvider7 === void 0 || (_this$dataProvider7 = _this$dataProvider7.getNodeDataFromCache(syncBlockNode)) === null || _this$dataProvider7 === void 0 ? void 0 : _this$dataProvider7.data;
|
|
860
928
|
if (cachedData) {
|
|
861
929
|
callback(cachedData);
|
|
862
930
|
} else {
|
|
@@ -868,19 +936,19 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
868
936
|
this.setupGraphQLSubscription(resourceId);
|
|
869
937
|
}
|
|
870
938
|
return function () {
|
|
871
|
-
var resourceSubscriptions =
|
|
939
|
+
var resourceSubscriptions = _this1.subscriptions.get(resourceId);
|
|
872
940
|
if (resourceSubscriptions) {
|
|
873
941
|
// Unsubscription means a reference synced block is removed from the document
|
|
874
|
-
|
|
942
|
+
_this1.isCacheDirty = true;
|
|
875
943
|
delete resourceSubscriptions[localId];
|
|
876
944
|
if (Object.keys(resourceSubscriptions).length === 0) {
|
|
877
|
-
|
|
945
|
+
_this1.subscriptions.delete(resourceId);
|
|
878
946
|
|
|
879
947
|
// Clean up GraphQL subscription when no more local subscribers
|
|
880
|
-
|
|
948
|
+
_this1.cleanupGraphQLSubscription(resourceId);
|
|
881
949
|
|
|
882
950
|
// Notify listeners that subscription was removed
|
|
883
|
-
|
|
951
|
+
_this1.notifySubscriptionChangeListeners();
|
|
884
952
|
|
|
885
953
|
// Delay cache deletion to handle block moves (unmount/remount).
|
|
886
954
|
// When a block is moved, the old component unmounts before the new one mounts.
|
|
@@ -889,14 +957,14 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
889
957
|
// TODO: EDITOR-4152 - Rework this logic
|
|
890
958
|
var deletionTimeout = setTimeout(function () {
|
|
891
959
|
// Only delete if still no subscribers (wasn't re-subscribed)
|
|
892
|
-
if (!
|
|
893
|
-
|
|
960
|
+
if (!_this1.subscriptions.has(resourceId)) {
|
|
961
|
+
_this1.deleteFromCache(resourceId);
|
|
894
962
|
}
|
|
895
|
-
|
|
963
|
+
_this1.pendingCacheDeletions.delete(resourceId);
|
|
896
964
|
}, 1000);
|
|
897
|
-
|
|
965
|
+
_this1.pendingCacheDeletions.set(resourceId, deletionTimeout);
|
|
898
966
|
} else {
|
|
899
|
-
|
|
967
|
+
_this1.subscriptions.set(resourceId, resourceSubscriptions);
|
|
900
968
|
}
|
|
901
969
|
}
|
|
902
970
|
};
|
|
@@ -905,7 +973,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
905
973
|
key: "subscribeToSourceTitle",
|
|
906
974
|
value: function subscribeToSourceTitle(node, callback) {
|
|
907
975
|
var _cachedData$data,
|
|
908
|
-
|
|
976
|
+
_this10 = this;
|
|
909
977
|
// check node is a sync block, as we only support sync block subscriptions
|
|
910
978
|
if (node.type.name !== 'syncBlock') {
|
|
911
979
|
return function () {};
|
|
@@ -925,13 +993,13 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
925
993
|
var resourceSubscriptions = this.titleSubscriptions.get(resourceId) || {};
|
|
926
994
|
this.titleSubscriptions.set(resourceId, _objectSpread(_objectSpread({}, resourceSubscriptions), {}, (0, _defineProperty2.default)({}, localId, callback)));
|
|
927
995
|
return function () {
|
|
928
|
-
var resourceSubscriptions =
|
|
996
|
+
var resourceSubscriptions = _this10.titleSubscriptions.get(resourceId);
|
|
929
997
|
if (resourceSubscriptions) {
|
|
930
998
|
delete resourceSubscriptions[localId];
|
|
931
999
|
if (Object.keys(resourceSubscriptions).length === 0) {
|
|
932
|
-
|
|
1000
|
+
_this10.titleSubscriptions.delete(resourceId);
|
|
933
1001
|
} else {
|
|
934
|
-
|
|
1002
|
+
_this10.titleSubscriptions.set(resourceId, resourceSubscriptions);
|
|
935
1003
|
}
|
|
936
1004
|
}
|
|
937
1005
|
};
|
|
@@ -1081,7 +1149,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1081
1149
|
}
|
|
1082
1150
|
var parentInfo = this.dataProvider.retrieveSyncBlockParentInfo((_syncBlock$data2 = syncBlock.data) === null || _syncBlock$data2 === void 0 ? void 0 : _syncBlock$data2.sourceAri, (_syncBlock$data3 = syncBlock.data) === null || _syncBlock$data3 === void 0 ? void 0 : _syncBlock$data3.product);
|
|
1083
1151
|
if (!parentInfo) {
|
|
1084
|
-
throw new Error('Unable to
|
|
1152
|
+
throw new Error('Unable to retrieve sync block parent info');
|
|
1085
1153
|
}
|
|
1086
1154
|
var contentId = parentInfo.contentId,
|
|
1087
1155
|
contentProduct = parentInfo.contentProduct;
|
|
@@ -1126,7 +1194,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1126
1194
|
key: "flush",
|
|
1127
1195
|
value: (function () {
|
|
1128
1196
|
var _flush = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
|
|
1129
|
-
var
|
|
1197
|
+
var _this11 = this;
|
|
1130
1198
|
var success, syncedBlocksToFlush, _this$saveExperience, blocks, _iterator4, _step4, _loop2, updateResult, _this$saveExperience2, _this$fireAnalyticsEv1, _this$saveExperience3, _this$fireAnalyticsEv10, _this$saveExperience4;
|
|
1131
1199
|
return _regenerator.default.wrap(function _callee4$(_context6) {
|
|
1132
1200
|
while (1) switch (_context6.prev = _context6.next) {
|
|
@@ -1288,8 +1356,8 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1288
1356
|
// Use setTimeout to avoid deep recursion and run queued flush asynchronously
|
|
1289
1357
|
// Note: flush() handles all exceptions internally and never rejects
|
|
1290
1358
|
this.queuedFlushTimeout = setTimeout(function () {
|
|
1291
|
-
|
|
1292
|
-
void
|
|
1359
|
+
_this11.queuedFlushTimeout = undefined;
|
|
1360
|
+
void _this11.flush();
|
|
1293
1361
|
}, 0);
|
|
1294
1362
|
}
|
|
1295
1363
|
}
|
|
@@ -1310,7 +1378,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1310
1378
|
}, {
|
|
1311
1379
|
key: "destroy",
|
|
1312
1380
|
value: function destroy() {
|
|
1313
|
-
var _this$
|
|
1381
|
+
var _this$dataProvider8, _this$saveExperience5, _this$fetchExperience0, _this$fetchSourceInfo2;
|
|
1314
1382
|
// Cancel any queued flush to prevent it from running after destroy
|
|
1315
1383
|
if (this.queuedFlushTimeout) {
|
|
1316
1384
|
clearTimeout(this.queuedFlushTimeout);
|
|
@@ -1319,7 +1387,7 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1319
1387
|
|
|
1320
1388
|
// Clean up all GraphQL subscriptions first
|
|
1321
1389
|
this.cleanupAllGraphQLSubscriptions();
|
|
1322
|
-
(_this$
|
|
1390
|
+
(_this$dataProvider8 = this.dataProvider) === null || _this$dataProvider8 === void 0 || _this$dataProvider8.resetCache();
|
|
1323
1391
|
this.scheduledBatchFetch.cancel();
|
|
1324
1392
|
this.pendingFetchRequests.clear();
|
|
1325
1393
|
this.dataProvider = undefined;
|
|
@@ -1327,7 +1395,6 @@ var ReferenceSyncBlockStoreManager = exports.ReferenceSyncBlockStoreManager = /*
|
|
|
1327
1395
|
this.titleSubscriptions.clear();
|
|
1328
1396
|
this.syncBlockFetchDataRequests.clear();
|
|
1329
1397
|
this.syncBlockSourceInfoRequests.clear();
|
|
1330
|
-
this.providerFactories.clear();
|
|
1331
1398
|
this.isRefreshingSubscriptions = false;
|
|
1332
1399
|
this.useRealTimeSubscriptions = false;
|
|
1333
1400
|
this.subscriptionChangeListeners.clear();
|
|
@@ -267,7 +267,7 @@ var SourceSyncBlockStoreManager = exports.SourceSyncBlockStoreManager = /*#__PUR
|
|
|
267
267
|
*/
|
|
268
268
|
}, {
|
|
269
269
|
key: "createBodiedSyncBlockNode",
|
|
270
|
-
value: function createBodiedSyncBlockNode(attrs, onCompletion
|
|
270
|
+
value: function createBodiedSyncBlockNode(attrs, onCompletion) {
|
|
271
271
|
var _this4 = this;
|
|
272
272
|
var resourceId = attrs.resourceId,
|
|
273
273
|
blockInstanceId = attrs.localId;
|
|
@@ -4,9 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateSuccessPayload = exports.updateReferenceErrorPayload = exports.updateErrorPayload = exports.updateCacheErrorPayload = exports.stringifyError = exports.getSourceInfoErrorPayload = exports.getErrorPayload = exports.fetchSuccessPayload = exports.fetchReferencesErrorPayload = exports.fetchErrorPayload = exports.deleteSuccessPayload = exports.deleteErrorPayload = exports.createSuccessPayload = exports.createErrorPayload = void 0;
|
|
7
|
+
exports.updateSuccessPayload = exports.updateReferenceErrorPayload = exports.updateErrorPayload = exports.updateCacheErrorPayload = exports.stringifyError = exports.getSourceInfoErrorPayload = exports.getErrorPayload = exports.fetchSuccessPayload = exports.fetchReferencesErrorPayload = exports.fetchErrorPayload = exports.deleteSuccessPayload = exports.deleteErrorPayload = exports.createSuccessPayloadNew = exports.createSuccessPayload = exports.createErrorPayload = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
11
|
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; }
|
|
11
12
|
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; }
|
|
12
13
|
var stringifyError = exports.stringifyError = function stringifyError(error) {
|
|
@@ -70,6 +71,25 @@ var fetchSuccessPayload = exports.fetchSuccessPayload = function fetchSuccessPay
|
|
|
70
71
|
};
|
|
71
72
|
};
|
|
72
73
|
var createSuccessPayload = exports.createSuccessPayload = function createSuccessPayload(resourceId) {
|
|
74
|
+
return (0, _platformFeatureFlags.fg)('platform_synced_block_patch_3') ? {
|
|
75
|
+
action: _analytics.ACTION.INSERTED,
|
|
76
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
77
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.BODIED_SYNCED_BLOCK,
|
|
78
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
79
|
+
attributes: {
|
|
80
|
+
resourceId: resourceId
|
|
81
|
+
}
|
|
82
|
+
} : {
|
|
83
|
+
action: _analytics.ACTION.INSERTED,
|
|
84
|
+
actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
|
|
85
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE,
|
|
86
|
+
eventType: _analytics.EVENT_TYPE.OPERATIONAL,
|
|
87
|
+
attributes: {
|
|
88
|
+
resourceId: resourceId
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
var createSuccessPayloadNew = exports.createSuccessPayloadNew = function createSuccessPayloadNew(resourceId) {
|
|
73
93
|
return {
|
|
74
94
|
action: _analytics.ACTION.INSERTED,
|
|
75
95
|
actionSubject: _analytics.ACTION_SUBJECT.SYNCED_BLOCK,
|
|
@@ -11,8 +11,9 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
11
11
|
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; }
|
|
12
12
|
/**
|
|
13
13
|
* Merges two SyncBlockInstance objects,
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* preserving sourceURL, sourceTitle, sourceSubType, and onSameDocument from the old result
|
|
15
|
+
* when the new result does not have them.
|
|
16
|
+
* This can be extended in the future to resolve other conflicts as needed,
|
|
16
17
|
* e.g. compare timestamps or version numbers to determine which data is more recent.
|
|
17
18
|
*
|
|
18
19
|
* @param oldResult - The existing SyncBlockInstance object.
|
package/dist/cjs/utils/retry.js
CHANGED
|
@@ -50,7 +50,8 @@ var _fetchWithRetry = exports.fetchWithRetry = /*#__PURE__*/function () {
|
|
|
50
50
|
retryAfter = response.headers.get('Retry-After');
|
|
51
51
|
_context.next = 11;
|
|
52
52
|
return new Promise(function (resolve) {
|
|
53
|
-
|
|
53
|
+
var _ref2;
|
|
54
|
+
return setTimeout(resolve, (_ref2 = retryAfter ? parseRetryAfter(retryAfter) : undefined) !== null && _ref2 !== void 0 ? _ref2 : delay);
|
|
54
55
|
});
|
|
55
56
|
case 11:
|
|
56
57
|
return _context.abrupt("return", _fetchWithRetry(url, options, retriesRemaining - 1, delay * 2));
|
|
@@ -31,8 +31,10 @@ export const generateBlockAriFromReference = ({
|
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
-
* Extracts the local ID from a block ARI.
|
|
35
|
-
*
|
|
34
|
+
* Extracts the local ID from a source block ARI.
|
|
35
|
+
* Designed for source block ARIs of the form: ari:cloud:blocks:{cloudId}:synced-block/{localId}
|
|
36
|
+
* where the localId is a UUID immediately after synced-block/.
|
|
37
|
+
* @param ari - the source block ARI. E.G ari:cloud:blocks:cloudId:synced-block/79d4f3f4-51df-451b-b9a1-751bc77b1e77
|
|
36
38
|
* @returns the localId of the block node. A randomly generated UUID
|
|
37
39
|
*/
|
|
38
40
|
export const getLocalIdFromBlockResourceId = ari => {
|
|
@@ -40,7 +42,7 @@ export const getLocalIdFromBlockResourceId = ari => {
|
|
|
40
42
|
if (match !== null && match !== void 0 && match[1]) {
|
|
41
43
|
return match[1];
|
|
42
44
|
}
|
|
43
|
-
throw new Error(`Invalid
|
|
45
|
+
throw new Error(`Invalid block ARI: ${ari}`);
|
|
44
46
|
};
|
|
45
47
|
export const getProductFromSourceAri = ari => {
|
|
46
48
|
const jiraMatch = ari === null || ari === void 0 ? void 0 : ari.search(/ari:cloud:jira:.*/);
|
package/dist/es2019/index.js
CHANGED
|
@@ -10,17 +10,17 @@ export { useHandleContentChanges } from './hooks/useHandleContentChanges';
|
|
|
10
10
|
|
|
11
11
|
// clients
|
|
12
12
|
export { generateBlockAri, generateBlockAriFromReference, getLocalIdFromBlockResourceId } from './clients/block-service/ari';
|
|
13
|
+
export { BlockError } from './clients/block-service/blockService';
|
|
13
14
|
export { getConfluencePageAri, getPageIdAndTypeFromConfluencePageAri } from './clients/confluence/ari';
|
|
14
15
|
export { fetchMediaToken } from './clients/confluence/fetchMediaToken';
|
|
15
16
|
export { getJiraWorkItemAri, getJiraWorkItemIdFromAri } from './clients/jira/ari';
|
|
16
17
|
|
|
17
18
|
// providers
|
|
18
|
-
export { useMemoizedBlockServiceAPIProviders, useMemoizedBlockServiceFetchOnlyAPIProvider, fetchReferences, batchFetchData } from './providers/block-service/blockServiceAPI';
|
|
19
|
+
export { useMemoizedBlockServiceAPIProviders, useMemoizedBlockServiceFetchOnlyAPIProvider, fetchReferences, batchFetchData, blockAriToResourceId, convertToSyncBlockData, extractResourceIdFromBlockAri } from './providers/block-service/blockServiceAPI';
|
|
19
20
|
export { fetchConfluencePageInfo } from './clients/confluence/sourceInfo';
|
|
20
|
-
export {
|
|
21
|
-
|
|
21
|
+
export { SyncedBlockProvider, useMemoizedSyncedBlockProvider } from './providers/syncBlockProvider';
|
|
22
22
|
// store managers
|
|
23
|
-
|
|
23
|
+
export { ReferenceSyncBlockStoreManager } from './store-manager/referenceSyncBlockStoreManager';
|
|
24
24
|
export { SyncBlockStoreManager, useMemoizedSyncBlockStoreManager } from './store-manager/syncBlockStoreManager';
|
|
25
25
|
|
|
26
26
|
// utils
|