@atlaskit/editor-synced-block-provider 3.5.4 → 3.6.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 (46) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/clients/confluence/fetchMediaToken.js +109 -0
  3. package/dist/cjs/clients/confluence/sourceInfo.js +77 -3
  4. package/dist/cjs/common/consts.js +7 -0
  5. package/dist/cjs/hooks/useFetchSyncBlockData.js +10 -2
  6. package/dist/cjs/index.js +14 -0
  7. package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +218 -48
  8. package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +117 -34
  9. package/dist/cjs/utils/parseResourceId.js +38 -0
  10. package/dist/es2019/clients/confluence/fetchMediaToken.js +68 -0
  11. package/dist/es2019/clients/confluence/sourceInfo.js +34 -1
  12. package/dist/es2019/common/consts.js +1 -0
  13. package/dist/es2019/hooks/useFetchSyncBlockData.js +10 -1
  14. package/dist/es2019/index.js +2 -0
  15. package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +200 -24
  16. package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +85 -15
  17. package/dist/es2019/utils/parseResourceId.js +25 -0
  18. package/dist/esm/clients/confluence/fetchMediaToken.js +102 -0
  19. package/dist/esm/clients/confluence/sourceInfo.js +76 -2
  20. package/dist/esm/common/consts.js +1 -0
  21. package/dist/esm/hooks/useFetchSyncBlockData.js +10 -2
  22. package/dist/esm/index.js +2 -0
  23. package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +218 -48
  24. package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +117 -34
  25. package/dist/esm/utils/parseResourceId.js +31 -0
  26. package/dist/types/clients/confluence/fetchMediaToken.d.ts +11 -0
  27. package/dist/types/clients/confluence/sourceInfo.d.ts +2 -0
  28. package/dist/types/common/consts.d.ts +1 -0
  29. package/dist/types/common/types.d.ts +2 -1
  30. package/dist/types/hooks/useFetchSyncBlockData.d.ts +6 -1
  31. package/dist/types/index.d.ts +2 -0
  32. package/dist/types/providers/types.d.ts +3 -2
  33. package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +8 -0
  34. package/dist/types/store-manager/sourceSyncBlockStoreManager.d.ts +4 -0
  35. package/dist/types/utils/parseResourceId.d.ts +6 -0
  36. package/dist/types-ts4.5/clients/confluence/fetchMediaToken.d.ts +11 -0
  37. package/dist/types-ts4.5/clients/confluence/sourceInfo.d.ts +2 -0
  38. package/dist/types-ts4.5/common/consts.d.ts +4 -0
  39. package/dist/types-ts4.5/common/types.d.ts +2 -1
  40. package/dist/types-ts4.5/hooks/useFetchSyncBlockData.d.ts +6 -1
  41. package/dist/types-ts4.5/index.d.ts +2 -0
  42. package/dist/types-ts4.5/providers/types.d.ts +3 -2
  43. package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +8 -0
  44. package/dist/types-ts4.5/store-manager/sourceSyncBlockStoreManager.d.ts +4 -0
  45. package/dist/types-ts4.5/utils/parseResourceId.d.ts +6 -0
  46. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 3.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`8100ae00326b4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8100ae00326b4) -
8
+ EDITOR-2850-add media ssr support for sync blocks
9
+
10
+ ### Patch Changes
11
+
12
+ - [`fff45a651440a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/fff45a651440a) -
13
+ EDITOR-1665 add experience tracking analytics for sync block save, fetch and delete
14
+ - Updated dependencies
15
+
16
+ ## 3.5.5
17
+
18
+ ### Patch Changes
19
+
20
+ - [`a36447029e3c3`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a36447029e3c3) -
21
+ Add fetchMediaToken helper function to synced block provider confluence client.
22
+
3
23
  ## 3.5.4
4
24
 
