@atlaskit/editor-synced-block-provider 3.6.0 → 3.7.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.
Files changed (53) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/clients/block-service/ari.js +12 -1
  3. package/dist/cjs/clients/block-service/blockService.js +35 -2
  4. package/dist/cjs/clients/confluence/sourceInfo.js +109 -52
  5. package/dist/cjs/providers/block-service/blockServiceAPI.js +195 -125
  6. package/dist/cjs/providers/syncBlockProvider.js +83 -14
  7. package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +60 -17
  8. package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +17 -0
  9. package/dist/cjs/store-manager/syncBlockStoreManager.js +121 -0
  10. package/dist/cjs/utils/errorHandling.js +4 -1
  11. package/dist/es2019/clients/block-service/ari.js +11 -0
  12. package/dist/es2019/clients/block-service/blockService.js +12 -1
  13. package/dist/es2019/clients/confluence/sourceInfo.js +64 -29
  14. package/dist/es2019/providers/block-service/blockServiceAPI.js +45 -2
  15. package/dist/es2019/providers/syncBlockProvider.js +37 -5
  16. package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +61 -18
  17. package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +16 -1
  18. package/dist/es2019/store-manager/syncBlockStoreManager.js +64 -0
  19. package/dist/es2019/utils/errorHandling.js +2 -1
  20. package/dist/esm/clients/block-service/ari.js +11 -0
  21. package/dist/esm/clients/block-service/blockService.js +34 -1
  22. package/dist/esm/clients/confluence/sourceInfo.js +109 -52
  23. package/dist/esm/providers/block-service/blockServiceAPI.js +195 -125
  24. package/dist/esm/providers/syncBlockProvider.js +81 -12
  25. package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +60 -17
  26. package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +18 -1
  27. package/dist/esm/store-manager/syncBlockStoreManager.js +121 -0
  28. package/dist/esm/utils/errorHandling.js +3 -0
  29. package/dist/types/clients/block-service/ari.d.ts +1 -0
  30. package/dist/types/clients/block-service/blockService.d.ts +15 -5
  31. package/dist/types/clients/confluence/sourceInfo.d.ts +2 -2
  32. package/dist/types/common/types.d.ts +25 -0
  33. package/dist/types/index.d.ts +2 -2
  34. package/dist/types/providers/block-service/blockServiceAPI.d.ts +3 -2
  35. package/dist/types/providers/syncBlockProvider.d.ts +3 -2
  36. package/dist/types/providers/types.d.ts +16 -3
  37. package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +3 -2
  38. package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +3 -2
  39. package/dist/types/store-manager/syncBlockStoreManager.d.ts +4 -0
  40. package/dist/types/utils/errorHandling.d.ts +1 -0
  41. package/dist/types-ts4.5/clients/block-service/ari.d.ts +1 -0
  42. package/dist/types-ts4.5/clients/block-service/blockService.d.ts +15 -5
  43. package/dist/types-ts4.5/clients/confluence/sourceInfo.d.ts +2 -2
  44. package/dist/types-ts4.5/common/types.d.ts +25 -0
  45. package/dist/types-ts4.5/index.d.ts +2 -2
  46. package/dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts +3 -2
  47. package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +3 -2
  48. package/dist/types-ts4.5/providers/types.d.ts +16 -3
  49. package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +3 -2
  50. package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +3 -2
  51. package/dist/types-ts4.5/store-manager/syncBlockStoreManager.d.ts +4 -0
  52. package/dist/types-ts4.5/utils/errorHandling.d.ts +1 -0
  53. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 3.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`4490bcc4595c4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/4490bcc4595c4) -
8
+ Render some smart links loading states in SSR to match Editor's renderer
9
+
10
+ ## 3.6.1
11
+
12
+ ### Patch Changes
13
+
14
+ - [`f0124a523d8f1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f0124a523d8f1) -
15
+ [ux] [EDITOR-2845] Implement synced location for source and reference sync block
16
+ - Updated dependencies
17
+
3
18
  ## 3.6.0
4
19
 
5
20
  ### Minor Changes
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getLocalIdFromBlockResourceId = exports.generateBlockAriFromReference = exports.generateBlockAri = void 0;
6
+ exports.getProductFromSourceAri = exports.getLocalIdFromBlockResourceId = exports.generateBlockAriFromReference = exports.generateBlockAri = void 0;
7
7
  /* eslint-disable require-unicode-regexp */
