@atlaskit/editor-synced-block-provider 4.0.1 → 4.1.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 (28) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/clients/block-service/blockService.js +35 -17
  3. package/dist/cjs/common/types.js +2 -0
  4. package/dist/cjs/providers/block-service/blockServiceAPI.js +16 -1
  5. package/dist/cjs/store-manager/referenceSyncBlockStoreManager.js +209 -811
  6. package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +3 -6
  7. package/dist/cjs/store-manager/syncBlockSubscriptionManager.js +180 -17
  8. package/dist/es2019/clients/block-service/blockService.js +16 -3
  9. package/dist/es2019/common/types.js +2 -0
  10. package/dist/es2019/providers/block-service/blockServiceAPI.js +12 -1
  11. package/dist/es2019/store-manager/referenceSyncBlockStoreManager.js +78 -595
  12. package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +3 -6
  13. package/dist/es2019/store-manager/syncBlockSubscriptionManager.js +157 -10
  14. package/dist/esm/clients/block-service/blockService.js +34 -16
  15. package/dist/esm/common/types.js +2 -0
  16. package/dist/esm/providers/block-service/blockServiceAPI.js +17 -2
  17. package/dist/esm/store-manager/referenceSyncBlockStoreManager.js +210 -812
  18. package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +3 -6
  19. package/dist/esm/store-manager/syncBlockSubscriptionManager.js +180 -17
  20. package/dist/types/clients/block-service/blockService.d.ts +4 -1
  21. package/dist/types/common/types.d.ts +2 -1
  22. package/dist/types/store-manager/referenceSyncBlockStoreManager.d.ts +4 -49
  23. package/dist/types/store-manager/syncBlockSubscriptionManager.d.ts +25 -6
  24. package/dist/types-ts4.5/clients/block-service/blockService.d.ts +4 -1
  25. package/dist/types-ts4.5/common/types.d.ts +2 -1
  26. package/dist/types-ts4.5/store-manager/referenceSyncBlockStoreManager.d.ts +4 -49
  27. package/dist/types-ts4.5/store-manager/syncBlockSubscriptionManager.d.ts +25 -6
  28. package/package.json +4 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/editor-synced-block-provider
2
2
 
3
+ ## 4.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`7428d9bf3aa13`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/7428d9bf3aa13) -
8
+ Clean up platform_synced_block_patch_5 feature gate
9
+ - Updated dependencies
10
+
11
+ ## 4.1.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [`beb2f030213b1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/beb2f030213b1) -
16
+ EDITOR-5735 Make SSR bulk request configurable
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+
3
22
  ## 4.0.1
4
23
 
5
24
  ### Patch Changes
@@ -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.updateSyncedBlocks = exports.updateSyncedBlock = exports.updateReferenceSyncedBlockOnDocument = exports.isBlockContentResponse = exports.getSyncedBlockContent = exports.getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocks = exports.deleteSyncedBlock = exports.createSyncedBlock = exports.batchRetrieveSyncedBlocks = exports.BlockError = void 0;
7
+ exports.updateSyncedBlocks = exports.updateSyncedBlock = exports.updateReferenceSyncedBlockOnDocument = exports.isBlockContentResponse = exports.getSyncedBlockContent = exports.getReferenceSyncedBlocksByBlockAri = exports.getReferenceSyncedBlocks = exports.deleteSyncedBlock = exports.createSyncedBlock = exports.batchRetrieveSyncedBlocks = exports.BlockTimeoutError = 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"));
@@ -225,6 +225,17 @@ var BlockError = exports.BlockError = /*#__PURE__*/function (_Error) {
225
225
  (0, _inherits2.default)(BlockError, _Error);
226
226
  return (0, _createClass2.default)(BlockError);
227
227
  }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
