@atlaskit/editor-synced-block-provider 2.3.0 → 2.4.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 +14 -0
- package/dist/cjs/index.js +0 -13
- package/dist/cjs/providers/confluence/confluenceContentAPI.js +50 -0
- package/dist/cjs/providers/syncBlockProvider.js +52 -15
- package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +35 -11
- package/dist/cjs/utils/contentProperty.js +54 -1
- package/dist/es2019/index.js +0 -1
- package/dist/es2019/providers/confluence/confluenceContentAPI.js +31 -1
- package/dist/es2019/providers/syncBlockProvider.js +14 -0
- package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +16 -4
- package/dist/es2019/utils/contentProperty.js +54 -0
- package/dist/esm/index.js +0 -1
- package/dist/esm/providers/confluence/confluenceContentAPI.js +51 -1
- package/dist/esm/providers/syncBlockProvider.js +52 -15
- package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +35 -11
- package/dist/esm/utils/contentProperty.js +53 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/providers/confluence/confluenceContentAPI.d.ts +2 -1
- package/dist/types/providers/syncBlockProvider.d.ts +2 -1
- package/dist/types/providers/types.d.ts +7 -0
- package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +1 -1
- package/dist/types/utils/contentProperty.d.ts +35 -0
- package/dist/types-ts4.5/index.d.ts +0 -1
- package/dist/types-ts4.5/providers/confluence/confluenceContentAPI.d.ts +2 -1
- package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +2 -1
- package/dist/types-ts4.5/providers/types.d.ts +7 -0
- package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +1 -1
- package/dist/types-ts4.5/utils/contentProperty.d.ts +35 -0
- package/package.json +1 -1
- package/dist/cjs/providers/in-memory/inMemory.js +0 -31
- package/dist/es2019/providers/in-memory/inMemory.js +0 -25
- package/dist/esm/providers/in-memory/inMemory.js +0 -25
- package/dist/types/providers/in-memory/inMemory.d.ts +0 -3
- package/dist/types-ts4.5/providers/in-memory/inMemory.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/editor-synced-block-provider
|
|
2
2
|
|
|
3
|
+
## 2.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`7d9f7451809ce`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7d9f7451809ce) -
|
|
8
|
+
[EDITOR-2481] Move in memory write/fetch provider to @af/editor-examples-helpers/utils
|
|
9
|
+
|
|
10
|
+
## 2.3.1
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`eb9f8e2ab6fb5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/eb9f8e2ab6fb5) -
|
|
15
|
+
[EDITOR-2543] Save bodiedSyncBlock deletion to BE instantly
|
|
16
|
+
|
|
3
17
|
## 2.3.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -45,18 +45,6 @@ Object.defineProperty(exports, "getDefaultSyncBlockSchema", {
|
|
|
45
45
|
return _schema.getDefaultSyncBlockSchema;
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
-
Object.defineProperty(exports, "inMemoryFetchProvider", {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function get() {
|
|
51
|
-
return _inMemory.inMemoryFetchProvider;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
Object.defineProperty(exports, "inMemoryWriteProvider", {
|
|
55
|
-
enumerable: true,
|
|
56
|
-
get: function get() {
|
|
57
|
-
return _inMemory.inMemoryWriteProvider;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
48
|
Object.defineProperty(exports, "rebaseTransaction", {
|
|
61
49
|
enumerable: true,
|
|
62
50
|
get: function get() {
|
|
@@ -92,7 +80,6 @@ var _syncBlockStoreManager = require("./store-manager/syncBlockStoreManager");
|
|
|
92
80
|
var _useFetchSyncBlockData = require("./hooks/useFetchSyncBlockData");
|
|
93
81
|
var _useHandleContentChanges = require("./hooks/useHandleContentChanges");
|
|
94
82
|
var _types = require("./common/types");
|
|
95
|
-
var _inMemory = require("./providers/in-memory/inMemory");
|
|
96
83
|
var _schema = require("./common/schema");
|
|
97
84
|
var _confluenceContentAPI = require("./providers/confluence/confluenceContentAPI");
|
|
98
85
|
var _ari = require("./utils/ari");
|
|
@@ -280,6 +280,56 @@ var ConfluenceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
280
280
|
}
|
|
281
281
|
return writeData;
|
|
282
282
|
}()
|
|
283
|
+
}, {
|
|
284
|
+
key: "deleteData",
|
|
285
|
+
value: function () {
|
|
286
|
+
var _deleteData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(resourceId) {
|
|
287
|
+
var _getPageIdAndTypeFrom3, pageId, pageType, localId, key, options, deletePayload, deleteResult;
|
|
288
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
289
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
290
|
+
case 0:
|
|
291
|
+
_getPageIdAndTypeFrom3 = (0, _ari.getPageIdAndTypeFromAri)(resourceId), pageId = _getPageIdAndTypeFrom3.id, pageType = _getPageIdAndTypeFrom3.type;
|
|
292
|
+
localId = (0, _ari.getLocalIdFromAri)(resourceId);
|
|
293
|
+
key = getContentPropertyKey(this.config.contentPropertyKey, localId);
|
|
294
|
+
options = {
|
|
295
|
+
pageId: pageId,
|
|
296
|
+
key: key,
|
|
297
|
+
cloudId: this.config.cloudId,
|
|
298
|
+
pageType: pageType
|
|
299
|
+
};
|
|
300
|
+
_context4.prev = 4;
|
|
301
|
+
_context4.next = 7;
|
|
302
|
+
return (0, _contentProperty4.deleteContentProperty)(options);
|
|
303
|
+
case 7:
|
|
304
|
+
deletePayload = _context4.sent;
|
|
305
|
+
deleteResult = (0, _utils.isBlogPageType)(pageType) ? deletePayload.data.confluence.deleteBlogPostProperty : deletePayload.data.confluence.deletePageProperty;
|
|
306
|
+
_context4.next = 14;
|
|
307
|
+
break;
|
|
308
|
+
case 11:
|
|
309
|
+
_context4.prev = 11;
|
|
310
|
+
_context4.t0 = _context4["catch"](4);
|
|
311
|
+
return _context4.abrupt("return", {
|
|
312
|
+
resourceId: resourceId,
|
|
313
|
+
success: false,
|
|
314
|
+
error: "Fail to delete ".concat(pageType, " content property")
|
|
315
|
+
});
|
|
316
|
+
case 14:
|
|
317
|
+
return _context4.abrupt("return", {
|
|
318
|
+
resourceId: resourceId,
|
|
319
|
+
success: deleteResult.success,
|
|
320
|
+
error: deleteResult.errors.join()
|
|
321
|
+
});
|
|
322
|
+
case 15:
|
|
323
|
+
case "end":
|
|
324
|
+
return _context4.stop();
|
|
325
|
+
}
|
|
326
|
+
}, _callee4, this, [[4, 11]]);
|
|
327
|
+
}));
|
|
328
|
+
function deleteData(_x7) {
|
|
329
|
+
return _deleteData.apply(this, arguments);
|
|
330
|
+
}
|
|
331
|
+
return deleteData;
|
|
332
|
+
}()
|
|
283
333
|
}]);
|
|
284
334
|
}();
|
|
285
335
|
/**
|
|
@@ -90,6 +90,43 @@ var SyncBlockProvider = exports.SyncBlockProvider = /*#__PURE__*/function (_Sync
|
|
|
90
90
|
});
|
|
91
91
|
return Promise.all(resourceIds);
|
|
92
92
|
}
|
|
93
|
+
}, {
|
|
94
|
+
key: "deleteNodesData",
|
|
95
|
+
value: function () {
|
|
96
|
+
var _deleteNodesData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(resourceIds) {
|
|
97
|
+
var _this4 = this;
|
|
98
|
+
var results;
|
|
99
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
100
|
+
while (1) switch (_context.prev = _context.next) {
|
|
101
|
+
case 0:
|
|
102
|
+
_context.next = 2;
|
|
103
|
+
return Promise.allSettled(resourceIds.map(function (resourceId) {
|
|
104
|
+
return _this4.writeProvider.deleteData(resourceId);
|
|
105
|
+
}));
|
|
106
|
+
case 2:
|
|
107
|
+
results = _context.sent;
|
|
108
|
+
return _context.abrupt("return", results.map(function (result, index) {
|
|
109
|
+
if (result.status === 'fulfilled') {
|
|
110
|
+
return result.value;
|
|
111
|
+
} else {
|
|
112
|
+
return {
|
|
113
|
+
resourceId: resourceIds[index],
|
|
114
|
+
success: false,
|
|
115
|
+
error: result.reason
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
case 4:
|
|
120
|
+
case "end":
|
|
121
|
+
return _context.stop();
|
|
122
|
+
}
|
|
123
|
+
}, _callee);
|
|
124
|
+
}));
|
|
125
|
+
function deleteNodesData(_x) {
|
|
126
|
+
return _deleteNodesData.apply(this, arguments);
|
|
127
|
+
}
|
|
128
|
+
return deleteNodesData;
|
|
129
|
+
}()
|
|
93
130
|
}, {
|
|
94
131
|
key: "getSourceId",
|
|
95
132
|
value: function getSourceId() {
|
|
@@ -123,12 +160,12 @@ var useMemoizedSyncedBlockProvider = exports.useMemoizedSyncedBlockProvider = fu
|
|
|
123
160
|
}, [fetchProvider, writeProvider, sourceId]);
|
|
124
161
|
};
|
|
125
162
|
var fetchURLfromARI = /*#__PURE__*/function () {
|
|
126
|
-
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
163
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(ari, sourceLocalId) {
|
|
127
164
|
var response, _payload$data, payload, url;
|
|
128
|
-
return _regenerator.default.wrap(function
|
|
129
|
-
while (1) switch (
|
|
165
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
166
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
130
167
|
case 0:
|
|
131
|
-
|
|
168
|
+
_context2.next = 2;
|
|
132
169
|
return fetch('/gateway/api/object-resolver/resolve/ari', {
|
|
133
170
|
method: 'POST',
|
|
134
171
|
headers: {
|
|
@@ -140,36 +177,36 @@ var fetchURLfromARI = /*#__PURE__*/function () {
|
|
|
140
177
|
})
|
|
141
178
|
});
|
|
142
179
|
case 2:
|
|
143
|
-
response =
|
|
180
|
+
response = _context2.sent;
|
|
144
181
|
if (!response.ok) {
|
|
145
|
-
|
|
182
|
+
_context2.next = 12;
|
|
146
183
|
break;
|
|
147
184
|
}
|
|
148
|
-
|
|
185
|
+
_context2.next = 6;
|
|
149
186
|
return response.json();
|
|
150
187
|
case 6:
|
|
151
|
-
payload =
|
|
188
|
+
payload = _context2.sent;
|
|
152
189
|
url = payload === null || payload === void 0 || (_payload$data = payload.data) === null || _payload$data === void 0 ? void 0 : _payload$data.url;
|
|
153
190
|
if (!(typeof url === 'string')) {
|
|
154
|
-
|
|
191
|
+
_context2.next = 10;
|
|
155
192
|
break;
|
|
156
193
|
}
|
|
157
|
-
return
|
|
194
|
+
return _context2.abrupt("return", sourceLocalId ? url + "?block=".concat(sourceLocalId) : url);
|
|
158
195
|
case 10:
|
|
159
|
-
|
|
196
|
+
_context2.next = 13;
|
|
160
197
|
break;
|
|
161
198
|
case 12:
|
|
162
199
|
//eslint-disable-next-line no-console
|
|
163
200
|
console.error('Failed to fetch URL from ARI', response.statusText);
|
|
164
201
|
case 13:
|
|
165
|
-
return
|
|
202
|
+
return _context2.abrupt("return", undefined);
|
|
166
203
|
case 14:
|
|
167
204
|
case "end":
|
|
168
|
-
return
|
|
205
|
+
return _context2.stop();
|
|
169
206
|
}
|
|
170
|
-
},
|
|
207
|
+
}, _callee2);
|
|
171
208
|
}));
|
|
172
|
-
return function fetchURLfromARI(
|
|
209
|
+
return function fetchURLfromARI(_x2, _x3) {
|
|
173
210
|
return _ref.apply(this, arguments);
|
|
174
211
|
};
|
|
175
212
|
}();
|
|
@@ -143,12 +143,12 @@ var SourceSyncBlockStoreManager = exports.SourceSyncBlockStoreManager = /*#__PUR
|
|
|
143
143
|
value: function () {
|
|
144
144
|
var _deleteSyncBlocksWithConfirmation = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(tr, syncBlockIds) {
|
|
145
145
|
var _this2 = this;
|
|
146
|
-
var confirmed, _this$editorView;
|
|
146
|
+
var confirmed, _this$editorView, results;
|
|
147
147
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
148
148
|
while (1) switch (_context2.prev = _context2.next) {
|
|
149
149
|
case 0:
|
|
150
150
|
if (!this.confirmationCallback) {
|
|
151
|
-
_context2.next =
|
|
151
|
+
_context2.next = 19;
|
|
152
152
|
break;
|
|
153
153
|
}
|
|
154
154
|
this.confirmationTransaction = tr;
|
|
@@ -156,20 +156,44 @@ var SourceSyncBlockStoreManager = exports.SourceSyncBlockStoreManager = /*#__PUR
|
|
|
156
156
|
return this.confirmationCallback();
|
|
157
157
|
case 4:
|
|
158
158
|
confirmed = _context2.sent;
|
|
159
|
-
if (confirmed) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
if (!confirmed) {
|
|
160
|
+
_context2.next = 18;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
(_this$editorView = this.editorView) === null || _this$editorView === void 0 || _this$editorView.dispatch(this.confirmationTransaction.setMeta('isConfirmedSyncBlockDeletion', true));
|
|
164
|
+
_context2.prev = 7;
|
|
165
|
+
if (this.dataProvider) {
|
|
166
|
+
_context2.next = 10;
|
|
167
|
+
break;
|
|
166
168
|
}
|
|
169
|
+
throw new Error('Data provider not set');
|
|
170
|
+
case 10:
|
|
171
|
+
_context2.next = 12;
|
|
172
|
+
return this.dataProvider.deleteNodesData(syncBlockIds.map(function (attrs) {
|
|
173
|
+
return attrs.resourceId;
|
|
174
|
+
}));
|
|
175
|
+
case 12:
|
|
176
|
+
results = _context2.sent;
|
|
177
|
+
results.forEach(function (result) {
|
|
178
|
+
if (result.success) {
|
|
179
|
+
// Only delete when it's deleted successfully in backend
|
|
180
|
+
_this2.syncBlockCache.delete(result.resourceId);
|
|
181
|
+
} else {
|
|
182
|
+
// TODO: EDITOR-1921 - add error analytics with result.error
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
_context2.next = 18;
|
|
186
|
+
break;
|
|
187
|
+
case 16:
|
|
188
|
+
_context2.prev = 16;
|
|
189
|
+
_context2.t0 = _context2["catch"](7);
|
|
190
|
+
case 18:
|
|
167
191
|
this.confirmationTransaction = undefined;
|
|
168
|
-
case
|
|
192
|
+
case 19:
|
|
169
193
|
case "end":
|
|
170
194
|
return _context2.stop();
|
|
171
195
|
}
|
|
172
|
-
}, _callee2, this);
|
|
196
|
+
}, _callee2, this, [[7, 16]]);
|
|
173
197
|
}));
|
|
174
198
|
function deleteSyncBlocksWithConfirmation(_x, _x2) {
|
|
175
199
|
return _deleteSyncBlocksWithConfirmation.apply(this, arguments);
|
|
@@ -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.updateContentProperty = exports.getContentProperty = exports.createContentProperty = void 0;
|
|
7
|
+
exports.updateContentProperty = exports.getContentProperty = exports.deleteContentProperty = exports.createContentProperty = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
@@ -23,6 +23,7 @@ var GRAPHQL_ENDPOINT = '/gateway/api/graphql';
|
|
|
23
23
|
var GET_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_GET';
|
|
24
24
|
var CREATE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_CREATE';
|
|
25
25
|
var UPDATE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_UPDATE';
|
|
26
|
+
var DELETE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_DELETE';
|
|
26
27
|
/**
|
|
27
28
|
* Query to get the page property by key
|
|
28
29
|
* @param documentARI
|
|
@@ -74,6 +75,8 @@ var UPDATE_PAGE_QUERY = "mutation ".concat(UPDATE_OPERATION_NAME, " ($input: Con
|
|
|
74
75
|
* @returns
|
|
75
76
|
*/
|
|
76
77
|
var UPDATE_BLOG_QUERY = "mutation ".concat(UPDATE_OPERATION_NAME, " ($input: ConfluenceUpdateValueBlogPostPropertyInput!) {\n\tconfluence {\n\t\tupdateValueBlogPostProperty(input: $input) {\n\t\t\tblogPostProperty {\n\t\t\t\tkey,\n\t\t\t\tvalue\n\t\t\t}\n\t\t}\n\t}\n}");
|
|
78
|
+
var DELETE_PAGE_QUERY = "mutation ".concat(DELETE_OPERATION_NAME, " ($input: ConfluenceDeletePagePropertyInput!) {\n\t\t\t\t\t\tconfluence {\n\t\t\t\t\t\t\tdeletePageProperty(input: $input) {\n\t\t\t\t\t\t\t\tsuccess, errors {\n\t\t\t\t\t\t\t\t message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}");
|
|
79
|
+
var DELETE_BLOG_QUERY = "mutation ".concat(DELETE_OPERATION_NAME, " ($input: ConfluenceDeleteBlogPostPropertyInput!) {\n\t\t\t\t\t\tconfluence {\n\t\t\t\t\t\t\tdeleteBlogPostProperty(input: $input) {\n\t\t\t\t\t\t\t\tsuccess, errors {\n\t\t\t\t\t\t\t\t message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}");
|
|
77
80
|
var getContentProperty = exports.getContentProperty = /*#__PURE__*/function () {
|
|
78
81
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
79
82
|
var pageId, key, cloudId, pageType, documentARI, isBlog, bodyData, response;
|
|
@@ -231,4 +234,54 @@ var createContentProperty = exports.createContentProperty = /*#__PURE__*/functio
|
|
|
231
234
|
return function createContentProperty(_x3) {
|
|
232
235
|
return _ref6.apply(this, arguments);
|
|
233
236
|
};
|
|
237
|
+
}();
|
|
238
|
+
var deleteContentProperty = exports.deleteContentProperty = /*#__PURE__*/function () {
|
|
239
|
+
var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(_ref7) {
|
|
240
|
+
var pageId, cloudId, pageType, key, documentARI, isBlog, bodyData, response;
|
|
241
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
242
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
243
|
+
case 0:
|
|
244
|
+
pageId = _ref7.pageId, cloudId = _ref7.cloudId, pageType = _ref7.pageType, key = _ref7.key;
|
|
245
|
+
documentARI = (0, _ari.getConfluencePageAri)(pageId, cloudId, pageType);
|
|
246
|
+
isBlog = (0, _utils.isBlogPageType)(pageType);
|
|
247
|
+
bodyData = {
|
|
248
|
+
query: isBlog ? DELETE_BLOG_QUERY : DELETE_PAGE_QUERY,
|
|
249
|
+
operationName: DELETE_OPERATION_NAME,
|
|
250
|
+
variables: {
|
|
251
|
+
input: _objectSpread(_objectSpread({}, isBlog ? {
|
|
252
|
+
blogPostId: documentARI
|
|
253
|
+
} : {
|
|
254
|
+
pageId: documentARI
|
|
255
|
+
}), {}, {
|
|
256
|
+
key: key
|
|
257
|
+
})
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
_context4.next = 6;
|
|
261
|
+
return fetch(GRAPHQL_ENDPOINT, {
|
|
262
|
+
method: 'POST',
|
|
263
|
+
headers: _objectSpread(_objectSpread({}, COMMON_HEADERS), AGG_HEADERS),
|
|
264
|
+
body: JSON.stringify(bodyData)
|
|
265
|
+
});
|
|
266
|
+
case 6:
|
|
267
|
+
response = _context4.sent;
|
|
268
|
+
if (response.ok) {
|
|
269
|
+
_context4.next = 9;
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
throw new Error("Failed to delete content property: ".concat(response.statusText));
|
|
273
|
+
case 9:
|
|
274
|
+
_context4.next = 11;
|
|
275
|
+
return response.json();
|
|
276
|
+
case 11:
|
|
277
|
+
return _context4.abrupt("return", _context4.sent);
|
|
278
|
+
case 12:
|
|
279
|
+
case "end":
|
|
280
|
+
return _context4.stop();
|
|
281
|
+
}
|
|
282
|
+
}, _callee4);
|
|
283
|
+
}));
|
|
284
|
+
return function deleteContentProperty(_x4) {
|
|
285
|
+
return _ref8.apply(this, arguments);
|
|
286
|
+
};
|
|
234
287
|
}();
|
package/dist/es2019/index.js
CHANGED
|
@@ -5,7 +5,6 @@ export { SyncBlockStoreManager } from './store-manager/syncBlockStoreManager';
|
|
|
5
5
|
export { useFetchSyncBlockData } from './hooks/useFetchSyncBlockData';
|
|
6
6
|
export { useHandleContentChanges } from './hooks/useHandleContentChanges';
|
|
7
7
|
export { SyncBlockError } from './common/types';
|
|
8
|
-
export { inMemoryFetchProvider, inMemoryWriteProvider } from './providers/in-memory/inMemory';
|
|
9
8
|
export { getDefaultSyncBlockSchema } from './common/schema';
|
|
10
9
|
export { createContentAPIProvidersWithDefaultKey, useMemoizedContentAPIProviders } from './providers/confluence/confluenceContentAPI';
|
|
11
10
|
export { getConfluencePageAri } from './utils/ari';
|
|
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
3
|
import { SyncBlockError } from '../../common/types';
|
|
4
4
|
import { getLocalIdFromAri, getPageIdAndTypeFromAri } from '../../utils/ari';
|
|
5
|
-
import { getContentProperty, createContentProperty, updateContentProperty } from '../../utils/contentProperty';
|
|
5
|
+
import { getContentProperty, createContentProperty, updateContentProperty, deleteContentProperty } from '../../utils/contentProperty';
|
|
6
6
|
import { isBlogPageType } from '../../utils/utils';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -175,6 +175,36 @@ class ConfluenceADFWriteProvider {
|
|
|
175
175
|
return this.createNewContentProperty(pageId, key, data, pageType);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
+
async deleteData(resourceId) {
|
|
179
|
+
const {
|
|
180
|
+
id: pageId,
|
|
181
|
+
type: pageType
|
|
182
|
+
} = getPageIdAndTypeFromAri(resourceId);
|
|
183
|
+
const localId = getLocalIdFromAri(resourceId);
|
|
184
|
+
const key = getContentPropertyKey(this.config.contentPropertyKey, localId);
|
|
185
|
+
const options = {
|
|
186
|
+
pageId,
|
|
187
|
+
key,
|
|
188
|
+
cloudId: this.config.cloudId,
|
|
189
|
+
pageType
|
|
190
|
+
};
|
|
191
|
+
let deletePayload, deleteResult;
|
|
192
|
+
try {
|
|
193
|
+
deletePayload = await deleteContentProperty(options);
|
|
194
|
+
deleteResult = isBlogPageType(pageType) ? deletePayload.data.confluence.deleteBlogPostProperty : deletePayload.data.confluence.deletePageProperty;
|
|
195
|
+
} catch {
|
|
196
|
+
return {
|
|
197
|
+
resourceId,
|
|
198
|
+
success: false,
|
|
199
|
+
error: `Fail to delete ${pageType} content property`
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
resourceId,
|
|
204
|
+
success: deleteResult.success,
|
|
205
|
+
error: deleteResult.errors.join()
|
|
206
|
+
};
|
|
207
|
+
}
|
|
178
208
|
}
|
|
179
209
|
|
|
180
210
|
/**
|
|
@@ -55,6 +55,20 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
55
55
|
});
|
|
56
56
|
return Promise.all(resourceIds);
|
|
57
57
|
}
|
|
58
|
+
async deleteNodesData(resourceIds) {
|
|
59
|
+
const results = await Promise.allSettled(resourceIds.map(resourceId => this.writeProvider.deleteData(resourceId)));
|
|
60
|
+
return results.map((result, index) => {
|
|
61
|
+
if (result.status === 'fulfilled') {
|
|
62
|
+
return result.value;
|
|
63
|
+
} else {
|
|
64
|
+
return {
|
|
65
|
+
resourceId: resourceIds[index],
|
|
66
|
+
success: false,
|
|
67
|
+
error: result.reason
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
58
72
|
getSourceId() {
|
|
59
73
|
return this.sourceId;
|
|
60
74
|
}
|
|
@@ -95,10 +95,22 @@ export class SourceSyncBlockStoreManager {
|
|
|
95
95
|
if (confirmed) {
|
|
96
96
|
var _this$editorView;
|
|
97
97
|
(_this$editorView = this.editorView) === null || _this$editorView === void 0 ? void 0 : _this$editorView.dispatch(this.confirmationTransaction.setMeta('isConfirmedSyncBlockDeletion', true));
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
try {
|
|
99
|
+
if (!this.dataProvider) {
|
|
100
|
+
throw new Error('Data provider not set');
|
|
101
|
+
}
|
|
102
|
+
const results = await this.dataProvider.deleteNodesData(syncBlockIds.map(attrs => attrs.resourceId));
|
|
103
|
+
results.forEach(result => {
|
|
104
|
+
if (result.success) {
|
|
105
|
+
// Only delete when it's deleted successfully in backend
|
|
106
|
+
this.syncBlockCache.delete(result.resourceId);
|
|
107
|
+
} else {
|
|
108
|
+
// TODO: EDITOR-1921 - add error analytics with result.error
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
} catch (_error) {
|
|
112
|
+
// TODO: EDITOR-1921 - add error analytics
|
|
113
|
+
}
|
|
102
114
|
}
|
|
103
115
|
this.confirmationTransaction = undefined;
|
|
104
116
|
}
|
|
@@ -11,6 +11,7 @@ const GRAPHQL_ENDPOINT = '/gateway/api/graphql';
|
|
|
11
11
|
const GET_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_GET';
|
|
12
12
|
const CREATE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_CREATE';
|
|
13
13
|
const UPDATE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_UPDATE';
|
|
14
|
+
const DELETE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_DELETE';
|
|
14
15
|
/**
|
|
15
16
|
* Query to get the page property by key
|
|
16
17
|
* @param documentARI
|
|
@@ -116,6 +117,24 @@ const UPDATE_BLOG_QUERY = `mutation ${UPDATE_OPERATION_NAME} ($input: Confluence
|
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
}`;
|
|
120
|
+
const DELETE_PAGE_QUERY = `mutation ${DELETE_OPERATION_NAME} ($input: ConfluenceDeletePagePropertyInput!) {
|
|
121
|
+
confluence {
|
|
122
|
+
deletePageProperty(input: $input) {
|
|
123
|
+
success, errors {
|
|
124
|
+
message
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}`;
|
|
129
|
+
const DELETE_BLOG_QUERY = `mutation ${DELETE_OPERATION_NAME} ($input: ConfluenceDeleteBlogPostPropertyInput!) {
|
|
130
|
+
confluence {
|
|
131
|
+
deleteBlogPostProperty(input: $input) {
|
|
132
|
+
success, errors {
|
|
133
|
+
message
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}`;
|
|
119
138
|
export const getContentProperty = async ({
|
|
120
139
|
pageId,
|
|
121
140
|
key,
|
|
@@ -234,4 +253,39 @@ export const createContentProperty = async ({
|
|
|
234
253
|
throw new Error(`Failed to create content property: ${response.statusText}`);
|
|
235
254
|
}
|
|
236
255
|
return await response.json();
|
|
256
|
+
};
|
|
257
|
+
export const deleteContentProperty = async ({
|
|
258
|
+
pageId,
|
|
259
|
+
cloudId,
|
|
260
|
+
pageType,
|
|
261
|
+
key
|
|
262
|
+
}) => {
|
|
263
|
+
const documentARI = getConfluencePageAri(pageId, cloudId, pageType);
|
|
264
|
+
const isBlog = isBlogPageType(pageType);
|
|
265
|
+
const bodyData = {
|
|
266
|
+
query: isBlog ? DELETE_BLOG_QUERY : DELETE_PAGE_QUERY,
|
|
267
|
+
operationName: DELETE_OPERATION_NAME,
|
|
268
|
+
variables: {
|
|
269
|
+
input: {
|
|
270
|
+
...(isBlog ? {
|
|
271
|
+
blogPostId: documentARI
|
|
272
|
+
} : {
|
|
273
|
+
pageId: documentARI
|
|
274
|
+
}),
|
|
275
|
+
key
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
const response = await fetch(GRAPHQL_ENDPOINT, {
|
|
280
|
+
method: 'POST',
|
|
281
|
+
headers: {
|
|
282
|
+
...COMMON_HEADERS,
|
|
283
|
+
...AGG_HEADERS
|
|
284
|
+
},
|
|
285
|
+
body: JSON.stringify(bodyData)
|
|
286
|
+
});
|
|
287
|
+
if (!response.ok) {
|
|
288
|
+
throw new Error(`Failed to delete content property: ${response.statusText}`);
|
|
289
|
+
}
|
|
290
|
+
return await response.json();
|
|
237
291
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -5,7 +5,6 @@ export { SyncBlockStoreManager } from './store-manager/syncBlockStoreManager';
|
|
|
5
5
|
export { useFetchSyncBlockData } from './hooks/useFetchSyncBlockData';
|
|
6
6
|
export { useHandleContentChanges } from './hooks/useHandleContentChanges';
|
|
7
7
|
export { SyncBlockError } from './common/types';
|
|
8
|
-
export { inMemoryFetchProvider, inMemoryWriteProvider } from './providers/in-memory/inMemory';
|
|
9
8
|
export { getDefaultSyncBlockSchema } from './common/schema';
|
|
10
9
|
export { createContentAPIProvidersWithDefaultKey, useMemoizedContentAPIProviders } from './providers/confluence/confluenceContentAPI';
|
|
11
10
|
export { getConfluencePageAri } from './utils/ari';
|
|
@@ -7,7 +7,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
7
7
|
import { useMemo } from 'react';
|
|
8
8
|
import { SyncBlockError } from '../../common/types';
|
|
9
9
|
import { getLocalIdFromAri, getPageIdAndTypeFromAri } from '../../utils/ari';
|
|
10
|
-
import { getContentProperty, createContentProperty, updateContentProperty } from '../../utils/contentProperty';
|
|
10
|
+
import { getContentProperty, createContentProperty, updateContentProperty, deleteContentProperty } from '../../utils/contentProperty';
|
|
11
11
|
import { isBlogPageType } from '../../utils/utils';
|
|
12
12
|
|
|
13
13
|
/**
|
|
@@ -274,6 +274,56 @@ var ConfluenceADFWriteProvider = /*#__PURE__*/function () {
|
|
|
274
274
|
}
|
|
275
275
|
return writeData;
|
|
276
276
|
}()
|
|
277
|
+
}, {
|
|
278
|
+
key: "deleteData",
|
|
279
|
+
value: function () {
|
|
280
|
+
var _deleteData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(resourceId) {
|
|
281
|
+
var _getPageIdAndTypeFrom3, pageId, pageType, localId, key, options, deletePayload, deleteResult;
|
|
282
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
283
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
284
|
+
case 0:
|
|
285
|
+
_getPageIdAndTypeFrom3 = getPageIdAndTypeFromAri(resourceId), pageId = _getPageIdAndTypeFrom3.id, pageType = _getPageIdAndTypeFrom3.type;
|
|
286
|
+
localId = getLocalIdFromAri(resourceId);
|
|
287
|
+
key = getContentPropertyKey(this.config.contentPropertyKey, localId);
|
|
288
|
+
options = {
|
|
289
|
+
pageId: pageId,
|
|
290
|
+
key: key,
|
|
291
|
+
cloudId: this.config.cloudId,
|
|
292
|
+
pageType: pageType
|
|
293
|
+
};
|
|
294
|
+
_context4.prev = 4;
|
|
295
|
+
_context4.next = 7;
|
|
296
|
+
return deleteContentProperty(options);
|
|
297
|
+
case 7:
|
|
298
|
+
deletePayload = _context4.sent;
|
|
299
|
+
deleteResult = isBlogPageType(pageType) ? deletePayload.data.confluence.deleteBlogPostProperty : deletePayload.data.confluence.deletePageProperty;
|
|
300
|
+
_context4.next = 14;
|
|
301
|
+
break;
|
|
302
|
+
case 11:
|
|
303
|
+
_context4.prev = 11;
|
|
304
|
+
_context4.t0 = _context4["catch"](4);
|
|
305
|
+
return _context4.abrupt("return", {
|
|
306
|
+
resourceId: resourceId,
|
|
307
|
+
success: false,
|
|
308
|
+
error: "Fail to delete ".concat(pageType, " content property")
|
|
309
|
+
});
|
|
310
|
+
case 14:
|
|
311
|
+
return _context4.abrupt("return", {
|
|
312
|
+
resourceId: resourceId,
|
|
313
|
+
success: deleteResult.success,
|
|
314
|
+
error: deleteResult.errors.join()
|
|
315
|
+
});
|
|
316
|
+
case 15:
|
|
317
|
+
case "end":
|
|
318
|
+
return _context4.stop();
|
|
319
|
+
}
|
|
320
|
+
}, _callee4, this, [[4, 11]]);
|
|
321
|
+
}));
|
|
322
|
+
function deleteData(_x7) {
|
|
323
|
+
return _deleteData.apply(this, arguments);
|
|
324
|
+
}
|
|
325
|
+
return deleteData;
|
|
326
|
+
}()
|
|
277
327
|
}]);
|
|
278
328
|
}();
|
|
279
329
|
/**
|
|
@@ -83,6 +83,43 @@ export var SyncBlockProvider = /*#__PURE__*/function (_SyncBlockDataProvide) {
|
|
|
83
83
|
});
|
|
84
84
|
return Promise.all(resourceIds);
|
|
85
85
|
}
|
|
86
|
+
}, {
|
|
87
|
+
key: "deleteNodesData",
|
|
88
|
+
value: function () {
|
|
89
|
+
var _deleteNodesData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(resourceIds) {
|
|
90
|
+
var _this4 = this;
|
|
91
|
+
var results;
|
|
92
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
93
|
+
while (1) switch (_context.prev = _context.next) {
|
|
94
|
+
case 0:
|
|
95
|
+
_context.next = 2;
|
|
96
|
+
return Promise.allSettled(resourceIds.map(function (resourceId) {
|
|
97
|
+
return _this4.writeProvider.deleteData(resourceId);
|
|
98
|
+
}));
|
|
99
|
+
case 2:
|
|
100
|
+
results = _context.sent;
|
|
101
|
+
return _context.abrupt("return", results.map(function (result, index) {
|
|
102
|
+
if (result.status === 'fulfilled') {
|
|
103
|
+
return result.value;
|
|
104
|
+
} else {
|
|
105
|
+
return {
|
|
106
|
+
resourceId: resourceIds[index],
|
|
107
|
+
success: false,
|
|
108
|
+
error: result.reason
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
case 4:
|
|
113
|
+
case "end":
|
|
114
|
+
return _context.stop();
|
|
115
|
+
}
|
|
116
|
+
}, _callee);
|
|
117
|
+
}));
|
|
118
|
+
function deleteNodesData(_x) {
|
|
119
|
+
return _deleteNodesData.apply(this, arguments);
|
|
120
|
+
}
|
|
121
|
+
return deleteNodesData;
|
|
122
|
+
}()
|
|
86
123
|
}, {
|
|
87
124
|
key: "getSourceId",
|
|
88
125
|
value: function getSourceId() {
|
|
@@ -116,12 +153,12 @@ export var useMemoizedSyncedBlockProvider = function useMemoizedSyncedBlockProvi
|
|
|
116
153
|
}, [fetchProvider, writeProvider, sourceId]);
|
|
117
154
|
};
|
|
118
155
|
var fetchURLfromARI = /*#__PURE__*/function () {
|
|
119
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
156
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(ari, sourceLocalId) {
|
|
120
157
|
var response, _payload$data, payload, url;
|
|
121
|
-
return _regeneratorRuntime.wrap(function
|
|
122
|
-
while (1) switch (
|
|
158
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
159
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
123
160
|
case 0:
|
|
124
|
-
|
|
161
|
+
_context2.next = 2;
|
|
125
162
|
return fetch('/gateway/api/object-resolver/resolve/ari', {
|
|
126
163
|
method: 'POST',
|
|
127
164
|
headers: {
|
|
@@ -133,36 +170,36 @@ var fetchURLfromARI = /*#__PURE__*/function () {
|
|
|
133
170
|
})
|
|
134
171
|
});
|
|
135
172
|
case 2:
|
|
136
|
-
response =
|
|
173
|
+
response = _context2.sent;
|
|
137
174
|
if (!response.ok) {
|
|
138
|
-
|
|
175
|
+
_context2.next = 12;
|
|
139
176
|
break;
|
|
140
177
|
}
|
|
141
|
-
|
|
178
|
+
_context2.next = 6;
|
|
142
179
|
return response.json();
|
|
143
180
|
case 6:
|
|
144
|
-
payload =
|
|
181
|
+
payload = _context2.sent;
|
|
145
182
|
url = payload === null || payload === void 0 || (_payload$data = payload.data) === null || _payload$data === void 0 ? void 0 : _payload$data.url;
|
|
146
183
|
if (!(typeof url === 'string')) {
|
|
147
|
-
|
|
184
|
+
_context2.next = 10;
|
|
148
185
|
break;
|
|
149
186
|
}
|
|
150
|
-
return
|
|
187
|
+
return _context2.abrupt("return", sourceLocalId ? url + "?block=".concat(sourceLocalId) : url);
|
|
151
188
|
case 10:
|
|
152
|
-
|
|
189
|
+
_context2.next = 13;
|
|
153
190
|
break;
|
|
154
191
|
case 12:
|
|
155
192
|
//eslint-disable-next-line no-console
|
|
156
193
|
console.error('Failed to fetch URL from ARI', response.statusText);
|
|
157
194
|
case 13:
|
|
158
|
-
return
|
|
195
|
+
return _context2.abrupt("return", undefined);
|
|
159
196
|
case 14:
|
|
160
197
|
case "end":
|
|
161
|
-
return
|
|
198
|
+
return _context2.stop();
|
|
162
199
|
}
|
|
163
|
-
},
|
|
200
|
+
}, _callee2);
|
|
164
201
|
}));
|
|
165
|
-
return function fetchURLfromARI(
|
|
202
|
+
return function fetchURLfromARI(_x2, _x3) {
|
|
166
203
|
return _ref.apply(this, arguments);
|
|
167
204
|
};
|
|
168
205
|
}();
|
|
@@ -136,12 +136,12 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
136
136
|
value: function () {
|
|
137
137
|
var _deleteSyncBlocksWithConfirmation = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(tr, syncBlockIds) {
|
|
138
138
|
var _this2 = this;
|
|
139
|
-
var confirmed, _this$editorView;
|
|
139
|
+
var confirmed, _this$editorView, results;
|
|
140
140
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
141
141
|
while (1) switch (_context2.prev = _context2.next) {
|
|
142
142
|
case 0:
|
|
143
143
|
if (!this.confirmationCallback) {
|
|
144
|
-
_context2.next =
|
|
144
|
+
_context2.next = 19;
|
|
145
145
|
break;
|
|
146
146
|
}
|
|
147
147
|
this.confirmationTransaction = tr;
|
|
@@ -149,20 +149,44 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
|
|
|
149
149
|
return this.confirmationCallback();
|
|
150
150
|
case 4:
|
|
151
151
|
confirmed = _context2.sent;
|
|
152
|
-
if (confirmed) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
152
|
+
if (!confirmed) {
|
|
153
|
+
_context2.next = 18;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
(_this$editorView = this.editorView) === null || _this$editorView === void 0 || _this$editorView.dispatch(this.confirmationTransaction.setMeta('isConfirmedSyncBlockDeletion', true));
|
|
157
|
+
_context2.prev = 7;
|
|
158
|
+
if (this.dataProvider) {
|
|
159
|
+
_context2.next = 10;
|
|
160
|
+
break;
|
|
159
161
|
}
|
|
162
|
+
throw new Error('Data provider not set');
|
|
163
|
+
case 10:
|
|
164
|
+
_context2.next = 12;
|
|
165
|
+
return this.dataProvider.deleteNodesData(syncBlockIds.map(function (attrs) {
|
|
166
|
+
return attrs.resourceId;
|
|
167
|
+
}));
|
|
168
|
+
case 12:
|
|
169
|
+
results = _context2.sent;
|
|
170
|
+
results.forEach(function (result) {
|
|
171
|
+
if (result.success) {
|
|
172
|
+
// Only delete when it's deleted successfully in backend
|
|
173
|
+
_this2.syncBlockCache.delete(result.resourceId);
|
|
174
|
+
} else {
|
|
175
|
+
// TODO: EDITOR-1921 - add error analytics with result.error
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
_context2.next = 18;
|
|
179
|
+
break;
|
|
180
|
+
case 16:
|
|
181
|
+
_context2.prev = 16;
|
|
182
|
+
_context2.t0 = _context2["catch"](7);
|
|
183
|
+
case 18:
|
|
160
184
|
this.confirmationTransaction = undefined;
|
|
161
|
-
case
|
|
185
|
+
case 19:
|
|
162
186
|
case "end":
|
|
163
187
|
return _context2.stop();
|
|
164
188
|
}
|
|
165
|
-
}, _callee2, this);
|
|
189
|
+
}, _callee2, this, [[7, 16]]);
|
|
166
190
|
}));
|
|
167
191
|
function deleteSyncBlocksWithConfirmation(_x, _x2) {
|
|
168
192
|
return _deleteSyncBlocksWithConfirmation.apply(this, arguments);
|
|
@@ -16,6 +16,7 @@ var GRAPHQL_ENDPOINT = '/gateway/api/graphql';
|
|
|
16
16
|
var GET_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_GET';
|
|
17
17
|
var CREATE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_CREATE';
|
|
18
18
|
var UPDATE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_UPDATE';
|
|
19
|
+
var DELETE_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_DELETE';
|
|
19
20
|
/**
|
|
20
21
|
* Query to get the page property by key
|
|
21
22
|
* @param documentARI
|
|
@@ -67,6 +68,8 @@ var UPDATE_PAGE_QUERY = "mutation ".concat(UPDATE_OPERATION_NAME, " ($input: Con
|
|
|
67
68
|
* @returns
|
|
68
69
|
*/
|
|
69
70
|
var UPDATE_BLOG_QUERY = "mutation ".concat(UPDATE_OPERATION_NAME, " ($input: ConfluenceUpdateValueBlogPostPropertyInput!) {\n\tconfluence {\n\t\tupdateValueBlogPostProperty(input: $input) {\n\t\t\tblogPostProperty {\n\t\t\t\tkey,\n\t\t\t\tvalue\n\t\t\t}\n\t\t}\n\t}\n}");
|
|
71
|
+
var DELETE_PAGE_QUERY = "mutation ".concat(DELETE_OPERATION_NAME, " ($input: ConfluenceDeletePagePropertyInput!) {\n\t\t\t\t\t\tconfluence {\n\t\t\t\t\t\t\tdeletePageProperty(input: $input) {\n\t\t\t\t\t\t\t\tsuccess, errors {\n\t\t\t\t\t\t\t\t message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}");
|
|
72
|
+
var DELETE_BLOG_QUERY = "mutation ".concat(DELETE_OPERATION_NAME, " ($input: ConfluenceDeleteBlogPostPropertyInput!) {\n\t\t\t\t\t\tconfluence {\n\t\t\t\t\t\t\tdeleteBlogPostProperty(input: $input) {\n\t\t\t\t\t\t\t\tsuccess, errors {\n\t\t\t\t\t\t\t\t message\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}");
|
|
70
73
|
export var getContentProperty = /*#__PURE__*/function () {
|
|
71
74
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
72
75
|
var pageId, key, cloudId, pageType, documentARI, isBlog, bodyData, response;
|
|
@@ -224,4 +227,54 @@ export var createContentProperty = /*#__PURE__*/function () {
|
|
|
224
227
|
return function createContentProperty(_x3) {
|
|
225
228
|
return _ref6.apply(this, arguments);
|
|
226
229
|
};
|
|
230
|
+
}();
|
|
231
|
+
export var deleteContentProperty = /*#__PURE__*/function () {
|
|
232
|
+
var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref7) {
|
|
233
|
+
var pageId, cloudId, pageType, key, documentARI, isBlog, bodyData, response;
|
|
234
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
235
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
236
|
+
case 0:
|
|
237
|
+
pageId = _ref7.pageId, cloudId = _ref7.cloudId, pageType = _ref7.pageType, key = _ref7.key;
|
|
238
|
+
documentARI = getConfluencePageAri(pageId, cloudId, pageType);
|
|
239
|
+
isBlog = isBlogPageType(pageType);
|
|
240
|
+
bodyData = {
|
|
241
|
+
query: isBlog ? DELETE_BLOG_QUERY : DELETE_PAGE_QUERY,
|
|
242
|
+
operationName: DELETE_OPERATION_NAME,
|
|
243
|
+
variables: {
|
|
244
|
+
input: _objectSpread(_objectSpread({}, isBlog ? {
|
|
245
|
+
blogPostId: documentARI
|
|
246
|
+
} : {
|
|
247
|
+
pageId: documentARI
|
|
248
|
+
}), {}, {
|
|
249
|
+
key: key
|
|
250
|
+
})
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
_context4.next = 6;
|
|
254
|
+
return fetch(GRAPHQL_ENDPOINT, {
|
|
255
|
+
method: 'POST',
|
|
256
|
+
headers: _objectSpread(_objectSpread({}, COMMON_HEADERS), AGG_HEADERS),
|
|
257
|
+
body: JSON.stringify(bodyData)
|
|
258
|
+
});
|
|
259
|
+
case 6:
|
|
260
|
+
response = _context4.sent;
|
|
261
|
+
if (response.ok) {
|
|
262
|
+
_context4.next = 9;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
throw new Error("Failed to delete content property: ".concat(response.statusText));
|
|
266
|
+
case 9:
|
|
267
|
+
_context4.next = 11;
|
|
268
|
+
return response.json();
|
|
269
|
+
case 11:
|
|
270
|
+
return _context4.abrupt("return", _context4.sent);
|
|
271
|
+
case 12:
|
|
272
|
+
case "end":
|
|
273
|
+
return _context4.stop();
|
|
274
|
+
}
|
|
275
|
+
}, _callee4);
|
|
276
|
+
}));
|
|
277
|
+
return function deleteContentProperty(_x4) {
|
|
278
|
+
return _ref8.apply(this, arguments);
|
|
279
|
+
};
|
|
227
280
|
}();
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export { useHandleContentChanges } from './hooks/useHandleContentChanges';
|
|
|
5
5
|
export type { SyncBlockData, SyncBlockNode } from './common/types';
|
|
6
6
|
export type { SyncBlockDataProvider, ADFFetchProvider, ADFWriteProvider, FetchSyncBlockDataResult, } from './providers/types';
|
|
7
7
|
export { SyncBlockError } from './common/types';
|
|
8
|
-
export { inMemoryFetchProvider, inMemoryWriteProvider } from './providers/in-memory/inMemory';
|
|
9
8
|
export { getDefaultSyncBlockSchema } from './common/schema';
|
|
10
9
|
export { createContentAPIProvidersWithDefaultKey, useMemoizedContentAPIProviders, } from './providers/confluence/confluenceContentAPI';
|
|
11
10
|
export { getConfluencePageAri } from './utils/ari';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type SyncBlockData } from '../../common/types';
|
|
2
|
-
import type { ADFFetchProvider, ADFWriteProvider, FetchSyncBlockDataResult } from '../types';
|
|
2
|
+
import type { ADFFetchProvider, ADFWriteProvider, DeleteSyncBlockResult, FetchSyncBlockDataResult } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration for Content API providers
|
|
5
5
|
*/
|
|
@@ -23,6 +23,7 @@ declare class ConfluenceADFWriteProvider implements ADFWriteProvider {
|
|
|
23
23
|
constructor(config: ContentAPIConfig);
|
|
24
24
|
private createNewContentProperty;
|
|
25
25
|
writeData(data: SyncBlockData): Promise<string>;
|
|
26
|
+
deleteData(resourceId: string): Promise<DeleteSyncBlockResult>;
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* Convenience function to create providers with default content property key
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
|
|
2
2
|
import { type SyncBlockData, type SyncBlockNode } from '../common/types';
|
|
3
|
-
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type FetchSyncBlockDataResult } from '../providers/types';
|
|
3
|
+
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type FetchSyncBlockDataResult } from '../providers/types';
|
|
4
4
|
export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
5
5
|
name: string;
|
|
6
6
|
private fetchProvider;
|
|
@@ -18,6 +18,7 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
18
18
|
* @returns the resource ids of the nodes that were written
|
|
19
19
|
*/
|
|
20
20
|
writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<string | undefined>>;
|
|
21
|
+
deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
21
22
|
getSourceId(): string;
|
|
22
23
|
retrieveSyncBlockSourceUrl(node: SyncBlockNode): Promise<string | undefined>;
|
|
23
24
|
}
|
|
@@ -5,14 +5,21 @@ export type FetchSyncBlockDataResult = {
|
|
|
5
5
|
error?: SyncBlockError;
|
|
6
6
|
resourceId?: string;
|
|
7
7
|
};
|
|
8
|
+
export type DeleteSyncBlockResult = {
|
|
9
|
+
error?: string;
|
|
10
|
+
resourceId: string;
|
|
11
|
+
success: boolean;
|
|
12
|
+
};
|
|
8
13
|
export interface ADFFetchProvider {
|
|
9
14
|
fetchData: (resourceId: ResourceId) => Promise<FetchSyncBlockDataResult>;
|
|
10
15
|
}
|
|
11
16
|
export interface ADFWriteProvider {
|
|
17
|
+
deleteData: (resourceId: string) => Promise<DeleteSyncBlockResult>;
|
|
12
18
|
writeData: (data: SyncBlockData) => Promise<string>;
|
|
13
19
|
}
|
|
14
20
|
export declare abstract class SyncBlockDataProvider extends NodeDataProvider<SyncBlockNode, FetchSyncBlockDataResult> {
|
|
15
21
|
abstract writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<ResourceId | undefined>>;
|
|
22
|
+
abstract deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
16
23
|
abstract getSourceId(): ResourceId;
|
|
17
24
|
abstract retrieveSyncBlockSourceUrl(node: SyncBlockNode): Promise<string | undefined>;
|
|
18
25
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
2
|
import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
|
|
3
3
|
import type { EditorView } from '@atlaskit/editor-prosemirror/view';
|
|
4
4
|
import type { SyncBlockAttrs, SyncBlockNode } from '../common/types';
|
|
@@ -22,6 +22,12 @@ type UpdateContentPropertyOptions = {
|
|
|
22
22
|
signal?: AbortSignal;
|
|
23
23
|
value: SyncBlockData;
|
|
24
24
|
};
|
|
25
|
+
type DeleteContentPropertyOptions = {
|
|
26
|
+
cloudId: string;
|
|
27
|
+
key: string;
|
|
28
|
+
pageId: string;
|
|
29
|
+
pageType: PAGE_TYPE;
|
|
30
|
+
};
|
|
25
31
|
export type GetContentPropertyResult = {
|
|
26
32
|
data: {
|
|
27
33
|
confluence: {
|
|
@@ -98,7 +104,36 @@ export type CreateBlogPostContentPropertyResult = {
|
|
|
98
104
|
};
|
|
99
105
|
};
|
|
100
106
|
};
|
|
107
|
+
export type DeletePageContentPropertyResult = {
|
|
108
|
+
data: {
|
|
109
|
+
confluence: {
|
|
110
|
+
deletePageProperty: {
|
|
111
|
+
errors: [
|
|
112
|
+
{
|
|
113
|
+
message: string;
|
|
114
|
+
}
|
|
115
|
+
];
|
|
116
|
+
success: boolean;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
export type DeleteBlogPostPropertyResult = {
|
|
122
|
+
data: {
|
|
123
|
+
confluence: {
|
|
124
|
+
deleteBlogPostProperty: {
|
|
125
|
+
errors: [
|
|
126
|
+
{
|
|
127
|
+
message: string;
|
|
128
|
+
}
|
|
129
|
+
];
|
|
130
|
+
success: boolean;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
};
|
|
101
135
|
export declare const getContentProperty: <T extends GetContentPropertyResult | GetBlogPostContentPropertyResult>({ pageId, key, cloudId, pageType, }: GetContentPropertyOptions) => Promise<T>;
|
|
102
136
|
export declare const updateContentProperty: <T extends UpdateContentPropertyResult | UpdateBlogPostContentPropertyResult>({ pageId, key, value, cloudId, pageType, }: UpdateContentPropertyOptions) => Promise<T>;
|
|
103
137
|
export declare const createContentProperty: <T extends CreateContentPropertyResult | CreateBlogPostContentPropertyResult>({ pageId, key, value, cloudId, pageType, }: CreateContentPropertyOptions) => Promise<T>;
|
|
138
|
+
export declare const deleteContentProperty: <T extends DeletePageContentPropertyResult | DeleteBlogPostPropertyResult>({ pageId, cloudId, pageType, key, }: DeleteContentPropertyOptions) => Promise<T>;
|
|
104
139
|
export {};
|
|
@@ -5,7 +5,6 @@ export { useHandleContentChanges } from './hooks/useHandleContentChanges';
|
|
|
5
5
|
export type { SyncBlockData, SyncBlockNode } from './common/types';
|
|
6
6
|
export type { SyncBlockDataProvider, ADFFetchProvider, ADFWriteProvider, FetchSyncBlockDataResult, } from './providers/types';
|
|
7
7
|
export { SyncBlockError } from './common/types';
|
|
8
|
-
export { inMemoryFetchProvider, inMemoryWriteProvider } from './providers/in-memory/inMemory';
|
|
9
8
|
export { getDefaultSyncBlockSchema } from './common/schema';
|
|
10
9
|
export { createContentAPIProvidersWithDefaultKey, useMemoizedContentAPIProviders, } from './providers/confluence/confluenceContentAPI';
|
|
11
10
|
export { getConfluencePageAri } from './utils/ari';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type SyncBlockData } from '../../common/types';
|
|
2
|
-
import type { ADFFetchProvider, ADFWriteProvider, FetchSyncBlockDataResult } from '../types';
|
|
2
|
+
import type { ADFFetchProvider, ADFWriteProvider, DeleteSyncBlockResult, FetchSyncBlockDataResult } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration for Content API providers
|
|
5
5
|
*/
|
|
@@ -23,6 +23,7 @@ declare class ConfluenceADFWriteProvider implements ADFWriteProvider {
|
|
|
23
23
|
constructor(config: ContentAPIConfig);
|
|
24
24
|
private createNewContentProperty;
|
|
25
25
|
writeData(data: SyncBlockData): Promise<string>;
|
|
26
|
+
deleteData(resourceId: string): Promise<DeleteSyncBlockResult>;
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
29
|
* Convenience function to create providers with default content property key
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
|
|
2
2
|
import { type SyncBlockData, type SyncBlockNode } from '../common/types';
|
|
3
|
-
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type FetchSyncBlockDataResult } from '../providers/types';
|
|
3
|
+
import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type FetchSyncBlockDataResult } from '../providers/types';
|
|
4
4
|
export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
5
5
|
name: string;
|
|
6
6
|
private fetchProvider;
|
|
@@ -18,6 +18,7 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
|
|
|
18
18
|
* @returns the resource ids of the nodes that were written
|
|
19
19
|
*/
|
|
20
20
|
writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<string | undefined>>;
|
|
21
|
+
deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
21
22
|
getSourceId(): string;
|
|
22
23
|
retrieveSyncBlockSourceUrl(node: SyncBlockNode): Promise<string | undefined>;
|
|
23
24
|
}
|
|
@@ -5,14 +5,21 @@ export type FetchSyncBlockDataResult = {
|
|
|
5
5
|
error?: SyncBlockError;
|
|
6
6
|
resourceId?: string;
|
|
7
7
|
};
|
|
8
|
+
export type DeleteSyncBlockResult = {
|
|
9
|
+
error?: string;
|
|
10
|
+
resourceId: string;
|
|
11
|
+
success: boolean;
|
|
12
|
+
};
|
|
8
13
|
export interface ADFFetchProvider {
|
|
9
14
|
fetchData: (resourceId: ResourceId) => Promise<FetchSyncBlockDataResult>;
|
|
10
15
|
}
|
|
11
16
|
export interface ADFWriteProvider {
|
|
17
|
+
deleteData: (resourceId: string) => Promise<DeleteSyncBlockResult>;
|
|
12
18
|
writeData: (data: SyncBlockData) => Promise<string>;
|
|
13
19
|
}
|
|
14
20
|
export declare abstract class SyncBlockDataProvider extends NodeDataProvider<SyncBlockNode, FetchSyncBlockDataResult> {
|
|
15
21
|
abstract writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<ResourceId | undefined>>;
|
|
22
|
+
abstract deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
|
|
16
23
|
abstract getSourceId(): ResourceId;
|
|
17
24
|
abstract retrieveSyncBlockSourceUrl(node: SyncBlockNode): Promise<string | undefined>;
|
|
18
25
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
|
|
2
2
|
import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
|
|
3
3
|
import type { EditorView } from '@atlaskit/editor-prosemirror/view';
|
|
4
4
|
import type { SyncBlockAttrs, SyncBlockNode } from '../common/types';
|
|
@@ -22,6 +22,12 @@ type UpdateContentPropertyOptions = {
|
|
|
22
22
|
signal?: AbortSignal;
|
|
23
23
|
value: SyncBlockData;
|
|
24
24
|
};
|
|
25
|
+
type DeleteContentPropertyOptions = {
|
|
26
|
+
cloudId: string;
|
|
27
|
+
key: string;
|
|
28
|
+
pageId: string;
|
|
29
|
+
pageType: PAGE_TYPE;
|
|
30
|
+
};
|
|
25
31
|
export type GetContentPropertyResult = {
|
|
26
32
|
data: {
|
|
27
33
|
confluence: {
|
|
@@ -98,7 +104,36 @@ export type CreateBlogPostContentPropertyResult = {
|
|
|
98
104
|
};
|
|
99
105
|
};
|
|
100
106
|
};
|
|
107
|
+
export type DeletePageContentPropertyResult = {
|
|
108
|
+
data: {
|
|
109
|
+
confluence: {
|
|
110
|
+
deletePageProperty: {
|
|
111
|
+
errors: [
|
|
112
|
+
{
|
|
113
|
+
message: string;
|
|
114
|
+
}
|
|
115
|
+
];
|
|
116
|
+
success: boolean;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
export type DeleteBlogPostPropertyResult = {
|
|
122
|
+
data: {
|
|
123
|
+
confluence: {
|
|
124
|
+
deleteBlogPostProperty: {
|
|
125
|
+
errors: [
|
|
126
|
+
{
|
|
127
|
+
message: string;
|
|
128
|
+
}
|
|
129
|
+
];
|
|
130
|
+
success: boolean;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
};
|
|
101
135
|
export declare const getContentProperty: <T extends GetContentPropertyResult | GetBlogPostContentPropertyResult>({ pageId, key, cloudId, pageType, }: GetContentPropertyOptions) => Promise<T>;
|
|
102
136
|
export declare const updateContentProperty: <T extends UpdateContentPropertyResult | UpdateBlogPostContentPropertyResult>({ pageId, key, value, cloudId, pageType, }: UpdateContentPropertyOptions) => Promise<T>;
|
|
103
137
|
export declare const createContentProperty: <T extends CreateContentPropertyResult | CreateBlogPostContentPropertyResult>({ pageId, key, value, cloudId, pageType, }: CreateContentPropertyOptions) => Promise<T>;
|
|
138
|
+
export declare const deleteContentProperty: <T extends DeletePageContentPropertyResult | DeleteBlogPostPropertyResult>({ pageId, cloudId, pageType, key, }: DeleteContentPropertyOptions) => Promise<T>;
|
|
104
139
|
export {};
|
package/package.json
CHANGED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.inMemoryWriteProvider = exports.inMemoryFetchProvider = void 0;
|
|
7
|
-
var inMemStore = new Map();
|
|
8
|
-
var inMemoryFetchProvider = exports.inMemoryFetchProvider = {
|
|
9
|
-
fetchData: function fetchData(resourceId) {
|
|
10
|
-
var data = inMemStore.get(resourceId);
|
|
11
|
-
if (!data) {
|
|
12
|
-
throw new Error('Sync Block Provider (in-mem): Data not found');
|
|
13
|
-
}
|
|
14
|
-
return Promise.resolve({
|
|
15
|
-
data: data,
|
|
16
|
-
resourceId: resourceId
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
var inMemoryWriteProvider = exports.inMemoryWriteProvider = {
|
|
21
|
-
writeData: function writeData(data) {
|
|
22
|
-
if (data.resourceId) {
|
|
23
|
-
inMemStore.set(data.resourceId, data);
|
|
24
|
-
return Promise.resolve(data.resourceId);
|
|
25
|
-
} else {
|
|
26
|
-
var uuid = crypto.randomUUID();
|
|
27
|
-
inMemStore.set(uuid, data);
|
|
28
|
-
return Promise.resolve(uuid);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
const inMemStore = new Map();
|
|
2
|
-
export const inMemoryFetchProvider = {
|
|
3
|
-
fetchData: resourceId => {
|
|
4
|
-
const data = inMemStore.get(resourceId);
|
|
5
|
-
if (!data) {
|
|
6
|
-
throw new Error('Sync Block Provider (in-mem): Data not found');
|
|
7
|
-
}
|
|
8
|
-
return Promise.resolve({
|
|
9
|
-
data,
|
|
10
|
-
resourceId
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
export const inMemoryWriteProvider = {
|
|
15
|
-
writeData: data => {
|
|
16
|
-
if (data.resourceId) {
|
|
17
|
-
inMemStore.set(data.resourceId, data);
|
|
18
|
-
return Promise.resolve(data.resourceId);
|
|
19
|
-
} else {
|
|
20
|
-
const uuid = crypto.randomUUID();
|
|
21
|
-
inMemStore.set(uuid, data);
|
|
22
|
-
return Promise.resolve(uuid);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
var inMemStore = new Map();
|
|
2
|
-
export var inMemoryFetchProvider = {
|
|
3
|
-
fetchData: function fetchData(resourceId) {
|
|
4
|
-
var data = inMemStore.get(resourceId);
|
|
5
|
-
if (!data) {
|
|
6
|
-
throw new Error('Sync Block Provider (in-mem): Data not found');
|
|
7
|
-
}
|
|
8
|
-
return Promise.resolve({
|
|
9
|
-
data: data,
|
|
10
|
-
resourceId: resourceId
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
export var inMemoryWriteProvider = {
|
|
15
|
-
writeData: function writeData(data) {
|
|
16
|
-
if (data.resourceId) {
|
|
17
|
-
inMemStore.set(data.resourceId, data);
|
|
18
|
-
return Promise.resolve(data.resourceId);
|
|
19
|
-
} else {
|
|
20
|
-
var uuid = crypto.randomUUID();
|
|
21
|
-
inMemStore.set(uuid, data);
|
|
22
|
-
return Promise.resolve(uuid);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
};
|