8
8
 
9
9
  /**
@@ -45,4 +45,15 @@ var getLocalIdFromBlockResourceId = exports.getLocalIdFromBlockResourceId = func
45
45
  return match[1];
46
46
  }
47
47
  throw new Error("Invalid page ARI: ".concat(ari));
48
+ };
49
+ var getProductFromSourceAri = exports.getProductFromSourceAri = function getProductFromSourceAri(ari) {
50
+ var jiraMatch = ari === null || ari === void 0 ? void 0 : ari.search(/ari:cloud:jira:.*/);
51
+ if (jiraMatch !== -1) {
52
+ return 'jira-work-item';
53
+ }
54
+ var confluenceMatch = ari === null || ari === void 0 ? void 0 : ari.search(/ari:cloud:confluence:.*/);
55
+ if (confluenceMatch !== -1) {
56
+ return 'confluence-page';
57
+ }
58
+ return undefined;
48
59
  };
@@ -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.updateSyncedBlock = exports.updateReferenceSyncedBlockOnDocument = exports.isBlockContentResponse = exports.getSyncedBlockContent = exports.getReferenceSyncedBlocks = exports.deleteSyncedBlock = exports.createSyncedBlock = exports.batchRetrieveSyncedBlocks = exports.BlockError = void 0;
7
+ exports.updateSyncedBlock = exports.updateReferenceSyncedBlockOnDocument = exports.isBlockContentResponse = exports.getSyncedBlockContent = exports.getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocks = exports.deleteSyncedBlock = exports.createSyncedBlock = exports.batchRetrieveSyncedBlocks = exports.BlockError = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
@@ -173,7 +173,6 @@ var getSyncedBlockContent = exports.getSyncedBlockContent = /*#__PURE__*/functio
173
173
  return _ref3.apply(this, arguments);
174
174
  };
175
175
  }();
176
- ;
177
176
 
178
177
  /**
179
178
  * Batch retrieves multiple synced blocks by their ARIs.
@@ -370,4 +369,38 @@ var updateReferenceSyncedBlockOnDocument = exports.updateReferenceSyncedBlockOnD
370
369
  return function updateReferenceSyncedBlockOnDocument(_x7) {
371
370
  return _ref11.apply(this, arguments);
372
371
  };
372
+ }();
373
+ var getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocksByBlockAri = /*#__PURE__*/function () {
374
+ var _ref13 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(_ref12) {
375
+ var blockAri, response;
376
+ return _regenerator.default.wrap(function _callee8$(_context8) {
377
+ while (1) switch (_context8.prev = _context8.next) {
378
+ case 0:
379
+ blockAri = _ref12.blockAri;
380
+ _context8.next = 3;
381
+ return (0, _retry.fetchWithRetry)("".concat(BLOCK_SERVICE_API_URL, "/reference/batch-retrieve/").concat(encodeURIComponent(blockAri)), {
382
+ method: 'GET',
383
+ headers: COMMON_HEADERS
384
+ });
385
+ case 3:
386
+ response = _context8.sent;
387
+ if (response.ok) {
388
+ _context8.next = 6;
389
+ break;
390
+ }
391
+ throw new BlockError(response.status);
392
+ case 6:
393
+ _context8.next = 8;
394
+ return response.json();
395
+ case 8:
396
+ return _context8.abrupt("return", _context8.sent);
397
+ case 9:
398
+ case "end":
399
+ return _context8.stop();
400
+ }
401
+ }, _callee8);
402
+ }));
403
+ return function getReferenceSyncedBlocksByBlockAri(_x8) {
404
+ return _ref13.apply(this, arguments);
405
+ };
373
406
  }();
@@ -72,23 +72,69 @@ var getConfluenceSourceInfo = /*#__PURE__*/function () {
72
72
  return _ref.apply(this, arguments);
73
73
  };
74
74
  }();