5
25
  ### Patch Changes
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.fetchMediaToken = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _monitoring = require("@atlaskit/editor-common/monitoring");
12
+ var _retry = require("../../utils/retry");
13
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
+ var COMMON_HEADERS = {
16
+ 'Content-Type': 'application/json',
17
+ Accept: 'application/json'
18
+ };
19
+ var AGG_HEADERS = {
20
+ 'X-ExperimentalApi': 'confluence-agg-beta'
21
+ };
22
+ var GRAPHQL_ENDPOINT = '/gateway/api/graphql';
23
+ var GET_CONTENT_MEDIA_SESSION_OPERATION_NAME = 'MediaUploadTokenQuery';
24
+ var GET_CONTENT_MEDIA_SESSION_QUERY = "query ".concat(GET_CONTENT_MEDIA_SESSION_OPERATION_NAME, "($contentId: ID!) {\n\tcontentMediaSession(contentId: $contentId) {\n\t\ttoken {\n\t\t\tvalue\n\t\t}\n\t\tconfiguration {\n\t\t\tclientId\n\t\t\tfileStoreUrl\n\t\t}\n\t\tcollection\n\t}\n}");
25
+ var getContentMediaSession = /*#__PURE__*/function () {
26
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(contentId) {
27
+ var bodyData, response, result;
28
+ return _regenerator.default.wrap(function _callee$(_context) {
29
+ while (1) switch (_context.prev = _context.next) {
30
+ case 0:
31
+ bodyData = {
32
+ query: GET_CONTENT_MEDIA_SESSION_QUERY,
33
+ operationName: GET_CONTENT_MEDIA_SESSION_OPERATION_NAME,
34
+ variables: {
35
+ contentId: contentId
36
+ }
37
+ };
38
+ _context.next = 3;
39
+ return (0, _retry.fetchWithRetry)(GRAPHQL_ENDPOINT, {
40
+ method: 'POST',
41
+ headers: _objectSpread(_objectSpread({}, COMMON_HEADERS), AGG_HEADERS),
42
+ body: JSON.stringify(bodyData)
43
+ });
44
+ case 3:
45
+ response = _context.sent;
46
+ if (response.ok) {
47
+ _context.next = 6;
48
+ break;
49
+ }
50
+ throw new Error("Failed to get content media session: ".concat(response.statusText));
51
+ case 6:
52
+ _context.next = 8;
53
+ return response.json();
54
+ case 8:
55
+ result = _context.sent;
56
+ return _context.abrupt("return", result);
57
+ case 10:
58
+ case "end":
59
+ return _context.stop();
60
+ }
61
+ }, _callee);
62
+ }));
63
+ return function getContentMediaSession(_x) {
64
+ return _ref.apply(this, arguments);
65
+ };
66
+ }();
67
+ var fetchMediaToken = exports.fetchMediaToken = /*#__PURE__*/function () {
68
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(contentId) {
69
+ var _response$data, _contentData$token, response, contentData, token, configuration, collection;
70
+ return _regenerator.default.wrap(function _callee2$(_context2) {
71
+ while (1) switch (_context2.prev = _context2.next) {
72
+ case 0:
73
+ _context2.prev = 0;
74
+ _context2.next = 3;
75
+ return getContentMediaSession(contentId);
76
+ case 3:
77
+ response = _context2.sent;
78
+ contentData = (_response$data = response.data) === null || _response$data === void 0 ? void 0 : _response$data.contentMediaSession;
79
+ token = contentData === null || contentData === void 0 || (_contentData$token = contentData.token) === null || _contentData$token === void 0 ? void 0 : _contentData$token.value;
80
+ configuration = contentData === null || contentData === void 0 ? void 0 : contentData.configuration;
81
+ collection = contentData === null || contentData === void 0 ? void 0 : contentData.collection;
82
+ if (!(!token || !configuration || !collection)) {
83
+ _context2.next = 10;
84
+ break;
85
+ }
86
+ throw new Error('Failed to get content media session data');
87
+ case 10:
88
+ return _context2.abrupt("return", Promise.resolve({
89
+ config: configuration,
90
+ token: token,
91
+ collectionId: collection
92
+ }));
93
+ case 13:
94
+ _context2.prev = 13;
95
+ _context2.t0 = _context2["catch"](0);
96
+ (0, _monitoring.logException)(_context2.t0, {
97
+ location: 'editor-synced-block-provider/fetchMediaToken'
98
+ });
99
+ throw new Error("Failed to get content media session: ".concat(_context2.t0));
100
+ case 17:
101
+ case "end":
102
+ return _context2.stop();
103
+ }
104
+ }, _callee2, null, [[0, 13]]);
105
+ }));
106
+ return function fetchMediaToken(_x2) {
107
+ return _ref2.apply(this, arguments);
108
+ };
109
+ }();
@@ -4,11 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.fetchConfluencePageInfo = void 0;
7
+ exports.fetchConfluencePageInfoOld = exports.fetchConfluencePageInfoNew = exports.fetchConfluencePageInfo = 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"));
11
11
  var _monitoring = require("@atlaskit/editor-common/monitoring");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