228
+ var BlockTimeoutError = exports.BlockTimeoutError = /*#__PURE__*/function (_Error2) {
229
+ function BlockTimeoutError() {
230
+ var _this2;
231
+ (0, _classCallCheck2.default)(this, BlockTimeoutError);
232
+ _this2 = _callSuper(this, BlockTimeoutError, ['Block request timed out']);
233
+ _this2.name = 'BlockTimeoutError';
234
+ return _this2;
235
+ }
236
+ (0, _inherits2.default)(BlockTimeoutError, _Error2);
237
+ return (0, _createClass2.default)(BlockTimeoutError);
238
+ }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
228
239
  var getSyncedBlockContent = exports.getSyncedBlockContent = /*#__PURE__*/function () {
229
240
  var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref2) {
230
241
  var _result$data;
@@ -293,12 +304,12 @@ var getSyncedBlockContent = exports.getSyncedBlockContent = /*#__PURE__*/functio
293
304
  */
294
305
  var batchRetrieveSyncedBlocks = exports.batchRetrieveSyncedBlocks = /*#__PURE__*/function () {
295
306
  var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref4) {
296
- var _result$data2;
297
- var blockIdentifiers, blockAris, bodyData, url, response, result, graphqlResponse;
307
+ var _config$timeoutMs, _result$data2;
308
+ var blockIdentifiers, config, blockAris, bodyData, url, fetchPromise, timeoutMs, response, result, graphqlResponse;
298
309
  return _regenerator.default.wrap(function _callee3$(_context3) {
299
310
  while (1) switch (_context3.prev = _context3.next) {
300
311
  case 0:
301
- blockIdentifiers = _ref4.blockIdentifiers;
312
+ blockIdentifiers = _ref4.blockIdentifiers, config = _ref4.config;
302
313
  blockAris = blockIdentifiers.map(function (blockIdentifier) {
303
314
  return blockIdentifier.blockAri;
304
315
  });
@@ -306,45 +317,52 @@ var batchRetrieveSyncedBlocks = exports.batchRetrieveSyncedBlocks = /*#__PURE__*
306
317
  query: buildBatchRetrieveBlocksQuery(blockAris),
307
318
  operationName: BATCH_RETRIEVE_BLOCKS_OPERATION_NAME
308
319
  };
309
- url = "".concat(GRAPHQL_ENDPOINT, "?operation=editorSyncedBlockBatchRetrieveBlocks");
310
- _context3.next = 6;
311
- return (0, _retry.fetchWithRetry)(url, {
320
+ url = "".concat(GRAPHQL_ENDPOINT, "?operation=editorSyncedBlockBatchRetrieveBlocks"); // undefined or 0 or negative means no timeout,
321
+ // We don't enforce a minimum timeout for simplicity
322
+ fetchPromise = (0, _retry.fetchWithRetry)(url, {
312
323
  method: 'POST',
313
324
  headers: COMMON_HEADERS,
314
325
  body: JSON.stringify(bodyData)
315
326
  });
316
- case 6:
327
+ timeoutMs = (_config$timeoutMs = config === null || config === void 0 ? void 0 : config.timeoutMs) !== null && _config$timeoutMs !== void 0 ? _config$timeoutMs : 0;
328
+ _context3.next = 8;
329
+ return timeoutMs > 0 ? Promise.race([fetchPromise, new Promise(function (_, reject) {
330
+ return setTimeout(function () {
331
+ return reject(new BlockTimeoutError());
332
+ }, timeoutMs);
333
+ })]) : fetchPromise;
334
+ case 8:
317
335
  response = _context3.sent;
318
336
  if (response.ok) {
319
- _context3.next = 9;
337
+ _context3.next = 11;
320
338
  break;
321
339
  }
322
340
  throw new BlockError(response.status);
323
- case 9:
324
- _context3.next = 11;
325
- return response.json();
326
341
  case 11:
342
+ _context3.next = 13;
343
+ return response.json();
344
+ case 13:
327
345
  result = _context3.sent;
328
346
  if (!(result.errors && result.errors.length > 0)) {
329
- _context3.next = 14;
347
+ _context3.next = 16;
330
348
  break;
331
349
  }
332
350
  throw new Error(result.errors.map(function (e) {
333
351
  return e.message;
334
352
  }).join(', '));
335
- case 14:
353
+ case 16:
336
354
  if ((_result$data2 = result.data) !== null && _result$data2 !== void 0 && _result$data2.blockService_batchRetrieveBlocks) {
337
- _context3.next = 16;
355
+ _context3.next = 18;
338
356
  break;
339
357
  }
340
358
  throw new Error('No data returned from GraphQL query');
341
- case 16:
359
+ case 18:
342
360
  graphqlResponse = result.data.blockService_batchRetrieveBlocks;
343
361
  return _context3.abrupt("return", {
344
362
  success: graphqlResponse.success,
345
363
  error: graphqlResponse.error
346
364
  });
347
- case 18:
365
+ case 20:
348
366
  case "end":
349
367
  return _context3.stop();
350
368
  }
@@ -17,5 +17,7 @@ var SyncBlockError = exports.SyncBlockError = /*#__PURE__*/function (SyncBlockEr
17
17
  // content is not a valid JSON
18
18
  SyncBlockError["Offline"] = "offline";
19
19
  SyncBlockError["Unpublished"] = "unpublished";
20
+ // request was aborted, typically due to client timeout
21
+ SyncBlockError["Aborted"] = "aborted";
20
22
  return SyncBlockError;
21
23
  }({});
@@ -12,6 +12,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
14
  var _react = require("react");
15
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
15
16
  var _ari = require("../../clients/block-service/ari");
16
17
  var _blockService = require("../../clients/block-service/blockService");
17
18
  var _blockSubscription = require("../../clients/block-service/blockSubscription");
@@ -392,6 +393,20 @@ var _batchFetchData = exports.batchFetchData = /*#__PURE__*/function () {
392
393
  case 61:
393
394
  _context2.prev = 61;
394
395
  _context2.t2 = _context2["catch"](5);
396
+ if (!(_context2.t2 instanceof _blockService.BlockTimeoutError && (0, _expValEquals.expValEquals)('platform_editor_sync_block_ssr_config', 'isEnabled', true))) {
397
+ _context2.next = 65;
398
+ break;
399
+ }
400
+ return _context2.abrupt("return", blockNodeIdentifiers.map(function (blockNodeIdentifier) {
401
+ return {
402
+ error: {
403
+ type: _types.SyncBlockError.Aborted,
404
+ reason: _context2.t2.message
405
+ },
406
+ resourceId: blockNodeIdentifier.resourceId
407
+ };
408
+ }));
409
+ case 65:
395
410
  return _context2.abrupt("return", blockNodeIdentifiers.map(function (blockNodeIdentifier) {
396
411
  return {
397
412
  error: {
@@ -401,7 +416,7 @@ var _batchFetchData = exports.batchFetchData = /*#__PURE__*/function () {
401
416
  resourceId: blockNodeIdentifier.resourceId
402
417
  };
403
418
  }));
404
- case 64:
419
+ case 66:
405
420
  case "end":
406
421
  return _context2.stop();
407
422
  }