@atlaskit/editor-synced-block-provider 2.10.6 → 2.11.1

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/clients/block-service/blockService.js +5 -4
  3. package/dist/cjs/clients/confluence/sourceInfo.js +18 -15
  4. package/dist/cjs/hooks/useFetchSyncBlockData.js +20 -11
  5. package/dist/cjs/hooks/useHandleContentChanges.js +1 -5
  6. package/dist/cjs/providers/block-service/blockServiceAPI.js +17 -12
  7. package/dist/cjs/providers/syncBlockProvider.js +4 -4
  8. package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +118 -66
  9. package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +112 -55
  10. package/dist/cjs/store-manager/syncBlockStoreManager.js +3 -3
  11. package/dist/cjs/utils/errorHandling.js +31 -1
  12. package/dist/es2019/clients/block-service/blockService.js +5 -4
  13. package/dist/es2019/clients/confluence/sourceInfo.js +13 -8
  14. package/dist/es2019/hooks/useFetchSyncBlockData.js +15 -7
  15. package/dist/es2019/hooks/useHandleContentChanges.js +1 -5
  16. package/dist/es2019/providers/block-service/blockServiceAPI.js +13 -8
  17. package/dist/es2019/providers/syncBlockProvider.js +4 -4
  18. package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +105 -51
  19. package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +73 -25
  20. package/dist/es2019/store-manager/syncBlockStoreManager.js +3 -3
  21. package/dist/es2019/utils/errorHandling.js +17 -1
  22. package/dist/esm/clients/block-service/blockService.js +5 -4
  23. package/dist/esm/clients/confluence/sourceInfo.js +18 -15
  24. package/dist/esm/hooks/useFetchSyncBlockData.js +20 -11
  25. package/dist/esm/hooks/useHandleContentChanges.js +1 -5
  26. package/dist/esm/providers/block-service/blockServiceAPI.js +17 -12
  27. package/dist/esm/providers/syncBlockProvider.js +4 -4
  28. package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +118 -66
  29. package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +110 -53
  30. package/dist/esm/store-manager/syncBlockStoreManager.js +3 -3
  31. package/dist/esm/utils/errorHandling.js +30 -0
  32. package/dist/types/clients/block-service/blockService.d.ts +0 -2
  33. package/dist/types/clients/confluence/sourceInfo.d.ts +2 -1
  34. package/dist/types/hooks/useFetchSyncBlockData.d.ts +2 -1
  35. package/dist/types/providers/block-service/blockServiceAPI.d.ts +6 -3
  36. package/dist/types/providers/syncBlockProvider.d.ts +2 -1
  37. package/dist/types/providers/types.d.ts +2 -1
  38. package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +4 -1
  39. package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +3 -1
  40. package/dist/types/store-manager/syncBlockStoreManager.d.ts +2 -1
  41. package/dist/types/utils/errorHandling.d.ts +10 -0
  42. package/dist/types-ts4.5/clients/block-service/blockService.d.ts +0 -2
  43. package/dist/types-ts4.5/clients/confluence/sourceInfo.d.ts +2 -1
  44. package/dist/types-ts4.5/hooks/useFetchSyncBlockData.d.ts +2 -1
  45. package/dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts +6 -3
  46. package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +2 -1
  47. package/dist/types-ts4.5/providers/types.d.ts +2 -1
  48. package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +4 -1
  49. package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +3 -1
  50. package/dist/types-ts4.5/store-manager/syncBlockStoreManager.d.ts +2 -1
  51. package/dist/types-ts4.5/utils/errorHandling.d.ts +10 -0
  52. package/package.json +2 -8
@@ -5,7 +5,10 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
7
7
  import uuid from 'uuid';
8
+ import { logException } from '@atlaskit/editor-common/monitoring';
9
+ import { pmHistoryPluginKey } from '@atlaskit/editor-common/utils';
8
10
  import { rebaseTransaction as _rebaseTransaction } from '../common/rebase-transaction';
11
+ import { updateErrorPayload, createErrorPayload, deleteErrorPayload, updateCacheErrorPayload } from '../utils/errorHandling';
9
12
  import { convertSyncBlockPMNodeToSyncBlockData, createBodiedSyncBlockNode as _createBodiedSyncBlockNode } from '../utils/utils';
10
13
  // A store manager responsible for the lifecycle and state management of source sync blocks in an editor instance.
11
14
  // Designed to manage local in-memory state and synchronize with an external data provider.