13
  var _errorHandling = require("../../utils/errorHandling");
13
14
  var _retry = require("../../utils/retry");
14
15
  var _ari = require("./ari");
@@ -71,7 +72,7 @@ var getConfluenceSourceInfo = /*#__PURE__*/function () {
71
72
  return _ref.apply(this, arguments);
72
73
  };
73
74
  }();
74
- var fetchConfluencePageInfo = exports.fetchConfluencePageInfo = /*#__PURE__*/function () {
75
+ var fetchConfluencePageInfoOld = exports.fetchConfluencePageInfoOld = /*#__PURE__*/function () {
75
76
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(pageAri, localId, fireAnalyticsEvent) {
76
77
  var _response$data, _contentData$space, _getPageIdAndTypeFrom, pageType, response, contentData, title, url, _ref3, base;
77
78
  return _regenerator.default.wrap(function _callee2$(_context2) {
@@ -119,7 +120,80 @@ var fetchConfluencePageInfo = exports.fetchConfluencePageInfo = /*#__PURE__*/fun
119
120
  }
120
121
  }, _callee2, null, [[0, 14]]);
121
122
  }));
122
- return function fetchConfluencePageInfo(_x2, _x3, _x4) {
123
+ return function fetchConfluencePageInfoOld(_x2, _x3, _x4) {
123
124
  return _ref2.apply(this, arguments);
124
125
  };
126
+ }();
127
+ 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) {
133
+ case 0:
134
+ _getPageIdAndTypeFrom2 = (0, _ari.getPageIdAndTypeFromConfluencePageAri)({
135
+ ari: pageAri
136
+ }), pageType = _getPageIdAndTypeFrom2.type;
137
+ _context3.next = 3;
138
+ return getConfluenceSourceInfo(pageAri);
139
+ case 3:
140
+ response = _context3.sent;
141
+ 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;
144
+ 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
+ if ((0, _utils.isBlogPageType)(pageType)) {
146
+ url = "".concat(base, "/spaces/").concat(contentData.space.key, "/blog/edit-v2/").concat(contentData.id);
147
+ } else if (contentData.subType === 'live') {
148
+ url = "".concat(base, "/spaces/").concat(contentData.space.key, "/pages/").concat(contentData.id);
149
+ } else {
150
+ url = "".concat(base, "/spaces/").concat(contentData.space.key, "/pages/edit-v2/").concat(contentData.id);
151
+ }
152
+ }
153
+ url = url && localId ? "".concat(url, "#block-").concat(localId) : url;
154
+ return _context3.abrupt("return", Promise.resolve({
155
+ title: title,
156
+ url: url
157
+ }));
158
+ case 10:
159
+ case "end":
160
+ return _context3.stop();
161
+ }
162
+ }, _callee3);
163
+ }));
164
+ return function fetchConfluencePageInfoNew(_x5, _x6) {
165
+ return _ref4.apply(this, arguments);
166
+ };
167
+ }();
168
+ 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) {
172
+ case 0:
173
+ if (!(0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
174
+ _context4.next = 6;
175
+ break;
176
+ }
177
+ _context4.next = 3;
178
+ return fetchConfluencePageInfoNew(pageAri, localId);
179
+ case 3:
180
+ _context4.t0 = _context4.sent;
181
+ _context4.next = 9;
182
+ break;
183
+ case 6:
184
+ _context4.next = 8;
185
+ return fetchConfluencePageInfoOld(pageAri, localId, fireAnalyticsEvent);
186
+ case 8:
187
+ _context4.t0 = _context4.sent;
188
+ case 9:
189
+ return _context4.abrupt("return", _context4.t0);
190
+ case 10:
191
+ case "end":
192
+ return _context4.stop();
193
+ }
194
+ }, _callee4);
195
+ }));
196
+ return function fetchConfluencePageInfo(_x7, _x8, _x9) {
197
+ return _ref6.apply(this, arguments);
198
+ };
125
199
  }();
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SYNC_BLOCK_PRODUCTS = void 0;
7
+ var SYNC_BLOCK_PRODUCTS = exports.SYNC_BLOCK_PRODUCTS = ['confluence-page', 'jira-work-item'];
@@ -11,6 +11,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
12
  var _react = require("react");
13
13
  var _monitoring = require("@atlaskit/editor-common/monitoring");
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
15
  var _types = require("../common/types");
15
16
  var _errorHandling = require("../utils/errorHandling");
16
17
  var _utils = require("../utils/utils");
