@atlaskit/editor-synced-block-provider 3.1.0 → 3.2.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 (55) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/clients/block-service/ari.js +13 -16
  3. package/dist/cjs/clients/block-service/blockService.js +37 -14
  4. package/dist/cjs/clients/confluence/ari.js +7 -40
  5. package/dist/cjs/clients/confluence/sourceInfo.js +3 -1
  6. package/dist/cjs/clients/jira/ari.js +5 -2
  7. package/dist/cjs/index.js +2 -27
  8. package/dist/cjs/providers/block-service/blockServiceAPI.js +71 -28
  9. package/dist/cjs/providers/syncBlockProvider.js +57 -38
  10. package/dist/cjs/store-manager/sourceSyncBlockStoreManager.js +5 -8
  11. package/dist/es2019/clients/block-service/ari.js +15 -16
  12. package/dist/es2019/clients/block-service/blockService.js +39 -7
  13. package/dist/es2019/clients/confluence/ari.js +11 -37
  14. package/dist/es2019/clients/confluence/sourceInfo.js +3 -1
  15. package/dist/es2019/clients/jira/ari.js +9 -2
  16. package/dist/es2019/index.js +2 -3
  17. package/dist/es2019/providers/block-service/blockServiceAPI.js +75 -28
  18. package/dist/es2019/providers/syncBlockProvider.js +45 -25
  19. package/dist/es2019/store-manager/sourceSyncBlockStoreManager.js +5 -8
  20. package/dist/esm/clients/block-service/ari.js +13 -16
  21. package/dist/esm/clients/block-service/blockService.js +37 -14
  22. package/dist/esm/clients/confluence/ari.js +6 -39
  23. package/dist/esm/clients/confluence/sourceInfo.js +3 -1
  24. package/dist/esm/clients/jira/ari.js +5 -2
  25. package/dist/esm/index.js +2 -3
  26. package/dist/esm/providers/block-service/blockServiceAPI.js +70 -27
  27. package/dist/esm/providers/syncBlockProvider.js +57 -38
  28. package/dist/esm/store-manager/sourceSyncBlockStoreManager.js +4 -8
  29. package/dist/types/clients/block-service/ari.d.ts +14 -4
  30. package/dist/types/clients/block-service/blockService.d.ts +1 -2
  31. package/dist/types/clients/confluence/ari.d.ts +8 -21
  32. package/dist/types/clients/jira/ari.d.ts +7 -2
  33. package/dist/types/index.d.ts +5 -6
  34. package/dist/types/providers/block-service/blockServiceAPI.d.ts +31 -6
  35. package/dist/types/providers/syncBlockProvider.d.ts +14 -13
  36. package/dist/types/providers/types.d.ts +9 -6
  37. package/dist/types-ts4.5/clients/block-service/ari.d.ts +14 -4
  38. package/dist/types-ts4.5/clients/block-service/blockService.d.ts +1 -2
  39. package/dist/types-ts4.5/clients/confluence/ari.d.ts +8 -21
  40. package/dist/types-ts4.5/clients/jira/ari.d.ts +7 -2
  41. package/dist/types-ts4.5/index.d.ts +5 -6
  42. package/dist/types-ts4.5/providers/block-service/blockServiceAPI.d.ts +31 -6
  43. package/dist/types-ts4.5/providers/syncBlockProvider.d.ts +14 -13
  44. package/dist/types-ts4.5/providers/types.d.ts +9 -6
  45. package/package.json +1 -1
  46. package/dist/cjs/clients/confluence/contentProperty.js +0 -284
  47. package/dist/cjs/providers/confluence/confluenceContentAPI.js +0 -446
  48. package/dist/es2019/clients/confluence/contentProperty.js +0 -288
  49. package/dist/es2019/providers/confluence/confluenceContentAPI.js +0 -310
  50. package/dist/esm/clients/confluence/contentProperty.js +0 -277
  51. package/dist/esm/providers/confluence/confluenceContentAPI.js +0 -440
  52. package/dist/types/clients/confluence/contentProperty.d.ts +0 -139
  53. package/dist/types/providers/confluence/confluenceContentAPI.d.ts +0 -44
  54. package/dist/types-ts4.5/clients/confluence/contentProperty.d.ts +0 -139
  55. package/dist/types-ts4.5/providers/confluence/confluenceContentAPI.d.ts +0 -44