75
- var fetchConfluencePageInfoOld = exports.fetchConfluencePageInfoOld = /*#__PURE__*/function () {
76
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(pageAri, localId, fireAnalyticsEvent) {
77
- var _response$data, _contentData$space, _getPageIdAndTypeFrom, pageType, response, contentData, title, url, _ref3, base;
75
+ var resolveNoAccessPageInfo = /*#__PURE__*/function () {
76
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(ari) {
77
+ var response, _payload$data, _payload$data2, payload, url, title;
78
78
  return _regenerator.default.wrap(function _callee2$(_context2) {
79
79
  while (1) switch (_context2.prev = _context2.next) {
80
80
  case 0:
81
- _context2.prev = 0;
81
+ _context2.next = 2;
82
+ return fetch('/gateway/api/object-resolver/resolve/ari', {
83
+ method: 'POST',
84
+ headers: {
85
+ 'Content-Type': 'application/json',
86
+ Accept: 'application/json'
87
+ },
88
+ body: JSON.stringify({
89
+ ari: ari
90
+ })
91
+ });
92
+ case 2:
93
+ response = _context2.sent;
94
+ if (!response.ok) {
95
+ _context2.next = 12;
96
+ break;
97
+ }
98
+ _context2.next = 6;
99
+ return response.json();
100
+ case 6:
101
+ payload = _context2.sent;
102
+ url = payload === null || payload === void 0 || (_payload$data = payload.data) === null || _payload$data === void 0 ? void 0 : _payload$data.url;
103
+ title = payload === null || payload === void 0 || (_payload$data2 = payload.data) === null || _payload$data2 === void 0 ? void 0 : _payload$data2.name;
104
+ return _context2.abrupt("return", {
105
+ url: typeof url === 'string' ? url : undefined,
106
+ title: typeof title === 'string' ? title : undefined,
107
+ sourceAri: ari
108
+ });
109
+ case 12:
110
+ throw new Error("Failed to resolve ari: ".concat(response.statusText));
111
+ case 13:
112
+ case "end":
113
+ return _context2.stop();
114
+ }
115
+ }, _callee2);
116
+ }));
117
+ return function resolveNoAccessPageInfo(_x2) {
118
+ return _ref2.apply(this, arguments);
119
+ };
120
+ }();
121
+ var fetchConfluencePageInfoOld = exports.fetchConfluencePageInfoOld = /*#__PURE__*/function () {
122
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(pageAri, localId, fireAnalyticsEvent) {
123
+ var _response$data, _contentData$space, _getPageIdAndTypeFrom, pageType, response, contentData, title, url, _ref4, base;
124
+ return _regenerator.default.wrap(function _callee3$(_context3) {
125
+ while (1) switch (_context3.prev = _context3.next) {
126
+ case 0:
127
+ _context3.prev = 0;
82
128
  _getPageIdAndTypeFrom = (0, _ari.getPageIdAndTypeFromConfluencePageAri)({
83
129
  ari: pageAri
84
130
  }), pageType = _getPageIdAndTypeFrom.type;
85
- _context2.next = 4;
131
+ _context3.next = 4;
86
132
  return getConfluenceSourceInfo(pageAri);
87
133
  case 4:
88
- response = _context2.sent;
134
+ response = _context3.sent;
89
135
  contentData = (_response$data = response.data) === null || _response$data === void 0 || (_response$data = _response$data.content) === null || _response$data === void 0 || (_response$data = _response$data.nodes) === null || _response$data === void 0 ? void 0 : _response$data[0];
90
136
  title = contentData === null || contentData === void 0 ? void 0 : contentData.title;
91
- _ref3 = (contentData === null || contentData === void 0 ? void 0 : contentData.links) || {}, base = _ref3.base;
137
+ _ref4 = (contentData === null || contentData === void 0 ? void 0 : contentData.links) || {}, base = _ref4.base;
92
138
  if (base && contentData !== null && contentData !== void 0 && (_contentData$space = contentData.space) !== null && _contentData$space !== void 0 && _contentData$space.key && contentData !== null && contentData !== void 0 && contentData.id) {
93
139
  if ((0, _utils.isBlogPageType)(pageType)) {
94
140
  url = "".concat(base, "/spaces/").concat(contentData.space.key, "/blog/edit-v2/").concat(contentData.id);
@@ -102,98 +148,109 @@ var fetchConfluencePageInfoOld = exports.fetchConfluencePageInfoOld = /*#__PURE_
102
148
  if (!title || !url) {
103
149
  fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent((0, _errorHandling.getSourceInfoErrorPayload)('Failed to get confluence page source info'));
104
150
  }
105
- return _context2.abrupt("return", Promise.resolve({
151
+ return _context3.abrupt("return", Promise.resolve({
106
152
  title: title,
107
- url: url
153
+ url: url,
154
+ sourceAri: pageAri
108
155
  }));
109
156
  case 14:
110
- _context2.prev = 14;
111
- _context2.t0 = _context2["catch"](0);
112
- (0, _monitoring.logException)(_context2.t0, {
157
+ _context3.prev = 14;
158
+ _context3.t0 = _context3["catch"](0);
159
+ (0, _monitoring.logException)(_context3.t0, {
113
160
  location: 'editor-synced-block-provider/sourceInfo'
114
161
  });
115
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent((0, _errorHandling.getSourceInfoErrorPayload)(_context2.t0.message));
116
- return _context2.abrupt("return", Promise.resolve(undefined));
162
+ fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent((0, _errorHandling.getSourceInfoErrorPayload)(_context3.t0.message));
163
+ return _context3.abrupt("return", Promise.resolve(undefined));
117
164
  case 19:
118
165
  case "end":
119
- return _context2.stop();
166
+ return _context3.stop();
120
167
  }
121
- }, _callee2, null, [[0, 14]]);
168
+ }, _callee3, null, [[0, 14]]);
122
169
  }));
123
- return function fetchConfluencePageInfoOld(_x2, _x3, _x4) {
124
- return _ref2.apply(this, arguments);
170
+ return function fetchConfluencePageInfoOld(_x3, _x4, _x5) {
171
+ return _ref3.apply(this, arguments);
125
172
  };
126
173
  }();
127
174
  var fetchConfluencePageInfoNew = exports.fetchConfluencePageInfoNew = /*#__PURE__*/function () {
128
- var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(pageAri, localId) {
129
- var _response$data2, _contentData$space2;
130
- var _getPageIdAndTypeFrom2, pageType, response, contentData, title, url, _ref5, base;
131
- return _regenerator.default.wrap(function _callee3$(_context3) {
132
- while (1) switch (_context3.prev = _context3.next) {
175
+ var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(pageAri, hasAccess, urlType, localId) {
176
+ var _response$data2, _contentData$space2, _getPageIdAndTypeFrom2, pageType, response, contentData, _ref6, title, subType, url, _ref7, base;
177
+ return _regenerator.default.wrap(function _callee4$(_context4) {
178
+ while (1) switch (_context4.prev = _context4.next) {
133
179
  case 0:
180
+ if (!hasAccess) {
181
+ _context4.next = 13;
182
+ break;
183
+ }
134
184
  _getPageIdAndTypeFrom2 = (0, _ari.getPageIdAndTypeFromConfluencePageAri)({
135
185
  ari: pageAri
136
186
  }), pageType = _getPageIdAndTypeFrom2.type;
137
- _context3.next = 3;
187
+ _context4.next = 4;
138
188
  return getConfluenceSourceInfo(pageAri);
139
- case 3:
140
- response = _context3.sent;
189
+ case 4:
190
+ response = _context4.sent;
141
191
  contentData = (_response$data2 = response.data) === null || _response$data2 === void 0 || (_response$data2 = _response$data2.content) === null || _response$data2 === void 0 || (_response$data2 = _response$data2.nodes) === null || _response$data2 === void 0 ? void 0 : _response$data2[0];
142
- title = contentData === null || contentData === void 0 ? void 0 : contentData.title;
143
- _ref5 = (contentData === null || contentData === void 0 ? void 0 : contentData.links) || {}, base = _ref5.base;
192
+ _ref6 = contentData || {}, title = _ref6.title, subType = _ref6.subType;
193
+ _ref7 = (contentData === null || contentData === void 0 ? void 0 : contentData.links) || {}, base = _ref7.base;
144
194
  if (base && contentData !== null && contentData !== void 0 && (_contentData$space2 = contentData.space) !== null && _contentData$space2 !== void 0 && _contentData$space2.key && contentData !== null && contentData !== void 0 && contentData.id) {
145
195
  if ((0, _utils.isBlogPageType)(pageType)) {
146
- url = "".concat(base, "/spaces/").concat(contentData.space.key, "/blog/edit-v2/").concat(contentData.id);
196
+ url = "".concat(base, "/spaces/").concat(contentData.space.key, "/blog").concat(urlType === 'edit' ? '/edit-v2' : '', "/").concat(contentData.id);
147
197
  } else if (contentData.subType === 'live') {
148
198
  url = "".concat(base, "/spaces/").concat(contentData.space.key, "/pages/").concat(contentData.id);
149
199
  } else {
150
- url = "".concat(base, "/spaces/").concat(contentData.space.key, "/pages/edit-v2/").concat(contentData.id);
200
+ url = "".concat(base, "/spaces/").concat(contentData.space.key, "/pages").concat(urlType === 'edit' ? '/edit-v2' : '', "/").concat(contentData.id);
151
201
  }
152
202
  }
153
203
  url = url && localId ? "".concat(url, "#block-").concat(localId) : url;
154
- return _context3.abrupt("return", Promise.resolve({
204
+ return _context4.abrupt("return", Promise.resolve({
155
205
  title: title,
156
- url: url
206
+ url: url,
207
+ sourceAri: pageAri,
208
+ subType: subType
157
209
  }));
158
- case 10:
210
+ case 13:
211
+ _context4.next = 15;
212
+ return resolveNoAccessPageInfo(pageAri);
213
+ case 15:
214
+ return _context4.abrupt("return", _context4.sent);
215
+ case 16:
159
216
  case "end":
160
- return _context3.stop();
217
+ return _context4.stop();
161
218
  }
162
- }, _callee3);
219
+ }, _callee4);
163
220
  }));
164
- return function fetchConfluencePageInfoNew(_x5, _x6) {
165
- return _ref4.apply(this, arguments);
221
+ return function fetchConfluencePageInfoNew(_x6, _x7, _x8, _x9) {
222
+ return _ref5.apply(this, arguments);
166
223
  };
167
224
  }();
168
225
  var fetchConfluencePageInfo = exports.fetchConfluencePageInfo = /*#__PURE__*/function () {
169
- var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(pageAri, localId, fireAnalyticsEvent) {
170
- return _regenerator.default.wrap(function _callee4$(_context4) {
171
- while (1) switch (_context4.prev = _context4.next) {
226
+ var _ref8 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(pageAri, hasAccess, urlType, localId, fireAnalyticsEvent) {
227
+ return _regenerator.default.wrap(function _callee5$(_context5) {
228
+ while (1) switch (_context5.prev = _context5.next) {
172
229
  case 0:
173
230
  if (!(0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
174
- _context4.next = 6;
231
+ _context5.next = 6;
175
232
  break;
176
233
  }
177
- _context4.next = 3;
178
- return fetchConfluencePageInfoNew(pageAri, localId);
234
+ _context5.next = 3;
235
+ return fetchConfluencePageInfoNew(pageAri, hasAccess, urlType, localId);
179
236
  case 3:
180
- _context4.t0 = _context4.sent;
181
- _context4.next = 9;
237
+ _context5.t0 = _context5.sent;
238
+ _context5.next = 9;
182
239
  break;
183
240
  case 6:
184
- _context4.next = 8;
241
+ _context5.next = 8;
185
242
  return fetchConfluencePageInfoOld(pageAri, localId, fireAnalyticsEvent);
186
243
  case 8:
187
- _context4.t0 = _context4.sent;
244
+ _context5.t0 = _context5.sent;
188
245
  case 9:
189
- return _context4.abrupt("return", _context4.t0);
246
+ return _context5.abrupt("return", _context5.t0);
190
247
  case 10:
191
248
  case "end":
192
- return _context4.stop();
249
+ return _context5.stop();
193
250
  }
194
- }, _callee4);
251
+ }, _callee5);
195
252
  }));
196
- return function fetchConfluencePageInfo(_x7, _x8, _x9) {
197
- return _ref6.apply(this, arguments);
253
+ return function fetchConfluencePageInfo(_x0, _x1, _x10, _x11, _x12) {
254
+ return _ref8.apply(this, arguments);
198
255
  };
199
256
  }();