@@ -41,7 +42,7 @@ var useFetchSyncBlockData = exports.useFetchSyncBlockData = function useFetchSyn
41
42
  isLoading = _useState2$.isLoading,
42
43
  setFetchState = _useState2[1];
43
44
  var reloadData = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
44
- var syncBlockNode;
45
+ var syncBlockNode, _manager$referenceMan2;
45
46
  return _regenerator.default.wrap(function _callee$(_context) {
46
47
  while (1) switch (_context.prev = _context.next) {
47
48
  case 0:
@@ -77,7 +78,13 @@ var useFetchSyncBlockData = exports.useFetchSyncBlockData = function useFetchSyn
77
78
  (0, _monitoring.logException)(_context.t0, {
78
79
  location: 'editor-synced-block-provider/useFetchSyncBlockData'
79
80
  });
80
- fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent((0, _errorHandling.fetchErrorPayload)(_context.t0.message));
81
+ if ((0, _platformFeatureFlags.fg)('platform_synced_block_dogfooding')) {
82
+ manager === null || manager === void 0 || (_manager$referenceMan2 = manager.referenceManager) === null || _manager$referenceMan2 === void 0 || (_manager$referenceMan2 = _manager$referenceMan2.fetchExperience) === null || _manager$referenceMan2 === void 0 || _manager$referenceMan2.failure({
83
+ reason: _context.t0.message
84
+ });
85
+ } else {
86
+ fireAnalyticsEvent === null || fireAnalyticsEvent === void 0 || fireAnalyticsEvent((0, _errorHandling.fetchErrorPayload)(_context.t0.message));
87
+ }
81
88
 
82
89
  // Set error state if fetching fails
83
90
  setFetchState({
@@ -113,6 +120,7 @@ var useFetchSyncBlockData = exports.useFetchSyncBlockData = function useFetchSyn
113
120
  }, [localId, manager.referenceManager, resourceId]);
114
121
  return {
115
122
  isLoading: isLoading,
123
+ ssrProviders: resourceId ? manager.referenceManager.getSSRProviders(resourceId) : null,
116
124
  providerFactory: manager.referenceManager.getProviderFactory(resourceId || ''),
117
125
  reloadData: reloadData,
118
126
  syncBlockInstance: syncBlockInstance
package/dist/cjs/index.js CHANGED
@@ -57,6 +57,12 @@ Object.defineProperty(exports, "fetchErrorPayload", {
57
57
  return _errorHandling.fetchErrorPayload;
58
58
  }
59
59
  });
60
+ Object.defineProperty(exports, "fetchMediaToken", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _fetchMediaToken.fetchMediaToken;
64
+ }
65
+ });
60
66
  Object.defineProperty(exports, "fetchReferences", {
61
67
  enumerable: true,
62
68
  get: function get() {
@@ -111,6 +117,12 @@ Object.defineProperty(exports, "getPageIdAndTypeFromConfluencePageAri", {
111
117
  return _ari2.getPageIdAndTypeFromConfluencePageAri;
112
118
  }
113
119
  });
120
+ Object.defineProperty(exports, "parseResourceId", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _parseResourceId.parseResourceId;
124
+ }
125
+ });
114
126
  Object.defineProperty(exports, "rebaseTransaction", {
115
127
  enumerable: true,
116
128
  get: function get() {
@@ -172,11 +184,13 @@ var _useFetchSyncBlockTitle = require("./hooks/useFetchSyncBlockTitle");
172
184
  var _useHandleContentChanges = require("./hooks/useHandleContentChanges");
173
185
  var _ari = require("./clients/block-service/ari");
174
186
  var _ari2 = require("./clients/confluence/ari");
187
+ var _fetchMediaToken = require("./clients/confluence/fetchMediaToken");
175
188
  var _ari3 = require("./clients/jira/ari");
176
189
  var _blockServiceAPI = require("./providers/block-service/blockServiceAPI");
177
190
  var _sourceInfo = require("./clients/confluence/sourceInfo");
178
191
  var _syncBlockProvider = require("./providers/syncBlockProvider");
179
192
  var _syncBlockStoreManager = require("./store-manager/syncBlockStoreManager");
180
193
  var _resolveSyncBlockInstance = require("./utils/resolveSyncBlockInstance");
194
+ var _parseResourceId = require("./utils/parseResourceId");
181
195
  var _utils = require("./utils/utils");
182
196
  var _errorHandling = require("./utils/errorHandling");