@@ -13,7 +16,7 @@ import { convertSyncBlockPMNodeToSyncBlockData, createBodiedSyncBlockNode as _cr
13
16
  // Handles caching, debouncing updates, and publish/subscribe for local changes.
14
17
  // Ensures consistency between local and remote state, and can be used in both editor and renderer contexts.
15
18
  export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
16
- function SourceSyncBlockStoreManager(dataProvider) {
19
+ function SourceSyncBlockStoreManager(dataProvider, fireAnalyticsEvent) {
17
20
  var _this = this;
18
21
  _classCallCheck(this, SourceSyncBlockStoreManager);
19
22
  _defineProperty(this, "setPendingDeletion", function (Ids, value) {
@@ -24,6 +27,7 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
24
27
  });
25
28
  this.dataProvider = dataProvider;
26
29
  this.syncBlockCache = new Map();
30
+ this.fireAnalyticsEvent = fireAnalyticsEvent;
27
31
  }
28
32
  return _createClass(SourceSyncBlockStoreManager, [{
29
33
  key: "isSourceBlock",
@@ -38,18 +42,27 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
38
42
  }, {
39
43
  key: "updateSyncBlockData",
40
44
  value: function updateSyncBlockData(syncBlockNode) {
41
- if (!this.isSourceBlock(syncBlockNode)) {
42
- throw new Error('Invalid sync block node type provided for updateSyncBlockData');
43
- }
44
- var _syncBlockNode$attrs = syncBlockNode.attrs,
45
- localId = _syncBlockNode$attrs.localId,
46
- resourceId = _syncBlockNode$attrs.resourceId;
47
- if (!localId || !resourceId) {
48
- throw new Error('Local ID or resource ID is not set');
45
+ try {
46
+ if (!this.isSourceBlock(syncBlockNode)) {
47
+ throw new Error('Invalid sync block node type provided for updateSyncBlockData');
48
+ }
49
+ var _syncBlockNode$attrs = syncBlockNode.attrs,
50
+ localId = _syncBlockNode$attrs.localId,
51
+ resourceId = _syncBlockNode$attrs.resourceId;
52
+ if (!localId || !resourceId) {
53
+ throw new Error('Local ID or resource ID is not set');
54
+ }
55
+ var syncBlockData = convertSyncBlockPMNodeToSyncBlockData(syncBlockNode);
56
+ this.syncBlockCache.set(resourceId, syncBlockData);
57
+ return true;
58
+ } catch (error) {
59
+ var _this$fireAnalyticsEv;
60
+ logException(error, {
61
+ location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
62
+ });
63
+ (_this$fireAnalyticsEv = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv === void 0 || _this$fireAnalyticsEv.call(this, updateCacheErrorPayload(error.message));
64
+ return false;
49
65
  }
50
- var syncBlockData = convertSyncBlockPMNodeToSyncBlockData(syncBlockNode);
51
- this.syncBlockCache.set(resourceId, syncBlockData);
52
- return true;
53
66
  }
54
67
 
55
68
  /**
@@ -61,7 +74,8 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
61
74
  key: "flush",
62
75
  value: (function () {
63
76
  var _flush = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
64
- var bodiedSyncBlockNodes, bodiedSyncBlockData, writeResults;
77
+ var _this2 = this;
78
+ var bodiedSyncBlockNodes, bodiedSyncBlockData, writeResults, _this$fireAnalyticsEv2;
65
79
  return _regeneratorRuntime.wrap(function _callee$(_context) {
66
80
  while (1) switch (_context.prev = _context.next) {
67
81
  case 0:
@@ -97,18 +111,37 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
97
111
  return this.dataProvider.writeNodesData(bodiedSyncBlockNodes, bodiedSyncBlockData);
98
112
  case 10:
99
113
  writeResults = _context.sent;
100
- return _context.abrupt("return", writeResults.every(function (result) {
114
+ if (!writeResults.every(function (result) {
101
115
  return result.resourceId !== undefined;
102
- }));
103
- case 14:
104
- _context.prev = 14;
105
- _context.t0 = _context["catch"](0);
116
+ })) {
117
+ _context.next = 15;
118
+ break;
119
+ }
120
+ return _context.abrupt("return", true);
121
+ case 15:
122
+ writeResults.filter(function (result) {
123
+ return result.resourceId === undefined;
124
+ }).forEach(function (result) {
125
+ var _this2$fireAnalyticsE;
126
+ (_this2$fireAnalyticsE = _this2.fireAnalyticsEvent) === null || _this2$fireAnalyticsE === void 0 || _this2$fireAnalyticsE.call(_this2, updateErrorPayload(result.error || 'Failed to write data'));
127
+ });
106
128
  return _context.abrupt("return", false);
107
129
  case 17:
130
+ _context.next = 24;
131
+ break;
132
+ case 19:
133
+ _context.prev = 19;
134
+ _context.t0 = _context["catch"](0);
135
+ logException(_context.t0, {
136
+ location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
137
+ });
138
+ (_this$fireAnalyticsEv2 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv2 === void 0 || _this$fireAnalyticsEv2.call(this, updateErrorPayload(_context.t0.message));
139
+ return _context.abrupt("return", false);
140
+ case 24:
108
141
  case "end":
109
142
  return _context.stop();
110
143
  }
111
- }, _callee, this, [[0, 14]]);
144
+ }, _callee, this, [[0, 19]]);
112
145
  }));
113
146
  function flush() {
114
147
  return _flush.apply(this, arguments);
@@ -161,10 +194,10 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
161
194
  }, {
162
195
  key: "registerConfirmationCallback",
163
196
  value: function registerConfirmationCallback(callback) {
164
- var _this2 = this;
197
+ var _this3 = this;
165
198
  this.confirmationCallback = callback;
166
199
  return function () {
167
- _this2.confirmationCallback = undefined;
200
+ _this3.confirmationCallback = undefined;
168
201
  };
169
202
  }
170
203
  }, {
@@ -184,7 +217,7 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
184
217
  var localId = uuid();
185
218
  var sourceId = (_this$dataProvider = this.dataProvider) === null || _this$dataProvider === void 0 ? void 0 : _this$dataProvider.getSourceId();
186
219
  if (!this.dataProvider || !sourceId) {
187
- throw new Error('Provider of sync block plugin is not set');
220
+ throw new Error('Data provider not set or source id not set');
188
221
  }
189
222
  var resourceId = this.dataProvider.generateResourceId(sourceId, localId);
190
223
  return {
@@ -200,7 +233,7 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
200
233
  }, {
201
234
  key: "createBodiedSyncBlockNode",
202
235
  value: function createBodiedSyncBlockNode(attrs) {
203
- var _this3 = this;
236
+ var _this4 = this;
204
237
  try {
205
238
  if (!this.dataProvider) {
206
239
  throw new Error('Data provider not set');
@@ -215,35 +248,44 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
215
248
  results.forEach(function (result) {
216
249
  var resourceId = result.resourceId;
217
250
  if (resourceId) {
218
- _this3.commitPendingCreation(true);
251
+ _this4.commitPendingCreation(true);
219
252
  } else {
220
- _this3.commitPendingCreation(false);
221
- // TODO: EDITOR-1921 - add error analytics
253
+ var _this4$fireAnalyticsE;
254
+ _this4.commitPendingCreation(false);
255
+ (_this4$fireAnalyticsE = _this4.fireAnalyticsEvent) === null || _this4$fireAnalyticsE === void 0 || _this4$fireAnalyticsE.call(_this4, createErrorPayload(result.error || 'Failed to create bodied sync block'));
222
256
  }
223
257
  });
224
- }).catch(function (_reason) {
225
- _this3.commitPendingCreation(false);
226
- // TODO: EDITOR-1921 - add error analytics
258
+ }).catch(function (error) {
259
+ var _this4$fireAnalyticsE2;
260
+ _this4.commitPendingCreation(false);
261
+ logException(error, {
262
+ location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
263
+ });
264
+ (_this4$fireAnalyticsE2 = _this4.fireAnalyticsEvent) === null || _this4$fireAnalyticsE2 === void 0 || _this4$fireAnalyticsE2.call(_this4, createErrorPayload(error.message));
227
265
  });
228
266
  this.registerPendingCreation(resourceId);
229
267
  } catch (error) {
268
+ var _this$fireAnalyticsEv3;
230
269
  if (this.hasPendingCreation()) {
231
270
  this.commitPendingCreation(false);
232
271
  }
233
- // TODO: EDITOR-1921 - add error analytics
272
+ logException(error, {
273
+ location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
274
+ });
275
+ (_this$fireAnalyticsEv3 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv3 === void 0 || _this$fireAnalyticsEv3.call(this, createErrorPayload(error.message));
234
276
  }
235
277
  }
236
278
  }, {
237
279
  key: "deleteSyncBlocksWithConfirmation",
238
280
  value: function () {
239
281
  var _deleteSyncBlocksWithConfirmation = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(tr, syncBlockIds) {
240
- var _this4 = this;
241
- var confirmed, _this$editorView, results, callback;
282
+ var _this5 = this;
283
+ var confirmed, _this$editorView, trToDispatch, results, callback, _this$fireAnalyticsEv4;
242
284
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
243
285
  while (1) switch (_context2.prev = _context2.next) {
244
286
  case 0:
245
287
  if (!this.confirmationCallback) {
246
- _context2.next = 22;
288
+ _context2.next = 26;
247
289
  break;
248
290
  }
249
291
  this.confirmationTransaction = tr;
@@ -252,55 +294,69 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
252
294
  case 4:
253
295
  confirmed = _context2.sent;
254
296
  if (!confirmed) {
255
- _context2.next = 21;
297
+ _context2.next = 25;
256
298
  break;
257
299
  }
258
- (_this$editorView = this.editorView) === null || _this$editorView === void 0 || _this$editorView.dispatch(this.confirmationTransaction.setMeta('isConfirmedSyncBlockDeletion', true));
259
- _context2.prev = 7;
300
+ trToDispatch = this.confirmationTransaction.setMeta('isConfirmedSyncBlockDeletion', true);
301
+ if (!trToDispatch.getMeta(pmHistoryPluginKey)) {
302
+ // bodiedSyncBlock deletion is expected to be permanent (cannot be undo)
303
+ // For a normal delete (not triggered by undo), remove it from history so that it cannot be undone
304
+ trToDispatch.setMeta('addToHistory', false);
305
+ }
306
+ (_this$editorView = this.editorView) === null || _this$editorView === void 0 || _this$editorView.dispatch(trToDispatch);
307
+ _context2.prev = 9;
260
308
  if (this.dataProvider) {
261
- _context2.next = 10;
309
+ _context2.next = 12;
262
310
  break;
263
311
  }
264
312
  throw new Error('Data provider not set');
265
- case 10:
313
+ case 12:
266
314
  syncBlockIds.forEach(function (Ids) {
267
- _this4.setPendingDeletion(Ids, true);
315
+ _this5.setPendingDeletion(Ids, true);
268
316
  });
269
- _context2.next = 13;
317
+ _context2.next = 15;
270
318
  return this.dataProvider.deleteNodesData(syncBlockIds.map(function (attrs) {
271
319
  return attrs.resourceId;
272
320
  }));
273
- case 13:
321
+ case 15:
274
322
  results = _context2.sent;
275
323
  if (results.every(function (result) {
276
324
  return result.success;
277
325
  })) {
278
326
  callback = function callback(Ids) {
279
- return _this4.syncBlockCache.delete(Ids.resourceId);
327
+ return _this5.syncBlockCache.delete(Ids.resourceId);
280
328
  };
281
329
  } else {
282
330
  callback = function callback(Ids) {
283
- _this4.setPendingDeletion(Ids, false);
331
+ _this5.setPendingDeletion(Ids, false);
284
332
  };
285
- // TODO: EDITOR-1921 - add error analytics
333
+ results.filter(function (result) {
334
+ return result.resourceId === undefined;
335
+ }).forEach(function (result) {
336
+ var _this5$fireAnalyticsE;
337
+ (_this5$fireAnalyticsE = _this5.fireAnalyticsEvent) === null || _this5$fireAnalyticsE === void 0 || _this5$fireAnalyticsE.call(_this5, deleteErrorPayload(result.error || 'Failed to delete synced block'));
338
+ });
286
339
  }
287
340
  syncBlockIds.forEach(callback);
288
- _context2.next = 21;
341
+ _context2.next = 25;
289
342
  break;
290
- case 18:
291
- _context2.prev = 18;
292
- _context2.t0 = _context2["catch"](7);
343
+ case 20:
344
+ _context2.prev = 20;
345
+ _context2.t0 = _context2["catch"](9);
293
346
  syncBlockIds.forEach(function (Ids) {
294
- _this4.setPendingDeletion(Ids, false);
347
+ _this5.setPendingDeletion(Ids, false);
348
+ });
349
+ logException(_context2.t0, {
350
+ location: 'editor-synced-block-provider/sourceSyncBlockStoreManager'
295
351
  });
296
- // TODO: EDITOR-1921 - add error analytics
297
- case 21:
352
+ (_this$fireAnalyticsEv4 = this.fireAnalyticsEvent) === null || _this$fireAnalyticsEv4 === void 0 || _this$fireAnalyticsEv4.call(this, deleteErrorPayload(_context2.t0.message));
353
+ case 25:
298
354
  this.confirmationTransaction = undefined;
299
- case 22:
355
+ case 26:
300
356
  case "end":
301
357
  return _context2.stop();
302
358
  }
303
- }, _callee2, this, [[7, 18]]);
359
+ }, _callee2, this, [[9, 20]]);
304
360
  }));
305
361
  function deleteSyncBlocksWithConfirmation(_x, _x2) {
306
362
  return _deleteSyncBlocksWithConfirmation.apply(this, arguments);
@@ -325,6 +381,7 @@ export var SourceSyncBlockStoreManager = /*#__PURE__*/function () {
325
381
  this.creationCallback = undefined;
326
382
  this.dataProvider = undefined;
327
383
  this.editorView = undefined;
384
+ this.fireAnalyticsEvent = undefined;
328
385
  }
329
386
  }]);
330
387
  }();
@@ -9,12 +9,12 @@ import { SourceSyncBlockStoreManager } from './sourceSyncBlockStoreManager';
9
9
  // SourceSyncBlockStoreManager is responsible for the lifecycle and state management of source sync blocks in an editor instance.
10
10
  // Can be used in both editor and renderer contexts.
11
11
  export var SyncBlockStoreManager = /*#__PURE__*/function () {
12
- function SyncBlockStoreManager(dataProvider) {
12
+ function SyncBlockStoreManager(dataProvider, fireAnalyticsEvent) {
13
13
  _classCallCheck(this, SyncBlockStoreManager);
14
14
  // In future, if reference manager needs to reach to source manager and read it's current in memorey cache
15
15
  // we can pass the source manager as a parameter to the reference manager constructor
16
- this.sourceSyncBlockStoreManager = new SourceSyncBlockStoreManager(dataProvider);
17
- this.referenceSyncBlockStoreManager = new ReferenceSyncBlockStoreManager(dataProvider);
16
+ this.sourceSyncBlockStoreManager = new SourceSyncBlockStoreManager(dataProvider, fireAnalyticsEvent);
17
+ this.referenceSyncBlockStoreManager = new ReferenceSyncBlockStoreManager(dataProvider, fireAnalyticsEvent);
18
18
  }
19
19
  return _createClass(SyncBlockStoreManager, [{
20
20
  key: "referenceManager",
@@ -1,7 +1,37 @@
1
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE, ACTION_SUBJECT_ID } from "@atlaskit/editor-common/analytics";
1
2
  export var stringifyError = function stringifyError(error) {
2
3
  try {
3
4
  return JSON.stringify(error);
4
5
  } catch (_unused) {
5
6
  return undefined;
6
7
  }
8
+ };
9
+ export var getErrorPayload = function getErrorPayload(actionSubjectId, error) {
10
+ return {
11
+ action: ACTION.ERROR,
12
+ actionSubject: ACTION_SUBJECT.SYNCED_BLOCK,
13
+ actionSubjectId: actionSubjectId,
14
+ eventType: EVENT_TYPE.OPERATIONAL,
15
+ attributes: {
16
+ error: error
17
+ }
18
+ };
19
+ };
20
+ export var fetchErrorPayload = function fetchErrorPayload(error) {
21
+ return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_FETCH, error);
22
+ };
23
+ export var getSourceInfoErrorPayload = function getSourceInfoErrorPayload(error) {
24
+ return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_GET_SOURCE_INFO, error);
25
+ };
26
+ export var updateErrorPayload = function updateErrorPayload(error) {
27
+ return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_UPDATE, error);
28
+ };
29
+ export var createErrorPayload = function createErrorPayload(error) {
30
+ return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_CREATE, error);
31
+ };
32
+ export var deleteErrorPayload = function deleteErrorPayload(error) {
33
+ return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_DELETE, error);
34
+ };
35
+ export var updateCacheErrorPayload = function updateCacheErrorPayload(error) {
36
+ return getErrorPayload(ACTION_SUBJECT_ID.SYNCED_BLOCK_UPDATE_CACHE, error);
7
37
  };
@@ -3,10 +3,8 @@ export type BlockContentResponse = {
3
3
  blockAri: string;
4
4
  blockInstanceId: string;
5
5
  content: string;
6
- contentUpdatedAt: number;
7
6
  createdAt: number;
8
7
  createdBy: string;
9
- isSynced: boolean;
10
8
  product: SyncBlockProduct;
11
9
  sourceAri: string;
12
10
  status: 'active' | 'deleted';
@@ -1,2 +1,3 @@
1
+ import { type RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { SyncBlockSourceInfo } from '../../providers/types';
2
- export declare const fetchConfluencePageInfo: (pageAri: string, localId?: string) => Promise<SyncBlockSourceInfo | undefined>;
3
+ export declare const fetchConfluencePageInfo: (pageAri: string, localId?: string, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void) => Promise<SyncBlockSourceInfo | undefined>;
@@ -1,3 +1,4 @@
1
+ import { type RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
3
  import type { SyncBlockInstance } from '../providers/types';
3
4
  import type { SyncBlockStoreManager } from '../store-manager/syncBlockStoreManager';
@@ -7,4 +8,4 @@ export interface UseFetchSyncBlockDataResult {
7
8
  reloadData: () => Promise<void>;
8
9
  syncBlockInstance: SyncBlockInstance | null;
9
10
  }
10
- export declare const useFetchSyncBlockData: (manager: SyncBlockStoreManager, resourceId?: string, localId?: string) => UseFetchSyncBlockDataResult;
11
+ export declare const useFetchSyncBlockData: (manager: SyncBlockStoreManager, resourceId?: string, localId?: string, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void) => UseFetchSyncBlockDataResult;
@@ -1,4 +1,4 @@
1
- import { type SyncBlockData } from '../../common/types';
1
+ import { type SyncBlockData, type SyncBlockProduct } from '../../common/types';
2
2
  import type { ADFFetchProvider, ADFWriteProvider, DeleteSyncBlockResult, SyncBlockInstance, WriteSyncBlockResult } from '../types';
3
3
  /**
4
4
  * ADFFetchProvider implementation that fetches synced block data from Block Service API
@@ -10,11 +10,14 @@ declare class BlockServiceADFFetchProvider implements ADFFetchProvider {
10
10
  * ADFWriteProvider implementation that writes synced block data to Block Service API
11
11
  */
12
12
  declare class BlockServiceADFWriteProvider implements ADFWriteProvider {
13
+ private sourceAri;
14
+ private product;
15
+ constructor(sourceAri: string, product: SyncBlockProduct);
13
16
  writeData(data: SyncBlockData): Promise<WriteSyncBlockResult>;
14
17
  deleteData(resourceId: string): Promise<DeleteSyncBlockResult>;
15
- generateResourceId(sourceId: string, localId: string): string;
18
+ generateResourceId(sourceAri: string, localId: string): string;
16
19
  }
17
- export declare const useMemoizedBlockServiceAPIProviders: () => {
20
+ export declare const useMemoizedBlockServiceAPIProviders: (sourceAri: string, product: SyncBlockProduct) => {
18
21
  fetchProvider: BlockServiceADFFetchProvider;
19
22
  writeProvider: BlockServiceADFWriteProvider;
20
23
  };
@@ -1,3 +1,4 @@
1
+ import type { RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
2
3
  import { type BlockInstanceId, type ResourceId, type SyncBlockData, type SyncBlockNode, type SyncBlockProduct } from '../common/types';
3
4
  import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type SyncBlockInstance, type SyncBlockParentInfo, type SyncBlockSourceInfo, type SyncedBlockRendererProviderOptions, type WriteSyncBlockResult } from '../providers/types';
@@ -73,7 +74,7 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
73
74
  *
74
75
  * @returns The source info
75
76
  */
76
- fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct): Promise<SyncBlockSourceInfo | undefined>;
77
+ fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): Promise<SyncBlockSourceInfo | undefined>;
77
78
  generateResourceId(sourceId: string, localId: BlockInstanceId): string;
78
79
  /**
79
80
  * Get the synced block renderer provider options
@@ -1,3 +1,4 @@
1
+ import type { RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { MediaProvider, ProfilecardProvider } from '@atlaskit/editor-common/provider-factory';
2
3
  import type { EmojiProvider } from '@atlaskit/emoji';
3
4
  import type { MentionProvider } from '@atlaskit/mention/types';
@@ -64,7 +65,7 @@ export declare abstract class SyncBlockDataProvider extends NodeDataProvider<Syn
64
65
  abstract writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<WriteSyncBlockResult>>;
65
66
  abstract deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
66
67
  abstract getSourceId(): ResourceId;
67
- abstract fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct): Promise<SyncBlockSourceInfo | undefined>;
68
+ abstract fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): Promise<SyncBlockSourceInfo | undefined>;
68
69
  abstract getSyncedBlockRendererProviderOptions(): SyncedBlockRendererProviderOptions;
69
70
  abstract retrieveSyncBlockParentInfo(sourceAri: string, sourceProduct: SyncBlockProduct): SyncBlockParentInfo | undefined;
70
71
  /**
@@ -1,3 +1,4 @@
1
+ import { type RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
3
  import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
4
  import { type ResourceId, type SyncBlockNode } from '../common/types';
@@ -8,9 +9,11 @@ export declare class ReferenceSyncBlockStoreManager {
8
9
  private subscriptions;
9
10
  private titleSubscriptions;
10
11
  private providerFactories;
12
+ private fireAnalyticsEvent?;
11
13
  private syncBlockURLRequests;
12
14
  private isRefreshingSubscriptions;
13
- constructor(dataProvider?: SyncBlockDataProvider);
15
+ constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void);
16
+ updateFireAnalyticsEvent(fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): void;
14
17
  /**
15
18
  * Refreshes the subscriptions for all sync blocks.
16
19
  * @returns {Promise<void>}
@@ -1,3 +1,4 @@
1
+ import { type SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
2
3
  import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
3
4
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
@@ -8,12 +9,13 @@ export type CreationCallback = () => void;
8
9
  export declare class SourceSyncBlockStoreManager {
9
10
  private dataProvider?;
10
11
  private editorView?;
12
+ private fireAnalyticsEvent?;
11
13
  private syncBlockCache;
12
14
  private confirmationCallback?;
13
15
  private confirmationTransaction?;
14
16
  private pendingResourceId?;
15
17
  private creationCallback?;
16
- constructor(dataProvider?: SyncBlockDataProvider);
18
+ constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void);
17
19
  isSourceBlock(node: PMNode): boolean;
18
20
  /**
19
21
  * Add/update a sync block node to/from the local cache
@@ -1,10 +1,11 @@
1
+ import type { SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { SyncBlockDataProvider } from '../providers/types';
2
3
  import { ReferenceSyncBlockStoreManager } from './referenceSyncBlockStoreManager';
3
4
  import { SourceSyncBlockStoreManager } from './sourceSyncBlockStoreManager';
4
5
  export declare class SyncBlockStoreManager {
5
6
  private referenceSyncBlockStoreManager;
6
7
  private sourceSyncBlockStoreManager;
7
- constructor(dataProvider?: SyncBlockDataProvider);
8
+ constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void);
8
9
  get referenceManager(): ReferenceSyncBlockStoreManager;
9
10
  get sourceManager(): SourceSyncBlockStoreManager;
10
11
  destroy(): void;
@@ -1 +1,11 @@
1
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, type RendererSyncBlockEventPayload, type OperationalAEP, type SyncBlockEventPayload } from "@atlaskit/editor-common/analytics";
1
2
  export declare const stringifyError: (error: unknown) => string | undefined;
3
+ export declare const getErrorPayload: <T extends ACTION_SUBJECT_ID>(actionSubjectId: T, error: string) => OperationalAEP<ACTION.ERROR, ACTION_SUBJECT.SYNCED_BLOCK, T, {
4
+ error: string;
5
+ }>;
6
+ export declare const fetchErrorPayload: (error: string) => RendererSyncBlockEventPayload;
7
+ export declare const getSourceInfoErrorPayload: (error: string) => RendererSyncBlockEventPayload;
8
+ export declare const updateErrorPayload: (error: string) => SyncBlockEventPayload;
9
+ export declare const createErrorPayload: (error: string) => SyncBlockEventPayload;
10
+ export declare const deleteErrorPayload: (error: string) => SyncBlockEventPayload;
11
+ export declare const updateCacheErrorPayload: (error: string) => SyncBlockEventPayload;
@@ -3,10 +3,8 @@ export type BlockContentResponse = {
3
3
  blockAri: string;
4
4
  blockInstanceId: string;
5
5
  content: string;
6
- contentUpdatedAt: number;
7
6
  createdAt: number;
8
7
  createdBy: string;
9
- isSynced: boolean;
10
8
  product: SyncBlockProduct;
11
9
  sourceAri: string;
12
10
  status: 'active' | 'deleted';
@@ -1,2 +1,3 @@
1
+ import { type RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { SyncBlockSourceInfo } from '../../providers/types';
2
- export declare const fetchConfluencePageInfo: (pageAri: string, localId?: string) => Promise<SyncBlockSourceInfo | undefined>;
3
+ export declare const fetchConfluencePageInfo: (pageAri: string, localId?: string, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void) => Promise<SyncBlockSourceInfo | undefined>;
@@ -1,3 +1,4 @@
1
+ import { type RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
3
  import type { SyncBlockInstance } from '../providers/types';
3
4
  import type { SyncBlockStoreManager } from '../store-manager/syncBlockStoreManager';
@@ -7,4 +8,4 @@ export interface UseFetchSyncBlockDataResult {
7
8
  reloadData: () => Promise<void>;
8
9
  syncBlockInstance: SyncBlockInstance | null;
9
10
  }
10
- export declare const useFetchSyncBlockData: (manager: SyncBlockStoreManager, resourceId?: string, localId?: string) => UseFetchSyncBlockDataResult;
11
+ export declare const useFetchSyncBlockData: (manager: SyncBlockStoreManager, resourceId?: string, localId?: string, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void) => UseFetchSyncBlockDataResult;
@@ -1,4 +1,4 @@
1
- import { type SyncBlockData } from '../../common/types';
1
+ import { type SyncBlockData, type SyncBlockProduct } from '../../common/types';
2
2
  import type { ADFFetchProvider, ADFWriteProvider, DeleteSyncBlockResult, SyncBlockInstance, WriteSyncBlockResult } from '../types';
3
3
  /**
4
4
  * ADFFetchProvider implementation that fetches synced block data from Block Service API
@@ -10,11 +10,14 @@ declare class BlockServiceADFFetchProvider implements ADFFetchProvider {
10
10
  * ADFWriteProvider implementation that writes synced block data to Block Service API
11
11
  */
12
12
  declare class BlockServiceADFWriteProvider implements ADFWriteProvider {
13
+ private sourceAri;
14
+ private product;
15
+ constructor(sourceAri: string, product: SyncBlockProduct);
13
16
  writeData(data: SyncBlockData): Promise<WriteSyncBlockResult>;
14
17
  deleteData(resourceId: string): Promise<DeleteSyncBlockResult>;
15
- generateResourceId(sourceId: string, localId: string): string;
18
+ generateResourceId(sourceAri: string, localId: string): string;
16
19
  }
17
- export declare const useMemoizedBlockServiceAPIProviders: () => {
20
+ export declare const useMemoizedBlockServiceAPIProviders: (sourceAri: string, product: SyncBlockProduct) => {
18
21
  fetchProvider: BlockServiceADFFetchProvider;
19
22
  writeProvider: BlockServiceADFWriteProvider;
20
23
  };
@@ -1,3 +1,4 @@
1
+ import type { RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { JSONNode } from '@atlaskit/editor-json-transformer/types';
2
3
  import { type BlockInstanceId, type ResourceId, type SyncBlockData, type SyncBlockNode, type SyncBlockProduct } from '../common/types';
3
4
  import { SyncBlockDataProvider, type ADFFetchProvider, type ADFWriteProvider, type DeleteSyncBlockResult, type SyncBlockInstance, type SyncBlockParentInfo, type SyncBlockSourceInfo, type SyncedBlockRendererProviderOptions, type WriteSyncBlockResult } from '../providers/types';
@@ -73,7 +74,7 @@ export declare class SyncBlockProvider extends SyncBlockDataProvider {
73
74
  *
74
75
  * @returns The source info
75
76
  */
76
- fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct): Promise<SyncBlockSourceInfo | undefined>;
77
+ fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): Promise<SyncBlockSourceInfo | undefined>;
77
78
  generateResourceId(sourceId: string, localId: BlockInstanceId): string;
78
79
  /**
79
80
  * Get the synced block renderer provider options
@@ -1,3 +1,4 @@
1
+ import type { RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import type { MediaProvider, ProfilecardProvider } from '@atlaskit/editor-common/provider-factory';
2
3
  import type { EmojiProvider } from '@atlaskit/emoji';
3
4
  import type { MentionProvider } from '@atlaskit/mention/types';
@@ -64,7 +65,7 @@ export declare abstract class SyncBlockDataProvider extends NodeDataProvider<Syn
64
65
  abstract writeNodesData(nodes: SyncBlockNode[], data: SyncBlockData[]): Promise<Array<WriteSyncBlockResult>>;
65
66
  abstract deleteNodesData(resourceIds: string[]): Promise<Array<DeleteSyncBlockResult>>;
66
67
  abstract getSourceId(): ResourceId;
67
- abstract fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct): Promise<SyncBlockSourceInfo | undefined>;
68
+ abstract fetchSyncBlockSourceInfo(localId: BlockInstanceId, sourceAri: string, sourceProduct: SyncBlockProduct, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): Promise<SyncBlockSourceInfo | undefined>;
68
69
  abstract getSyncedBlockRendererProviderOptions(): SyncedBlockRendererProviderOptions;
69
70
  abstract retrieveSyncBlockParentInfo(sourceAri: string, sourceProduct: SyncBlockProduct): SyncBlockParentInfo | undefined;
70
71
  /**
@@ -1,3 +1,4 @@
1
+ import { type RendererSyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
2
3
  import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
3
4
  import { type ResourceId, type SyncBlockNode } from '../common/types';
@@ -8,9 +9,11 @@ export declare class ReferenceSyncBlockStoreManager {
8
9
  private subscriptions;
9
10
  private titleSubscriptions;
10
11
  private providerFactories;
12
+ private fireAnalyticsEvent?;
11
13
  private syncBlockURLRequests;
12
14
  private isRefreshingSubscriptions;
13
- constructor(dataProvider?: SyncBlockDataProvider);
15
+ constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void);
16
+ updateFireAnalyticsEvent(fireAnalyticsEvent?: (payload: RendererSyncBlockEventPayload) => void): void;
14
17
  /**
15
18
  * Refreshes the subscriptions for all sync blocks.
16
19
  * @returns {Promise<void>}
@@ -1,3 +1,4 @@
1
+ import { type SyncBlockEventPayload } from '@atlaskit/editor-common/analytics';
1
2
  import { type Node as PMNode } from '@atlaskit/editor-prosemirror/model';
2
3
  import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
3
4
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
@@ -8,12 +9,13 @@ export type CreationCallback = () => void;
8
9
  export declare class SourceSyncBlockStoreManager {
9
10
  private dataProvider?;
10
11
  private editorView?;
12
+ private fireAnalyticsEvent?;
11
13
  private syncBlockCache;
12
14
  private confirmationCallback?;
13
15
  private confirmationTransaction?;
14
16
  private pendingResourceId?;
15
17
  private creationCallback?;
16
- constructor(dataProvider?: SyncBlockDataProvider);
18
+ constructor(dataProvider?: SyncBlockDataProvider, fireAnalyticsEvent?: (payload: SyncBlockEventPayload) => void);
17
19
  isSourceBlock(node: PMNode): boolean;
18
20
  /**
19
21
  * Add/update a sync block node to/from the local cache