@@ -3,32 +3,25 @@ import { useMemo } from 'react';
3
3
  import { getPageIdAndTypeFromConfluencePageAri } from '../clients/confluence/ari';
4
4
  import { fetchConfluencePageInfo } from '../clients/confluence/sourceInfo';
5
5
  import { SyncBlockError } from '../common/types';
6
- import { SyncBlockDataProvider } from '../providers/types';
6
+ import { SyncBlockDataProvider } from './types';
7
7
  export class SyncBlockProvider extends SyncBlockDataProvider {
8
- // the source document ARI; that the source sync block is on.
9
-
10
8
  /**
11
9
  * Constructor for the SyncBlockProvider
12
10
  *
13
11
  * @param fetchProvider
14
12
  * @param writeProvider
15
- * @param sourceId
16
13
  * @param nestedRendererDataProviders
17
14
  */
18
- constructor(fetchProvider, writeProvider, sourceId) {
15
+ constructor(fetchProvider, writeProvider) {
19
16
  super();
20
17
  _defineProperty(this, "name", 'syncBlockProvider');
21
18
  this.fetchProvider = fetchProvider;
22
19
  this.writeProvider = writeProvider;
23
- this.sourceId = sourceId;
24
20
  this.providerOptions = {};
25
21
  }
26
22
  setProviderOptions(providerOptions) {
27
23
  this.providerOptions = providerOptions;
28
24
  }
29
- getProduct() {
30
- return this.writeProvider.product;
31
- }
32
25
 
33
26
  /**
34
27
  * Check if the node is supported by the provider
@@ -88,11 +81,18 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
88
81
  * resourceId: resource id of the node if write successfully , error: reason for when write failed
89
82
  */
90
83
  async writeNodesData(nodes, data) {
84
+ if (!this.writeProvider) {
85
+ return Promise.reject(new Error('Write provider not set'));
86
+ }
91
87
  const results = await Promise.allSettled(nodes.map((_node, index) => {
88
+ var _this$writeProvider;
89
+ if (!this.writeProvider) {
90
+ return Promise.reject('Write provider not set');
91
+ }
92
92
  if (!data[index].content) {
93
93
  return Promise.reject('No Synced Block content to write');
94
94
  }
95
- return this.writeProvider.writeData(data[index]);
95
+ return (_this$writeProvider = this.writeProvider) === null || _this$writeProvider === void 0 ? void 0 : _this$writeProvider.writeData(data[index]);
96
96
  }));
97
97
  return results.map(result => {
98
98
  if (result.status === 'fulfilled') {
@@ -105,6 +105,9 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
105
105
  });
106
106
  }
107
107
  createNodeData(data) {
108
+ if (!this.writeProvider) {
109
+ return Promise.reject(new Error('Write provider not set'));
110
+ }
108
111
  return this.writeProvider.createData(data).then(result => result, error => ({
109
112
  error
110
113
  }));
@@ -118,7 +121,15 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
118
121
  * @returns Array of {resourceId?: string, error?: string}.
119
122
  */
120
123
  async deleteNodesData(resourceIds) {
121
- const results = await Promise.allSettled(resourceIds.map(resourceId => this.writeProvider.deleteData(resourceId)));
124
+ if (!this.writeProvider) {
125
+ return Promise.reject(new Error('Write provider not set'));
126
+ }
127
+ const results = await Promise.allSettled(resourceIds.map(resourceId => {
128
+ if (!this.writeProvider) {
129
+ return Promise.reject('Write provider not set');
130
+ }
131
+ return this.writeProvider.deleteData(resourceId);
132
+ }));
122
133
  return results.map((result, index) => {
123
134
  if (result.status === 'fulfilled') {
124
135
  return result.value;
@@ -132,15 +143,6 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
132
143
  });
133
144
  }
134
145
 
135
- /**
136
- * Get the source id
137
- *
138
- * @returns The source id
139
- */
140
- getSourceId() {
141
- return this.sourceId;
142
- }
143
-
144
146
  /**
145
147
  * Fetch the source info from the source id
146
148
  *
@@ -163,10 +165,18 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
163
165
  return Promise.reject(new Error(`${sourceProduct} source product not supported`));
164
166
  }
165
167
  }
166
- generateResourceId(sourceId, localId) {
167
- return this.writeProvider.generateResourceId(sourceId, localId);
168
+ generateResourceId() {
169
+ const localId = crypto.randomUUID();
170
+ const resourceId = crypto.randomUUID();
171
+ return {
172
+ localId,
173
+ resourceId
174
+ };
168
175
  }
169
176
  generateResourceIdForReference(sourceId) {
177
+ if (!this.writeProvider) {
178
+ throw new Error('Write provider not set');
179
+ }
170
180
  return this.writeProvider.generateResourceIdForReference(sourceId);
171
181
  }
172
182
 
@@ -194,7 +204,9 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
194
204
  switch (sourceProduct) {
195
205
  case 'confluence-page':
196
206
  return {
197
- contentId: getPageIdAndTypeFromConfluencePageAri(sourceAri).id,
207
+ contentId: getPageIdAndTypeFromConfluencePageAri({
208
+ ari: sourceAri
209
+ }).id,
198
210
  contentProduct: sourceProduct
199
211
  };
200
212
  case 'jira-work-item':
@@ -204,11 +216,19 @@ export class SyncBlockProvider extends SyncBlockDataProvider {
204
216
  }
205
217
  }
206
218
  updateReferenceData(blocks, noContent) {
219
+ if (!this.writeProvider) {
220
+ throw new Error('Write provider not set');
221
+ }
207
222
  return this.writeProvider.updateReferenceData(blocks, noContent);
208
223
  }
209
224
  }
210
- export const useMemoizedSyncedBlockProvider = (fetchProvider, writeProvider, sourceId, providerOptions, getSSRData) => {
211
- const syncBlockProvider = useMemo(() => new SyncBlockProvider(fetchProvider, writeProvider, sourceId), [fetchProvider, writeProvider, sourceId]);
225
+ export const useMemoizedSyncedBlockProvider = ({
226
+ fetchProvider,
227
+ writeProvider,
228
+ providerOptions,
229
+ getSSRData
230
+ }) => {
231
+ const syncBlockProvider = useMemo(() => new SyncBlockProvider(fetchProvider, writeProvider), [fetchProvider, writeProvider]);
212
232
  syncBlockProvider.setProviderOptions(providerOptions);
213
233
  const ssrData = getSSRData ? getSSRData() : undefined;
214
234
  if (ssrData) {
@@ -1,6 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
3
- import uuid from 'uuid';
4
2
  import { logException } from '@atlaskit/editor-common/monitoring';
5
3
  import { SyncBlockError } from '../common/types';
6
4
  import { updateErrorPayload, createErrorPayload, deleteErrorPayload, updateCacheErrorPayload } from '../utils/errorHandling';
@@ -168,14 +166,13 @@ export class SourceSyncBlockStoreManager {
168
166
  * @returns attributes for a new bodiedSyncBlock node
169
167
  */
170
168
  generateBodiedSyncBlockAttrs() {
171
- var _this$dataProvider;
172
- // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
173
- const localId = uuid();
174
- const sourceId = (_this$dataProvider = this.dataProvider) === null || _this$dataProvider === void 0 ? void 0 : _this$dataProvider.getSourceId();
175
- if (!this.dataProvider || !sourceId) {
169
+ if (!this.dataProvider) {
176
170
  throw new Error('Data provider not set or source id not set');
177
171
  }
178
- const resourceId = this.dataProvider.generateResourceId(sourceId, localId);
172
+ const {
173
+ resourceId,
174
+ localId
175
+ } = this.dataProvider.generateResourceId();
179
176
  return {
180
177
  resourceId,
181
178
  localId
@@ -2,32 +2,29 @@
2
2
 
3
3
  /**
4
4
  * Generates the block ARI from the source page ARI and the source block's resource ID.
5
- * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
5
+ * @param cloudId - the cloudId of the block. E.G the cloudId of the confluence page, or the cloudId of the Jira instance
6
+ * @param parentId - the parentId of the block. E.G the pageId for a confluence page, or the issueId for a Jira work item
6
7
  * @param resourceId - the resource ID of the block node. A randomly generated UUID
8
+ * @param product - the product of the block. E.G 'confluence-page', 'jira-work-item'
7
9
  * @returns the block ARI. E.G ari:cloud:blocks:<cloudId>:synced-block/<product>/<pageId>/<resourceId>
8
10
  */
9
- export var generateBlockAri = function generateBlockAri(sourceAri, resourceId, product) {
10
- var match = sourceAri.match(/ari:cloud:confluence:([^:]+):(page|blogpost)\/(\d+)/);
11
- if (!(match !== null && match !== void 0 && match[1])) {
12
- throw new Error("Invalid source ARI: ".concat(sourceAri));
13
- }
14
- var cloudId = match[1];
15
- var pageId = match[3];
16
- return "ari:cloud:blocks:".concat(cloudId, ":synced-block/").concat(product, "/").concat(pageId, "/").concat(resourceId);
11
+ export var generateBlockAri = function generateBlockAri(_ref) {
12
+ var cloudId = _ref.cloudId,
13
+ parentId = _ref.parentId,
14
+ product = _ref.product,
15
+ resourceId = _ref.resourceId;
16
+ return "ari:cloud:blocks:".concat(cloudId, ":synced-block/").concat(product, "/").concat(parentId, "/").concat(resourceId);
17
17
  };
18
18
 
19
19
  /**
20
20
  * Generates the block ARI from the reference synced block ARI and the resource ID
21
- * @param sourceAri - the ARI of the document. E.G ari:cloud:confluence:cloudId:page/pageId
21
+ * @param cloudId - the cloudId of the block. E.G the cloudId of the confluence page, or the cloudId of the Jira instance
22
22
  * @param resourceId - the resource ID of the reference synced block. E.G confluence-page/pageId/sourceResourceId
23
23
  * @returns the block ARI. E.G ari:cloud:blocks:<cloudId>:synced-block/<product>/<pageId>/<resourceId>
24
24
  */
25
- export var generateBlockAriFromReference = function generateBlockAriFromReference(sourceAri, resourceId) {
26
- var match = sourceAri.match(/ari:cloud:confluence:([^:]+):(page|blogpost)\/(\d+)/);
27
- if (!(match !== null && match !== void 0 && match[1])) {
28
- throw new Error("Invalid source ARI: ".concat(sourceAri));
29
- }
30
- var cloudId = match[1];
25
+ export var generateBlockAriFromReference = function generateBlockAriFromReference(_ref2) {
26
+ var cloudId = _ref2.cloudId,
27
+ resourceId = _ref2.resourceId;
31
28
  return "ari:cloud:blocks:".concat(cloudId, ":synced-block/").concat(resourceId);
32
29
  };
33
30
 
@@ -13,11 +13,10 @@ export var isBlockContentResponse = function isBlockContentResponse(response) {
13
13
  var content = response.content;
14
14
  return typeof content === 'string';
15
15
  };
16
-
17
16
  /**
18
17
  * Retrieves all synced blocks referenced in a document.
19
18
  *
20
- * Calls the Block Service API endpoint: `/v1/block/document/reference/{documentAri}`
19
+ * Calls the Block Service GraphQL API: `blockService_getDocumentReferenceBlocks`
21
20
  *
22
21
  * @param documentAri - The ARI of the document to fetch synced blocks for
23
22
  * @returns A promise containing arrays of successfully fetched blocks and any errors encountered
@@ -54,32 +53,51 @@ export var isBlockContentResponse = function isBlockContentResponse(response) {
54
53
  * ]
55
54
  * }
56
55
  * ```
57
- * Check https://block-service.dev.atl-paas.net/ for latest API documentation.
58
56
  */
59
57
  export var getReferenceSyncedBlocks = /*#__PURE__*/function () {
60
58
  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(documentAri) {
61
- var response;
59
+ var bodyData, response, result;
62
60
  return _regeneratorRuntime.wrap(function _callee$(_context) {
63
61
  while (1) switch (_context.prev = _context.next) {
64
62
  case 0:
65
- _context.next = 2;
66
- return fetchWithRetry("".concat(BLOCK_SERVICE_API_URL, "/block/document/reference/").concat(encodeURIComponent(documentAri)), {
67
- method: 'GET',
68
- headers: COMMON_HEADERS
63
+ bodyData = {
64
+ query: buildGetDocumentReferenceBlocksQuery(documentAri),
65
+ operationName: GET_DOCUMENT_REFERENCE_BLOCKS_OPERATION_NAME
66
+ };
67
+ _context.next = 3;
68
+ return fetchWithRetry(GRAPHQL_ENDPOINT, {
69
+ method: 'POST',
70
+ headers: COMMON_HEADERS,
71
+ body: JSON.stringify(bodyData)
69
72
  });
70
- case 2:
73
+ case 3:
71
74
  response = _context.sent;
72
75
  if (response.ok) {
73
- _context.next = 5;
76
+ _context.next = 6;
74
77
  break;
75
78
  }
76
79
  throw new BlockError(response.status);
77
- case 5:
78
- _context.next = 7;
80
+ case 6:
81
+ _context.next = 8;
79
82
  return response.json();
80
- case 7:
81
- return _context.abrupt("return", _context.sent);
82
83
  case 8:
84
+ result = _context.sent;
85
+ if (!(result.errors && result.errors.length > 0)) {
86
+ _context.next = 11;
87
+ break;
88
+ }
89
+ throw new Error(result.errors.map(function (e) {
90
+ return e.message;
91
+ }).join(', '));
92
+ case 11:
93
+ if (result.data) {
94
+ _context.next = 13;
95
+ break;
96
+ }
97
+ throw new Error('No data returned from GraphQL query');
98
+ case 13:
99
+ return _context.abrupt("return", result.data.blockService_getDocumentReferenceBlocks);
100
+ case 14:
83
101
  case "end":
84
102
  return _context.stop();
85
103
  }
@@ -94,6 +112,11 @@ var COMMON_HEADERS = {
94
112
  Accept: 'application/json'
95
113
  };
96
114
  var BLOCK_SERVICE_API_URL = '/gateway/api/blocks/v1';
115
+ var GRAPHQL_ENDPOINT = '/gateway/api/graphql';
116
+ var GET_DOCUMENT_REFERENCE_BLOCKS_OPERATION_NAME = 'EDITOR_SYNCED_BLOCK_GET_DOCUMENT_REFERENCE_BLOCKS';
117
+ var buildGetDocumentReferenceBlocksQuery = function buildGetDocumentReferenceBlocksQuery(documentAri) {
118
+ return "query ".concat(GET_DOCUMENT_REFERENCE_BLOCKS_OPERATION_NAME, " {\n\tblockService_getDocumentReferenceBlocks(documentAri: \"").concat(documentAri, "\") {\n\t\tblocks {\n\t\t\tblockAri\n\t\t\tblockInstanceId\n\t\t\tcontent\n\t\t\tcreatedAt\n\t\t\tcreatedBy\n\t\t\tproduct\n\t\t\tsourceAri\n\t\t\tstatus\n\t\t\tversion\n\t\t}\n\t\terrors {\n\t\t\tblockAri\n\t\t\tcode\n\t\t\treason\n\t\t}\n\t}\n}");
119
+ };
97
120
  export var BlockError = /*#__PURE__*/function (_Error) {
98
121
  function BlockError(status) {
99
122
  var _this;
@@ -11,8 +11,10 @@
11
11
  * @param pageType - the type of the page
12
12
  * @returns the Confluence page ARI
13
13
  */
14
- export var getConfluencePageAri = function getConfluencePageAri(pageId, cloudId) {
15
- var pageType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'page';
14
+ export var getConfluencePageAri = function getConfluencePageAri(_ref) {
15
+ var pageId = _ref.pageId,
16
+ cloudId = _ref.cloudId,
17
+ pageType = _ref.pageType;
16
18
  return "ari:cloud:confluence:".concat(cloudId, ":").concat(pageType, "/").concat(pageId);
17
19
  };
18
20
 
@@ -21,7 +23,8 @@ export var getConfluencePageAri = function getConfluencePageAri(pageId, cloudId)
21
23
  * @param ari - the Confluence page ARI
22
24
  * @returns the page ID and type
23
25
  */
24
- export var getPageIdAndTypeFromConfluencePageAri = function getPageIdAndTypeFromConfluencePageAri(ari) {
26
+ export var getPageIdAndTypeFromConfluencePageAri = function getPageIdAndTypeFromConfluencePageAri(_ref2) {
27
+ var ari = _ref2.ari;
25
28
  var match = ari.match(/ari:cloud:confluence:[^:]+:(page|blogpost)\/(\d+)/);
26
29
  if (match !== null && match !== void 0 && match[2]) {
27
30
  return {
@@ -30,40 +33,4 @@ export var getPageIdAndTypeFromConfluencePageAri = function getPageIdAndTypeFrom
30
33
  };
31
34
  }
32
35
  throw new Error("Invalid page ARI: ".concat(ari));
33
- };
34
-
35
- /**
36
- * Extracts the local ID from the Confluence page content property resource ID
37
- * @param resourceId - the Confluence page content property resource ID
38
- * @returns the local ID
39
- */
40
- export var getLocalIdFromContentPropertyResourceId = function getLocalIdFromContentPropertyResourceId(resourceId) {
41
- var match = resourceId.match(/ari:cloud:confluence:[^:]+:(page|blogpost)\/\d+\/([a-zA-Z0-9-]+)/);
42
- if (match !== null && match !== void 0 && match[2]) {
43
- return match[2];
44
- }
45
- throw new Error("Invalid resourceId: ".concat(resourceId));
46
- };
47
-
48
- /**
49
- * Extracts the Confluence page ARI from the Confluence content property resource ID
50
- * @param resourceId - the Confluence content property resource ID
51
- * @returns the Confluence page ARI
52
- */
53
- export var getPageAriFromContentPropertyResourceId = function getPageAriFromContentPropertyResourceId(resourceId) {
54
- var match = resourceId.match(/(ari:cloud:confluence:[^:]+:(page|blogpost)\/\d+)\/([a-zA-Z0-9-]+)$/);
55
- if (match !== null && match !== void 0 && match[1]) {
56
- return match[1];
57
- }
58
- throw new Error("Invalid resourceId: ".concat(resourceId));
59
- };
60
-
61
- /**
62
- * Generates the Confluence page content property resource ID from the source ID and local ID
63
- * @param sourceId - the source ID
64
- * @param localId - the local ID
65
- * @returns the Confluence page content property resource ID
66
- */
67
- export var resourceIdFromConfluencePageSourceIdAndLocalId = function resourceIdFromConfluencePageSourceIdAndLocalId(sourceId, localId) {
68
- return "".concat(sourceId, "/").concat(localId);
69
36
  };
@@ -73,7 +73,9 @@ export var fetchConfluencePageInfo = /*#__PURE__*/function () {
73
73
  while (1) switch (_context2.prev = _context2.next) {
74
74
  case 0:
75
75
  _context2.prev = 0;
76
- _getPageIdAndTypeFrom = getPageIdAndTypeFromConfluencePageAri(pageAri), pageType = _getPageIdAndTypeFrom.type;
76
+ _getPageIdAndTypeFrom = getPageIdAndTypeFromConfluencePageAri({
77
+ ari: pageAri
78
+ }), pageType = _getPageIdAndTypeFrom.type;
77
79
  _context2.next = 4;
78
80
  return getConfluenceSourceInfo(pageAri);
79
81
  case 4:
@@ -6,7 +6,9 @@
6
6
  * @param cloudId - the cloud ID
7
7
  * @returns the Jira work item ARI
8
8
  */
9
- export var getJiraWorkItemAri = function getJiraWorkItemAri(workItemId, cloudId) {
9
+ export var getJiraWorkItemAri = function getJiraWorkItemAri(_ref) {
10
+ var cloudId = _ref.cloudId,
11
+ workItemId = _ref.workItemId;
10
12
  return "ari:cloud:jira:".concat(cloudId, ":issue/").concat(workItemId);
11
13
  };
12
14
 
@@ -15,7 +17,8 @@ export var getJiraWorkItemAri = function getJiraWorkItemAri(workItemId, cloudId)
15
17
  * @param ari - the Jira work item ARI
16
18
  * @returns the Jira work item ID
17
19
  */
18
- export var getJiraWorkItemIdFromAri = function getJiraWorkItemIdFromAri(ari) {
20
+ export var getJiraWorkItemIdFromAri = function getJiraWorkItemIdFromAri(_ref2) {
21
+ var ari = _ref2.ari;
19
22
  var match = ari.match(/ari:cloud:jira:([^:]+):issue\/(\d+)/);
20
23
  if (match !== null && match !== void 0 && match[2]) {
21
24
  return match[2];
package/dist/esm/index.js CHANGED
@@ -10,12 +10,11 @@ export { useHandleContentChanges } from './hooks/useHandleContentChanges';
10
10
 
11
11
  // clients
12
12
  export { generateBlockAri, generateBlockAriFromReference, getLocalIdFromBlockResourceId } from './clients/block-service/ari';
13
- export { getConfluencePageAri, getLocalIdFromContentPropertyResourceId, getPageAriFromContentPropertyResourceId, getPageIdAndTypeFromConfluencePageAri, resourceIdFromConfluencePageSourceIdAndLocalId } from './clients/confluence/ari';
13
+ export { getConfluencePageAri, getPageIdAndTypeFromConfluencePageAri } from './clients/confluence/ari';
14
14
  export { getJiraWorkItemAri, getJiraWorkItemIdFromAri } from './clients/jira/ari';
15
15
 
16
16
  // providers
17
- export { useMemoizedBlockServiceAPIProviders } from './providers/block-service/blockServiceAPI';
18
- export { createContentAPIProvidersWithDefaultKey, useMemoizedContentAPIProviders } from './providers/confluence/confluenceContentAPI';
17
+ export { useMemoizedBlockServiceAPIProviders, useMemoizedBlockServiceFetchOnlyAPIProvider } from './providers/block-service/blockServiceAPI';
19
18
  export { fetchConfluencePageInfo } from './clients/confluence/sourceInfo';
20
19
  export { SyncBlockProvider as SyncedBlockProvider, useMemoizedSyncedBlockProvider } from './providers/syncBlockProvider';
21
20
 
@@ -104,14 +104,14 @@ export var fetchReferences = /*#__PURE__*/function () {
104
104
  return _ref.apply(this, arguments);
105
105
  };
106
106
  }();
107
-
108
107
  /**
109
108
  * ADFFetchProvider implementation that fetches synced block data from Block Service API
110
109
  */
111
110
  var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
112
- function BlockServiceADFFetchProvider(sourceAri) {
111
+ function BlockServiceADFFetchProvider(_ref3) {
112
+ var cloudId = _ref3.cloudId;
113
113
  _classCallCheck(this, BlockServiceADFFetchProvider);
114
- this.sourceAri = sourceAri;
114
+ this.cloudId = cloudId;
115
115
  }
116
116
 
117
117
  // resourceId of the reference synced block.
@@ -124,7 +124,10 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
124
124
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
125
125
  while (1) switch (_context2.prev = _context2.next) {
126
126
  case 0:
127
- blockAri = generateBlockAriFromReference(this.sourceAri, resourceId);
127
+ blockAri = generateBlockAriFromReference({
128
+ cloudId: this.cloudId,
129
+ resourceId: resourceId
130
+ });
128
131
  _context2.prev = 1;
129
132
  _context2.next = 4;
130
133
  return getSyncedBlockContent({
@@ -188,11 +191,17 @@ var BlockServiceADFFetchProvider = /*#__PURE__*/function () {
188
191
  * ADFWriteProvider implementation that writes synced block data to Block Service API
189
192
  */
190
193
  var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
191
- function BlockServiceADFWriteProvider(sourceAri, product, sourceDocumentId, getVersion) {
194
+ function BlockServiceADFWriteProvider(_ref4) {
195
+ var cloudId = _ref4.cloudId,
196
+ parentAri = _ref4.parentAri,
197
+ parentId = _ref4.parentId,
198
+ product = _ref4.product,
199
+ getVersion = _ref4.getVersion;
192
200
  _classCallCheck(this, BlockServiceADFWriteProvider);
193
- this.sourceAri = sourceAri;
201
+ this.cloudId = cloudId;
202
+ this.parentAri = parentAri;
203
+ this.parentId = parentId;
194
204
  this.product = product;
195
- this.sourceDocumentId = sourceDocumentId;
196
205
  this.getVersion = getVersion;
197
206
  }
198
207
 
@@ -206,7 +215,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
206
215
  while (1) switch (_context3.prev = _context3.next) {
207
216
  case 0:
208
217
  resourceId = data.resourceId;
209
- blockAri = generateBlockAri(this.sourceAri, resourceId, this.product);
218
+ blockAri = generateBlockAri({
219
+ cloudId: this.cloudId,
220
+ parentId: this.parentId,
221
+ product: this.product,
222
+ resourceId: resourceId
223
+ });
210
224
  stepVersion = this.getVersion ? this.getVersion() : undefined;
211
225
  _context3.prev = 3;
212
226
  _context3.next = 6;
@@ -255,14 +269,19 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
255
269
  while (1) switch (_context4.prev = _context4.next) {
256
270
  case 0:
257
271
  resourceId = data.resourceId;
258
- blockAri = generateBlockAri(this.sourceAri, resourceId, this.product);
272
+ blockAri = generateBlockAri({
273
+ cloudId: this.cloudId,
274
+ parentId: this.parentId,
275
+ product: this.product,
276
+ resourceId: resourceId
277
+ });
259
278
  stepVersion = this.getVersion ? this.getVersion() : undefined;
260
279
  _context4.prev = 3;
261
280
  _context4.next = 6;
262
281
  return createSyncedBlock({
263
282
  blockAri: blockAri,
264
283
  blockInstanceId: data.blockInstanceId,
265
- sourceAri: this.sourceAri,
284
+ sourceAri: this.parentAri,
266
285
  product: this.product,
267
286
  content: JSON.stringify(data.content),
268
287
  stepVersion: stepVersion
@@ -306,7 +325,12 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
306
325
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
307
326
  while (1) switch (_context5.prev = _context5.next) {
308
327
  case 0:
309
- blockAri = generateBlockAri(this.sourceAri, resourceId, this.product);
328
+ blockAri = generateBlockAri({
329
+ cloudId: this.cloudId,
330
+ parentId: this.parentId,
331
+ product: this.product,
332
+ resourceId: resourceId
333
+ });
310
334
  _context5.prev = 1;
311
335
  _context5.next = 4;
312
336
  return deleteSyncedBlock({
@@ -359,7 +383,7 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
359
383
  }, {
360
384
  key: "generateResourceIdForReference",
361
385
  value: function generateResourceIdForReference(sourceId) {
362
- return "".concat(this.product, "/").concat(this.sourceDocumentId, "/").concat(sourceId);
386
+ return "".concat(this.product, "/").concat(this.parentId, "/").concat(sourceId);
363
387
  }
364
388
  }, {
365
389
  key: "generateResourceId",
@@ -377,10 +401,13 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
377
401
  _context6.prev = 0;
378
402
  _context6.next = 3;
379
403
  return updateReferenceSyncedBlockOnDocument({
380
- documentAri: this.sourceAri,
404
+ documentAri: this.parentAri,
381
405
  blocks: blocks.map(function (block) {
382
406
  return {
383
- blockAri: generateBlockAriFromReference(_this.sourceAri, block.resourceId),
407
+ blockAri: generateBlockAriFromReference({
408
+ cloudId: _this.cloudId,
409
+ resourceId: block.resourceId
410
+ }),
384
411
  blockInstanceId: block.localId
385
412
  };
386
413
  }),
@@ -419,19 +446,35 @@ var BlockServiceADFWriteProvider = /*#__PURE__*/function () {
419
446
  }()
420
447
  }]);
421
448
  }();
422
- /**
423
- * Factory function to create both providers with shared configuration
424
- */
425
- var createBlockServiceAPIProviders = function createBlockServiceAPIProviders(sourceAri, product, sourceDocumentId, getVersion) {
426
- var fetchProvider = new BlockServiceADFFetchProvider(sourceAri);
427
- var writeProvider = new BlockServiceADFWriteProvider(sourceAri, product, sourceDocumentId, getVersion);
428
- return {
429
- fetchProvider: fetchProvider,
430
- writeProvider: writeProvider
431
- };
449
+ export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(_ref5) {
450
+ var cloudId = _ref5.cloudId,
451
+ parentAri = _ref5.parentAri,
452
+ parentId = _ref5.parentId,
453
+ product = _ref5.product,
454
+ getVersion = _ref5.getVersion;
455
+ return useMemo(function () {
456
+ return {
457
+ fetchProvider: new BlockServiceADFFetchProvider({
458
+ cloudId: cloudId
459
+ }),
460
+ writeProvider: new BlockServiceADFWriteProvider({
461
+ cloudId: cloudId,
462
+ parentAri: parentAri,
463
+ parentId: parentId,
464
+ product: product,
465
+ getVersion: getVersion
466
+ })
467
+ };
468
+ }, [cloudId, parentAri, parentId, product, getVersion]);
432
469
  };
433
- export var useMemoizedBlockServiceAPIProviders = function useMemoizedBlockServiceAPIProviders(sourceAri, product, sourceDocumentId, getVersion) {
470
+ export var useMemoizedBlockServiceFetchOnlyAPIProvider = function useMemoizedBlockServiceFetchOnlyAPIProvider(_ref6) {
471
+ var cloudId = _ref6.cloudId;
434
472
  return useMemo(function () {
435
- return createBlockServiceAPIProviders(sourceAri, product, sourceDocumentId, getVersion);
436
- }, [sourceAri, product, sourceDocumentId, getVersion]);
473
+ return {
474
+ fetchProvider: new BlockServiceADFFetchProvider({
475
+ cloudId: cloudId
476
+ }),
477
+ writeProvider: undefined
478
+ };
479
+ }, [cloudId]);
437
480
  };