@webiny/api-page-builder-so-ddb-es 5.39.0-beta.0 → 5.39.0-beta.2

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 (116) hide show
  1. package/definitions/blockCategoryEntity.d.ts +2 -2
  2. package/definitions/blockCategoryEntity.js +6 -7
  3. package/definitions/blockCategoryEntity.js.map +1 -1
  4. package/definitions/categoryEntity.d.ts +2 -2
  5. package/definitions/categoryEntity.js +6 -7
  6. package/definitions/categoryEntity.js.map +1 -1
  7. package/definitions/menuEntity.d.ts +2 -2
  8. package/definitions/menuEntity.js +6 -7
  9. package/definitions/menuEntity.js.map +1 -1
  10. package/definitions/pageBlockEntity.d.ts +2 -2
  11. package/definitions/pageBlockEntity.js +6 -7
  12. package/definitions/pageBlockEntity.js.map +1 -1
  13. package/definitions/pageElasticsearchEntity.d.ts +2 -2
  14. package/definitions/pageElasticsearchEntity.js +6 -7
  15. package/definitions/pageElasticsearchEntity.js.map +1 -1
  16. package/definitions/pageElementEntity.d.ts +2 -2
  17. package/definitions/pageElementEntity.js +6 -7
  18. package/definitions/pageElementEntity.js.map +1 -1
  19. package/definitions/pageEntity.d.ts +2 -2
  20. package/definitions/pageEntity.js +6 -7
  21. package/definitions/pageEntity.js.map +1 -1
  22. package/definitions/pageTemplateEntity.d.ts +2 -2
  23. package/definitions/pageTemplateEntity.js +6 -7
  24. package/definitions/pageTemplateEntity.js.map +1 -1
  25. package/definitions/settingsEntity.d.ts +2 -2
  26. package/definitions/settingsEntity.js +2 -2
  27. package/definitions/settingsEntity.js.map +1 -1
  28. package/definitions/systemEntity.d.ts +2 -2
  29. package/definitions/systemEntity.js +6 -7
  30. package/definitions/systemEntity.js.map +1 -1
  31. package/definitions/table.d.ts +4 -4
  32. package/definitions/table.js +5 -3
  33. package/definitions/table.js.map +1 -1
  34. package/definitions/tableElasticsearch.d.ts +4 -4
  35. package/definitions/tableElasticsearch.js +5 -3
  36. package/definitions/tableElasticsearch.js.map +1 -1
  37. package/operations/blockCategory/dataLoader.d.ts +1 -1
  38. package/operations/blockCategory/dataLoader.js +1 -3
  39. package/operations/blockCategory/dataLoader.js.map +1 -1
  40. package/operations/blockCategory/index.d.ts +1 -1
  41. package/operations/blockCategory/index.js +25 -14
  42. package/operations/blockCategory/index.js.map +1 -1
  43. package/operations/category/dataLoader.d.ts +1 -1
  44. package/operations/category/dataLoader.js +1 -3
  45. package/operations/category/dataLoader.js.map +1 -1
  46. package/operations/category/index.d.ts +1 -1
  47. package/operations/category/index.js +25 -14
  48. package/operations/category/index.js.map +1 -1
  49. package/operations/menu/index.d.ts +1 -1
  50. package/operations/menu/index.js +29 -19
  51. package/operations/menu/index.js.map +1 -1
  52. package/operations/pageBlock/compression.js +6 -6
  53. package/operations/pageBlock/compression.js.map +1 -1
  54. package/operations/pageBlock/dataLoader.d.ts +1 -1
  55. package/operations/pageBlock/dataLoader.js +1 -3
  56. package/operations/pageBlock/dataLoader.js.map +1 -1
  57. package/operations/pageBlock/index.d.ts +1 -1
  58. package/operations/pageBlock/index.js +28 -19
  59. package/operations/pageBlock/index.js.map +1 -1
  60. package/operations/pageElement/index.d.ts +1 -1
  61. package/operations/pageElement/index.js +29 -19
  62. package/operations/pageElement/index.js.map +1 -1
  63. package/operations/pageTemplate/dataLoader.d.ts +1 -1
  64. package/operations/pageTemplate/dataLoader.js +1 -3
  65. package/operations/pageTemplate/dataLoader.js.map +1 -1
  66. package/operations/pageTemplate/index.d.ts +1 -1
  67. package/operations/pageTemplate/index.js +27 -20
  68. package/operations/pageTemplate/index.js.map +1 -1
  69. package/operations/pages/elasticsearchQueryBody.js +9 -10
  70. package/operations/pages/elasticsearchQueryBody.js.map +1 -1
  71. package/operations/pages/helpers.js +6 -5
  72. package/operations/pages/helpers.js.map +1 -1
  73. package/operations/pages/index.d.ts +1 -1
  74. package/operations/pages/index.js +116 -71
  75. package/operations/pages/index.js.map +1 -1
  76. package/operations/settings/index.d.ts +8 -2
  77. package/operations/settings/index.js +26 -19
  78. package/operations/settings/index.js.map +1 -1
  79. package/operations/system/index.d.ts +1 -1
  80. package/operations/system/index.js +19 -9
  81. package/operations/system/index.js.map +1 -1
  82. package/package.json +33 -30
  83. package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.js +3 -4
  84. package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.js.map +1 -1
  85. package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js +3 -4
  86. package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js.map +1 -1
  87. package/plugins/definitions/IndexPageDataPlugin.js +1 -4
  88. package/plugins/definitions/IndexPageDataPlugin.js.map +1 -1
  89. package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js +3 -4
  90. package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js.map +1 -1
  91. package/plugins/definitions/PageBlockDynamoDbFieldPlugin.js +3 -4
  92. package/plugins/definitions/PageBlockDynamoDbFieldPlugin.js.map +1 -1
  93. package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.js +3 -4
  94. package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.js.map +1 -1
  95. package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js +3 -4
  96. package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js.map +1 -1
  97. package/plugins/definitions/PageElasticsearchFieldPlugin.js +3 -4
  98. package/plugins/definitions/PageElasticsearchFieldPlugin.js.map +1 -1
  99. package/plugins/definitions/PageElasticsearchIndexPlugin.js +3 -4
  100. package/plugins/definitions/PageElasticsearchIndexPlugin.js.map +1 -1
  101. package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js +3 -4
  102. package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js.map +1 -1
  103. package/plugins/definitions/PageElasticsearchSortModifierPlugin.js +3 -4
  104. package/plugins/definitions/PageElasticsearchSortModifierPlugin.js.map +1 -1
  105. package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js +3 -4
  106. package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js.map +1 -1
  107. package/plugins/definitions/PageTemplateDynamoDbElasticFieldPlugin.js +3 -4
  108. package/plugins/definitions/PageTemplateDynamoDbElasticFieldPlugin.js.map +1 -1
  109. package/plugins/definitions/SearchLatestPagesPlugin.js +3 -4
  110. package/plugins/definitions/SearchLatestPagesPlugin.js.map +1 -1
  111. package/plugins/definitions/SearchPagesPlugin.js +0 -3
  112. package/plugins/definitions/SearchPagesPlugin.js.map +1 -1
  113. package/plugins/definitions/SearchPublishedPagesPlugin.js +3 -4
  114. package/plugins/definitions/SearchPublishedPagesPlugin.js.map +1 -1
  115. package/types.d.ts +8 -9
  116. package/types.js.map +1 -1
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createPageStorageOperations = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
8
  var _omit = _interopRequireDefault(require("lodash/omit"));
10
9
  var _error = _interopRequireDefault(require("@webiny/error"));
11
10
  var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
@@ -20,6 +19,7 @@ var _helpers = require("./helpers");
20
19
  var _keys = require("./keys");
21
20
  var _sort = require("@webiny/db-dynamodb/utils/sort");
22
21
  var _PageDynamoDbElasticsearchFieldPlugin = require("../../plugins/definitions/PageDynamoDbElasticsearchFieldPlugin");
22
+ var _dbDynamodb = require("@webiny/db-dynamodb");
23
23
  /**
24
24
  * This function removes attributes that were once present in the Page record, which we no longer need.
25
25
  */
@@ -42,24 +42,33 @@ const createPageStorageOperations = params => {
42
42
  PK: (0, _keys.createPartitionKey)(page),
43
43
  SK: (0, _keys.createSortKey)(page)
44
44
  };
45
- const latestKeys = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, versionKeys), {}, {
45
+ const latestKeys = {
46
+ ...versionKeys,
46
47
  SK: (0, _keys.createLatestSortKey)()
47
- });
48
- const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), versionKeys), {}, {
48
+ };
49
+ const items = [entity.putBatch({
50
+ ...page,
51
+ ...versionKeys,
49
52
  TYPE: (0, _keys.createBasicType)()
50
- })), entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), latestKeys), {}, {
53
+ }), entity.putBatch({
54
+ ...page,
55
+ ...latestKeys,
51
56
  TYPE: (0, _keys.createLatestType)()
52
- }))];
57
+ })];
53
58
  const esData = (0, _helpers.getESLatestPageData)(plugins, page, input);
54
59
  try {
55
60
  await (0, _batchWrite.batchWriteAll)({
56
61
  table: entity.table,
57
62
  items: items
58
63
  });
59
- await esEntity.put((0, _objectSpread2.default)({
60
- index: _configurations.configurations.es(page).index,
61
- data: esData
62
- }, latestKeys));
64
+ await (0, _dbDynamodb.put)({
65
+ entity: esEntity,
66
+ item: {
67
+ index: _configurations.configurations.es(page).index,
68
+ data: esData,
69
+ ...latestKeys
70
+ }
71
+ });
63
72
  return page;
64
73
  } catch (ex) {
65
74
  throw new _error.default(ex.message || "Could not create new page.", ex.code || "CREATE_PAGE_ERROR", {
@@ -79,24 +88,33 @@ const createPageStorageOperations = params => {
79
88
  PK: (0, _keys.createPartitionKey)(page),
80
89
  SK: (0, _keys.createSortKey)(page)
81
90
  };
82
- const latestKeys = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, versionKeys), {}, {
91
+ const latestKeys = {
92
+ ...versionKeys,
83
93
  SK: (0, _keys.createLatestSortKey)()
84
- });
85
- const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
86
- TYPE: (0, _keys.createBasicType)()
87
- }, versionKeys)), entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
88
- TYPE: (0, _keys.createLatestType)()
89
- }, latestKeys))];
94
+ };
95
+ const items = [entity.putBatch({
96
+ ...page,
97
+ TYPE: (0, _keys.createBasicType)(),
98
+ ...versionKeys
99
+ }), entity.putBatch({
100
+ ...page,
101
+ TYPE: (0, _keys.createLatestType)(),
102
+ ...latestKeys
103
+ })];
90
104
  const esData = (0, _helpers.getESLatestPageData)(plugins, page);
91
105
  try {
92
106
  await (0, _batchWrite.batchWriteAll)({
93
107
  table: entity.table,
94
108
  items
95
109
  });
96
- await esEntity.put((0, _objectSpread2.default)({
97
- index: _configurations.configurations.es(page).index,
98
- data: esData
99
- }, latestKeys));
110
+ await (0, _dbDynamodb.put)({
111
+ entity: esEntity,
112
+ item: {
113
+ index: _configurations.configurations.es(page).index,
114
+ data: esData,
115
+ ...latestKeys
116
+ }
117
+ });
100
118
  return page;
101
119
  } catch (ex) {
102
120
  throw new _error.default(ex.message || "Could not create new page from existing page.", ex.code || "CREATE_PAGE_FROM_ERROR", {
@@ -118,22 +136,29 @@ const createPageStorageOperations = params => {
118
136
  PK: (0, _keys.createPartitionKey)(page),
119
137
  SK: (0, _keys.createSortKey)(page)
120
138
  };
121
- const latestKeys = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, keys), {}, {
139
+ const latestKeys = {
140
+ ...keys,
122
141
  SK: (0, _keys.createLatestSortKey)()
142
+ };
143
+ const latestPage = await (0, _dbDynamodb.getClean)({
144
+ entity,
145
+ keys: latestKeys
123
146
  });
124
- const latestPageResult = await entity.get(latestKeys);
125
- const latestPage = (0, _cleanup.cleanupItem)(entity, latestPageResult ? latestPageResult.Item : null);
126
- const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
127
- TYPE: (0, _keys.createBasicType)()
128
- }, keys))];
147
+ const items = [entity.putBatch({
148
+ ...page,
149
+ TYPE: (0, _keys.createBasicType)(),
150
+ ...keys
151
+ })];
129
152
  const esData = (0, _helpers.getESLatestPageData)(plugins, page, input);
130
- if (latestPage && latestPage.id === page.id) {
153
+ if (latestPage && latestPage?.id === page.id) {
131
154
  /**
132
155
  * We also update the regular record.
133
156
  */
134
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
135
- TYPE: (0, _keys.createLatestType)()
136
- }, latestKeys)));
157
+ items.push(entity.putBatch({
158
+ ...page,
159
+ TYPE: (0, _keys.createLatestType)(),
160
+ ...latestKeys
161
+ }));
137
162
  }
138
163
  /**
139
164
  * Unfortunately we cannot push regular and es record in the batch write because they are two separate tables.
@@ -143,10 +168,14 @@ const createPageStorageOperations = params => {
143
168
  table: entity.table,
144
169
  items
145
170
  });
146
- await esEntity.put((0, _objectSpread2.default)({
147
- index: _configurations.configurations.es(page).index,
148
- data: esData
149
- }, latestKeys));
171
+ await (0, _dbDynamodb.put)({
172
+ entity: esEntity,
173
+ item: {
174
+ index: _configurations.configurations.es(page).index,
175
+ data: esData,
176
+ ...latestKeys
177
+ }
178
+ });
150
179
  return page;
151
180
  } catch (ex) {
152
181
  throw new _error.default(ex.message || "Could not update existing page.", ex.code || "UPDATE_PAGE_ERROR", {
@@ -203,11 +232,12 @@ const createPageStorageOperations = params => {
203
232
  }
204
233
  });
205
234
  if (previousLatestRecord) {
206
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, previousLatestRecord), {}, {
235
+ items.push(entity.putBatch({
236
+ ...previousLatestRecord,
207
237
  TYPE: (0, _keys.createLatestType)(),
208
238
  PK: partitionKey,
209
239
  SK: (0, _keys.createLatestSortKey)()
210
- })));
240
+ }));
211
241
  esItems.push(esEntity.putBatch({
212
242
  PK: partitionKey,
213
243
  SK: (0, _keys.createLatestSortKey)(),
@@ -330,22 +360,24 @@ const createPageStorageOperations = params => {
330
360
  /**
331
361
  * Update the given revision of the page.
332
362
  */
333
- const items = [entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
363
+ const items = [entity.putBatch({
364
+ ...page,
334
365
  TYPE: (0, _keys.createBasicType)(),
335
366
  PK: (0, _keys.createPartitionKey)(page),
336
367
  SK: (0, _keys.createSortKey)(page)
337
- }))];
368
+ })];
338
369
  const esItems = [];
339
370
  /**
340
371
  * If we are publishing the latest revision, update the latest revision
341
372
  * status in ES. We also need to update the latest page revision entry in ES.
342
373
  */
343
374
  if (latestPage.id === page.id) {
344
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
375
+ items.push(entity.putBatch({
376
+ ...page,
345
377
  TYPE: (0, _keys.createLatestType)(),
346
378
  PK: (0, _keys.createPartitionKey)(page),
347
379
  SK: (0, _keys.createLatestSortKey)()
348
- })));
380
+ }));
349
381
  esItems.push(esEntity.putBatch({
350
382
  PK: (0, _keys.createPartitionKey)(page),
351
383
  SK: (0, _keys.createLatestSortKey)(),
@@ -358,11 +390,12 @@ const createPageStorageOperations = params => {
358
390
  * - set the existing published revision to "unpublished"
359
391
  */
360
392
  if (publishedPage && publishedPage.id !== page.id) {
361
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, publishedPage), {}, {
393
+ items.push(entity.putBatch({
394
+ ...publishedPage,
362
395
  status: "unpublished",
363
396
  PK: (0, _keys.createPartitionKey)(publishedPage),
364
397
  SK: (0, _keys.createSortKey)(publishedPage)
365
- })));
398
+ }));
366
399
  /**
367
400
  * Remove old published path if required.
368
401
  */
@@ -383,19 +416,21 @@ const createPageStorageOperations = params => {
383
416
  /**
384
417
  * Update or insert published path.
385
418
  */
386
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
419
+ items.push(entity.putBatch({
420
+ ...page,
387
421
  TYPE: (0, _keys.createPublishedPathType)(),
388
422
  PK: (0, _keys.createPathPartitionKey)(page),
389
423
  SK: (0, _keys.createPathSortKey)(page)
390
- })));
424
+ }));
391
425
  /**
392
426
  * Update or insert published page.
393
427
  */
394
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
428
+ items.push(entity.putBatch({
429
+ ...page,
395
430
  TYPE: (0, _keys.createPublishedType)(),
396
431
  PK: (0, _keys.createPartitionKey)(page),
397
432
  SK: (0, _keys.createPublishedSortKey)()
398
- })));
433
+ }));
399
434
  try {
400
435
  await (0, _batchWrite.batchWriteAll)({
401
436
  table: entity.table,
@@ -432,21 +467,23 @@ const createPageStorageOperations = params => {
432
467
  }), entity.deleteBatch({
433
468
  PK: (0, _keys.createPathPartitionKey)(page),
434
469
  SK: (0, _keys.createPathSortKey)(page)
435
- }), entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
470
+ }), entity.putBatch({
471
+ ...page,
436
472
  TYPE: (0, _keys.createBasicType)(),
437
473
  PK: (0, _keys.createPartitionKey)(page),
438
474
  SK: (0, _keys.createSortKey)(page)
439
- }))];
475
+ })];
440
476
  const esItems = [];
441
477
  /*
442
478
  * If we are unpublishing the latest revision, let's also update the latest revision entry's status in ES.
443
479
  */
444
480
  if (latestPage.id === page.id) {
445
- items.push(entity.putBatch((0, _objectSpread2.default)((0, _objectSpread2.default)({}, page), {}, {
481
+ items.push(entity.putBatch({
482
+ ...page,
446
483
  TYPE: (0, _keys.createLatestType)(),
447
484
  PK: (0, _keys.createPartitionKey)(page),
448
485
  SK: (0, _keys.createLatestSortKey)()
449
- })));
486
+ }));
450
487
  esItems.push(esEntity.putBatch({
451
488
  PK: (0, _keys.createPartitionKey)(page),
452
489
  SK: (0, _keys.createLatestSortKey)(),
@@ -519,20 +556,20 @@ const createPageStorageOperations = params => {
519
556
  * If partition key is still undefined, create one with id or pid
520
557
  */
521
558
  if (!partitionKey) {
522
- partitionKey = (0, _keys.createPartitionKey)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
559
+ partitionKey = (0, _keys.createPartitionKey)({
560
+ ...where,
523
561
  id: pid || id
524
- }));
562
+ });
525
563
  }
526
564
  const keys = {
527
565
  PK: partitionKey,
528
566
  SK: sortKey
529
567
  };
530
568
  try {
531
- const result = await entity.get(keys);
532
- if (!result || !result.Item) {
533
- return null;
534
- }
535
- return (0, _cleanup.cleanupItem)(entity, result.Item);
569
+ return await (0, _dbDynamodb.getClean)({
570
+ entity,
571
+ keys
572
+ });
536
573
  } catch (ex) {
537
574
  throw new _error.default(ex.message || "Could not load page by given params.", ex.code || "GET_PAGE_ERROR", {
538
575
  where,
@@ -555,12 +592,15 @@ const createPageStorageOperations = params => {
555
592
  limit: initialLimit
556
593
  } = params;
557
594
  const limit = (0, _apiElasticsearch.createLimit)(initialLimit, 50);
558
- const body = (0, _elasticsearchQueryBody.createElasticsearchQueryBody)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
559
- where: (0, _objectSpread2.default)({}, params.where),
595
+ const body = (0, _elasticsearchQueryBody.createElasticsearchQueryBody)({
596
+ ...params,
597
+ where: {
598
+ ...params.where
599
+ },
560
600
  limit,
561
601
  after: previousCursor,
562
602
  plugins
563
- }));
603
+ });
564
604
  let searchPlugins = [];
565
605
  if (params.where.published) {
566
606
  searchPlugins = plugins.byType(_SearchPublishedPagesPlugin.SearchPublishedPagesPlugin.type);
@@ -593,9 +633,10 @@ const createPageStorageOperations = params => {
593
633
  let response;
594
634
  const esConfig = _configurations.configurations.es(params.where);
595
635
  try {
596
- response = await elasticsearch.search((0, _objectSpread2.default)((0, _objectSpread2.default)({}, esConfig), {}, {
636
+ response = await elasticsearch.search({
637
+ ...esConfig,
597
638
  body
598
- }));
639
+ });
599
640
  } catch (ex) {
600
641
  /**
601
642
  * Do not throw the error if Elasticsearch index does not exist.
@@ -646,7 +687,8 @@ const createPageStorageOperations = params => {
646
687
  where
647
688
  } = params;
648
689
  const tenant = where.tenant;
649
- const body = (0, _elasticsearchQueryBody.createElasticsearchQueryBody)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
690
+ const body = (0, _elasticsearchQueryBody.createElasticsearchQueryBody)({
691
+ ...params,
650
692
  where: {
651
693
  locale: where.locale,
652
694
  search: undefined,
@@ -656,11 +698,13 @@ const createPageStorageOperations = params => {
656
698
  after: null,
657
699
  limit: 100000,
658
700
  plugins
659
- }));
701
+ });
660
702
  const esConfig = _configurations.configurations.es(where);
661
703
  try {
662
- const response = await elasticsearch.search((0, _objectSpread2.default)((0, _objectSpread2.default)({}, esConfig), {}, {
663
- body: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, body), {}, {
704
+ const response = await elasticsearch.search({
705
+ ...esConfig,
706
+ body: {
707
+ ...body,
664
708
  sort: undefined,
665
709
  limit: undefined,
666
710
  size: 0,
@@ -673,8 +717,8 @@ const createPageStorageOperations = params => {
673
717
  }
674
718
  }
675
719
  }
676
- })
677
- }));
720
+ }
721
+ });
678
722
  const tags = response.body.aggregations["tags"];
679
723
  if (!tags || Array.isArray(tags.buckets) === false) {
680
724
  return [];
@@ -694,9 +738,10 @@ const createPageStorageOperations = params => {
694
738
  } = params;
695
739
  const queryAllParams = {
696
740
  entity,
697
- partitionKey: (0, _keys.createPartitionKey)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
741
+ partitionKey: (0, _keys.createPartitionKey)({
742
+ ...where,
698
743
  id: where.pid
699
- })),
744
+ }),
700
745
  options: {
701
746
  beginsWith: "REV#",
702
747
  reverse: false
@@ -1 +1 @@
1
- {"version":3,"names":["_omit","_interopRequireDefault","require","_error","_cleanup","_configurations","_apiElasticsearch","_elasticsearchQueryBody","_SearchLatestPagesPlugin","_SearchPublishedPagesPlugin","_query","_batchWrite","_helpers","_keys","_sort","_PageDynamoDbElasticsearchFieldPlugin","removePageAttributes","item","omit","createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","input","versionKeys","PK","createPartitionKey","SK","createSortKey","latestKeys","_objectSpread2","default","createLatestSortKey","items","putBatch","TYPE","createBasicType","createLatestType","esData","getESLatestPageData","batchWriteAll","table","put","index","configurations","es","data","ex","WebinyError","message","code","createFrom","latestPage","original","update","keys","latestPageResult","get","cleanupItem","Item","id","push","deleteOne","publishedPage","partitionKey","deleteBatch","esItems","createPublishedSortKey","createPathPartitionKey","createPathSortKey","previousLatestPage","previousLatestRecord","queryOne","options","lt","reverse","length","deleteAll","queryAllParams","gte","revisions","queryAll","publishedPathEntryDeleted","revision","status","path","publish","getESPublishedPageData","createPublishedPathType","createPublishedType","unpublish","where","pid","published","version","includes","Number","split","pop","sortKey","result","list","latest","after","previousCursor","limit","initialLimit","createLimit","body","createElasticsearchQueryBody","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","meta","hasMoreItems","totalCount","cursor","hits","total","map","_source","encodeCursor","value","listTags","tenant","locale","undefined","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith","fields","PageDynamoDbElasticsearchFieldPlugin","sortItems","delete","exports"],"sources":["index.ts"],"sourcesContent":["import {\n Page,\n PageStorageOperations,\n PageStorageOperationsCreateFromParams,\n PageStorageOperationsCreateParams,\n PageStorageOperationsDeleteAllParams,\n PageStorageOperationsDeleteParams,\n PageStorageOperationsGetParams,\n PageStorageOperationsListParams,\n PageStorageOperationsListResponse,\n PageStorageOperationsListRevisionsParams,\n PageStorageOperationsListTagsParams,\n PageStorageOperationsPublishParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n ElasticsearchBoolQueryConfig,\n ElasticsearchSearchResponse\n} from \"@webiny/api-elasticsearch/types\";\nimport { configurations } from \"~/configurations\";\nimport { encodeCursor, createLimit } from \"@webiny/api-elasticsearch\";\nimport { createElasticsearchQueryBody } from \"./elasticsearchQueryBody\";\nimport { SearchLatestPagesPlugin } from \"~/plugins/definitions/SearchLatestPagesPlugin\";\nimport { SearchPublishedPagesPlugin } from \"~/plugins/definitions/SearchPublishedPagesPlugin\";\nimport { DbItem, queryAll, QueryAllParams, queryOne } from \"@webiny/db-dynamodb/utils/query\";\nimport { SearchPagesPlugin } from \"~/plugins/definitions/SearchPagesPlugin\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { getESLatestPageData, getESPublishedPageData } from \"./helpers\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n createBasicType,\n createLatestSortKey,\n createLatestType,\n createPartitionKey,\n createPathPartitionKey,\n createPathSortKey,\n createPublishedPathType,\n createPublishedSortKey,\n createPublishedType,\n createSortKey\n} from \"./keys\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\n\n/**\n * This function removes attributes that were once present in the Page record, which we no longer need.\n */\nfunction removePageAttributes(item: Page): Page {\n return omit(item, [\"home\", \"notFound\", \"visibility\"]) as Page;\n}\n\nexport interface CreatePageStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\nexport const createPageStorageOperations = (\n params: CreatePageStorageOperationsParams\n): PageStorageOperations => {\n const { entity, esEntity, elasticsearch, plugins } = params;\n\n const create = async (params: PageStorageOperationsCreateParams): Promise<Page> => {\n const { page, input } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...page,\n ...versionKeys,\n TYPE: createBasicType()\n }),\n entity.putBatch({\n ...page,\n ...latestKeys,\n TYPE: createLatestType()\n })\n ];\n const esData = getESLatestPageData(plugins, page, input);\n try {\n await batchWriteAll({\n table: entity.table,\n items: items\n });\n await esEntity.put({\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page.\",\n ex.code || \"CREATE_PAGE_ERROR\",\n {\n versionKeys,\n latestKeys,\n page\n }\n );\n }\n };\n\n const createFrom = async (params: PageStorageOperationsCreateFromParams): Promise<Page> => {\n const { page, latestPage, original } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n ...versionKeys\n }),\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n })\n ];\n\n const esData = getESLatestPageData(plugins, page);\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n\n await esEntity.put({\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page from existing page.\",\n ex.code || \"CREATE_PAGE_FROM_ERROR\",\n {\n versionKeys,\n latestKeys,\n latestPage,\n original,\n page\n }\n );\n }\n };\n\n const update = async (params: PageStorageOperationsUpdateParams): Promise<Page> => {\n const { original, page, input } = params;\n\n const keys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n\n const latestKeys = {\n ...keys,\n SK: createLatestSortKey()\n };\n const latestPageResult = await entity.get(latestKeys);\n const latestPage = cleanupItem(entity, latestPageResult ? latestPageResult.Item : null);\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n ...keys\n })\n ];\n\n const esData = getESLatestPageData(plugins, page, input);\n\n if (latestPage && latestPage.id === page.id) {\n /**\n * We also update the regular record.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n })\n );\n }\n /**\n * Unfortunately we cannot push regular and es record in the batch write because they are two separate tables.\n */\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n\n await esEntity.put({\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n });\n\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update existing page.\",\n ex.code || \"UPDATE_PAGE_ERROR\",\n {\n original,\n page,\n latestPage,\n latestKeys,\n keys\n }\n );\n }\n };\n\n /**\n * In case of delete, we must delete records:\n * - revision\n * - path if published\n * Update:\n * - latest\n */\n const deleteOne = async (\n params: PageStorageOperationsDeleteParams\n ): Promise<[Page, Page | null]> => {\n const { page, latestPage, publishedPage } = params;\n\n const partitionKey = createPartitionKey(page);\n\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n if (publishedPage && publishedPage.id === page.id) {\n items.push(\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n })\n );\n esItems.push(\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n let previousLatestPage: Page | null = null;\n if (latestPage && latestPage.id === page.id) {\n const previousLatestRecord = await queryOne<Page>({\n entity,\n partitionKey,\n options: {\n lt: createSortKey(latestPage),\n reverse: true\n }\n });\n if (previousLatestRecord) {\n items.push(\n entity.putBatch({\n ...previousLatestRecord,\n TYPE: createLatestType(),\n PK: partitionKey,\n SK: createLatestSortKey()\n })\n );\n esItems.push(\n esEntity.putBatch({\n PK: partitionKey,\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, previousLatestRecord)\n })\n );\n previousLatestPage = cleanupItem(entity, previousLatestRecord);\n }\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch write all the page records.\",\n ex.code || \"BATCH_WRITE_RECORDS_ERROR\"\n );\n }\n if (esItems.length === 0) {\n return [page, previousLatestPage];\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch write all the page Elasticsearch records.\",\n ex.code || \"BATCH_WRITE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page, previousLatestPage];\n };\n\n /**\n * In case of deleteAll, we must delete records:\n * - latest\n * - published\n * - path if published\n * - revision\n * - es latest\n * - es published\n */\n const deleteAll = async (params: PageStorageOperationsDeleteAllParams): Promise<[Page]> => {\n const { page } = params;\n\n const partitionKey = createPartitionKey(page);\n const queryAllParams = {\n entity,\n partitionKey,\n options: {\n gte: \" \"\n }\n };\n let revisions: DbItem<Page>[];\n try {\n revisions = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query for all revisions of the page.\",\n ex.code || \"LIST_REVISIONS_ERROR\",\n {\n params: queryAllParams\n }\n );\n }\n\n /**\n * We need to go through all possible entries and delete them.\n * Also, delete the published entry path record.\n */\n const items = [];\n let publishedPathEntryDeleted = false;\n for (const revision of revisions) {\n if (revision.status === \"published\" && !publishedPathEntryDeleted) {\n publishedPathEntryDeleted = true;\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: revision.path\n })\n );\n }\n items.push(\n entity.deleteBatch({\n PK: revision.PK,\n SK: revision.SK\n })\n );\n }\n const esItems = [\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createLatestSortKey()\n })\n ];\n /**\n * Delete published record if it is published.\n */\n if (publishedPathEntryDeleted) {\n esItems.push(\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page records.\",\n ex.code || \"DELETE_RECORDS_ERROR\"\n );\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page Elasticsearch records.\",\n ex.code || \"DELETE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page];\n };\n\n const publish = async (params: PageStorageOperationsPublishParams): Promise<Page> => {\n const { page, latestPage, publishedPage } = params;\n\n page.status = \"published\";\n\n /**\n * Update the given revision of the page.\n */\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n /**\n * If we are publishing the latest revision, update the latest revision\n * status in ES. We also need to update the latest page revision entry in ES.\n */\n if (latestPage.id === page.id) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n })\n );\n }\n /**\n * If we already have a published revision, and it's not the revision being published:\n * - set the existing published revision to \"unpublished\"\n */\n if (publishedPage && publishedPage.id !== page.id) {\n items.push(\n entity.putBatch({\n ...publishedPage,\n status: \"unpublished\",\n PK: createPartitionKey(publishedPage),\n SK: createSortKey(publishedPage)\n })\n );\n /**\n * Remove old published path if required.\n */\n if (publishedPage.path !== page.path) {\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: publishedPage.path\n })\n );\n }\n }\n\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey(),\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page)\n })\n );\n\n /**\n * Update or insert published path.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n })\n );\n /**\n * Update or insert published page.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createPublishedType(),\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n })\n );\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update all the page records when publishing.\",\n ex.code || \"UPDATE_RECORDS_ERROR\"\n );\n }\n /**\n * No point in continuing if there are no items in Elasticsearch data\n */\n if (esItems.length === 0) {\n return page;\n }\n try {\n await batchWriteAll({\n table: esEntity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when publishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const unpublish = async (params: PageStorageOperationsUnpublishParams): Promise<Page> => {\n const { page, latestPage } = params;\n\n page.status = \"unpublished\";\n\n const items = [\n entity.deleteBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n }),\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n }),\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n /*\n * If we are unpublishing the latest revision, let's also update the latest revision entry's status in ES.\n */\n if (latestPage.id === page.id) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n })\n );\n }\n\n esItems.push(\n esEntity.deleteBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n })\n );\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update all the page records when unpublishing.\",\n ex.code || \"UPDATE_RECORDS_ERROR\"\n );\n }\n /**\n * No need to go further if no Elasticsearch items to be applied.\n */\n if (esItems.length === 0) {\n return page;\n }\n try {\n await batchWriteAll({\n table: esEntity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when unpublishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const get = async (params: PageStorageOperationsGetParams): Promise<Page | null> => {\n const { where } = params;\n const { pid, id, path, published } = where;\n let { version } = where;\n /**\n * In case of having full ID and not having version we can take the version from the id.\n */\n if (id && id.includes(\"#\") && !version) {\n version = Number(id.split(\"#\").pop());\n }\n let partitionKey: string | null = null;\n let sortKey: string;\n if (path) {\n partitionKey = createPathPartitionKey(where);\n sortKey = path;\n } else if (published) {\n sortKey = createPublishedSortKey();\n } else if (version) {\n sortKey = createSortKey({\n version\n });\n } else {\n sortKey = createLatestSortKey();\n }\n /**\n * If partition key is still undefined, create one with id or pid\n */\n if (!partitionKey) {\n partitionKey = createPartitionKey({\n ...where,\n id: pid || (id as string)\n });\n }\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page by given params.\",\n ex.code || \"GET_PAGE_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n const list = async (\n params: PageStorageOperationsListParams\n ): Promise<PageStorageOperationsListResponse> => {\n /**\n * We do not allow loading both published and latest at the same time.\n * @see PageStorageOperationsListWhere\n */\n if (params.where.published && params.where.latest) {\n throw new WebinyError(\n \"Both published and latest cannot be defined at the same time.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n const { after: previousCursor = null, limit: initialLimit } = params;\n\n const limit = createLimit(initialLimit, 50);\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n ...params.where\n },\n limit,\n after: previousCursor,\n plugins\n });\n\n let searchPlugins: SearchPagesPlugin[] = [];\n if (params.where.published) {\n searchPlugins = plugins.byType<SearchPublishedPagesPlugin>(\n SearchPublishedPagesPlugin.type\n );\n } else if (params.where.latest) {\n searchPlugins = plugins.byType<SearchLatestPagesPlugin>(SearchLatestPagesPlugin.type);\n } else {\n throw new WebinyError(\n \"Only published or latest can be listed. Missing where condition.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n for (const plugin of searchPlugins) {\n /**\n * Apply query modifications\n */\n plugin.modifyQuery({\n query: body.query as unknown as ElasticsearchBoolQueryConfig,\n args: params,\n plugins\n });\n\n /**\n * Apply sort modifications\n */\n plugin.modifySort({\n sort: body.sort,\n args: params,\n plugins\n });\n }\n\n let response: ElasticsearchSearchResponse<Page>;\n const esConfig = configurations.es(params.where);\n try {\n response = await elasticsearch.search({\n ...esConfig,\n body\n });\n } catch (ex) {\n /**\n * Do not throw the error if Elasticsearch index does not exist.\n * In some CRUDs we try to get list of pages but index was not created yet.\n */\n if (ex.message === \"index_not_found_exception\") {\n return {\n items: [],\n meta: {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null\n }\n };\n }\n throw new WebinyError(\n ex.message || \"Could not load pages by given Elasticsearch body.\",\n ex.code || \"LIST_PAGES_ERROR\",\n {\n body\n }\n );\n }\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source).map(item => removePageAttributes(item));\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const cursor =\n items.length > 0 && hasMoreItems\n ? encodeCursor(hits[items.length - 1].sort) || null\n : null;\n return {\n items,\n meta: {\n hasMoreItems,\n totalCount: total.value,\n cursor\n }\n };\n };\n\n const listTags = async (params: PageStorageOperationsListTagsParams): Promise<string[]> => {\n const { where } = params;\n\n const tenant: string = where.tenant;\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n locale: where.locale,\n search: undefined,\n tenant\n },\n sort: [],\n after: null,\n limit: 100000,\n plugins\n });\n\n const esConfig = configurations.es(where);\n\n try {\n const response: ElasticsearchSearchResponse<string> = await elasticsearch.search({\n ...esConfig,\n body: {\n ...body,\n sort: undefined,\n limit: undefined,\n size: 0,\n aggs: {\n tags: {\n terms: {\n field: \"tags.keyword\",\n include: `.*${where.search}.*`,\n size: 10\n }\n }\n }\n }\n });\n\n const tags = response.body.aggregations[\"tags\"];\n if (!tags || Array.isArray(tags.buckets) === false) {\n return [];\n }\n return tags.buckets.map(item => item.key);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list tags by given parameters.\",\n ex.code || \"LIST_TAGS_ERROR\",\n {\n body,\n where\n }\n );\n }\n };\n\n const listRevisions = async (\n params: PageStorageOperationsListRevisionsParams\n ): Promise<Page[]> => {\n const { where, sort } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n ...where,\n id: where.pid\n }),\n options: {\n beginsWith: \"REV#\",\n reverse: false\n }\n };\n\n let items: Page[] = [];\n try {\n items = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all the revisions from requested page.\",\n ex.code || \"LOAD_PAGE_REVISIONS_ERROR\",\n {\n params\n }\n );\n }\n\n const fields = plugins.byType<PageDynamoDbElasticsearchFieldPlugin>(\n PageDynamoDbElasticsearchFieldPlugin.type\n );\n\n return sortItems({\n items: items.map(item => removePageAttributes(item)),\n fields,\n sort\n });\n };\n\n return {\n create,\n createFrom,\n update,\n delete: deleteOne,\n deleteAll: deleteAll,\n publish,\n unpublish,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_omit","_interopRequireDefault","require","_error","_cleanup","_configurations","_apiElasticsearch","_elasticsearchQueryBody","_SearchLatestPagesPlugin","_SearchPublishedPagesPlugin","_query","_batchWrite","_helpers","_keys","_sort","_PageDynamoDbElasticsearchFieldPlugin","_dbDynamodb","removePageAttributes","item","omit","createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","input","versionKeys","PK","createPartitionKey","SK","createSortKey","latestKeys","createLatestSortKey","items","putBatch","TYPE","createBasicType","createLatestType","esData","getESLatestPageData","batchWriteAll","table","put","index","configurations","es","data","ex","WebinyError","message","code","createFrom","latestPage","original","update","keys","getClean","id","push","deleteOne","publishedPage","partitionKey","deleteBatch","esItems","createPublishedSortKey","createPathPartitionKey","createPathSortKey","previousLatestPage","previousLatestRecord","queryOne","options","lt","reverse","cleanupItem","length","deleteAll","queryAllParams","gte","revisions","queryAll","publishedPathEntryDeleted","revision","status","path","publish","getESPublishedPageData","createPublishedPathType","createPublishedType","unpublish","get","where","pid","published","version","includes","Number","split","pop","sortKey","list","latest","after","previousCursor","limit","initialLimit","createLimit","body","createElasticsearchQueryBody","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","meta","hasMoreItems","totalCount","cursor","hits","total","map","_source","encodeCursor","value","listTags","tenant","locale","undefined","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith","fields","PageDynamoDbElasticsearchFieldPlugin","sortItems","delete","exports"],"sources":["index.ts"],"sourcesContent":["import {\n Page,\n PageStorageOperations,\n PageStorageOperationsCreateFromParams,\n PageStorageOperationsCreateParams,\n PageStorageOperationsDeleteAllParams,\n PageStorageOperationsDeleteParams,\n PageStorageOperationsGetParams,\n PageStorageOperationsListParams,\n PageStorageOperationsListResponse,\n PageStorageOperationsListRevisionsParams,\n PageStorageOperationsListTagsParams,\n PageStorageOperationsPublishParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n ElasticsearchBoolQueryConfig,\n ElasticsearchSearchResponse\n} from \"@webiny/api-elasticsearch/types\";\nimport { configurations } from \"~/configurations\";\nimport { createLimit, encodeCursor } from \"@webiny/api-elasticsearch\";\nimport { createElasticsearchQueryBody } from \"./elasticsearchQueryBody\";\nimport { SearchLatestPagesPlugin } from \"~/plugins/definitions/SearchLatestPagesPlugin\";\nimport { SearchPublishedPagesPlugin } from \"~/plugins/definitions/SearchPublishedPagesPlugin\";\nimport { DbItem, queryAll, QueryAllParams, queryOne } from \"@webiny/db-dynamodb/utils/query\";\nimport { SearchPagesPlugin } from \"~/plugins/definitions/SearchPagesPlugin\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { getESLatestPageData, getESPublishedPageData } from \"./helpers\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n createBasicType,\n createLatestSortKey,\n createLatestType,\n createPartitionKey,\n createPathPartitionKey,\n createPathSortKey,\n createPublishedPathType,\n createPublishedSortKey,\n createPublishedType,\n createSortKey\n} from \"./keys\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\nimport { getClean, put } from \"@webiny/db-dynamodb\";\n\n/**\n * This function removes attributes that were once present in the Page record, which we no longer need.\n */\nfunction removePageAttributes(item: Page): Page {\n return omit(item, [\"home\", \"notFound\", \"visibility\"]) as Page;\n}\n\nexport interface CreatePageStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\nexport const createPageStorageOperations = (\n params: CreatePageStorageOperationsParams\n): PageStorageOperations => {\n const { entity, esEntity, elasticsearch, plugins } = params;\n\n const create = async (params: PageStorageOperationsCreateParams): Promise<Page> => {\n const { page, input } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...page,\n ...versionKeys,\n TYPE: createBasicType()\n }),\n entity.putBatch({\n ...page,\n ...latestKeys,\n TYPE: createLatestType()\n })\n ];\n const esData = getESLatestPageData(plugins, page, input);\n try {\n await batchWriteAll({\n table: entity.table,\n items: items\n });\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page.\",\n ex.code || \"CREATE_PAGE_ERROR\",\n {\n versionKeys,\n latestKeys,\n page\n }\n );\n }\n };\n\n const createFrom = async (params: PageStorageOperationsCreateFromParams): Promise<Page> => {\n const { page, latestPage, original } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n ...versionKeys\n }),\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n })\n ];\n\n const esData = getESLatestPageData(plugins, page);\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page from existing page.\",\n ex.code || \"CREATE_PAGE_FROM_ERROR\",\n {\n versionKeys,\n latestKeys,\n latestPage,\n original,\n page\n }\n );\n }\n };\n\n const update = async (params: PageStorageOperationsUpdateParams): Promise<Page> => {\n const { original, page, input } = params;\n\n const keys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n\n const latestKeys = {\n ...keys,\n SK: createLatestSortKey()\n };\n const latestPage = await getClean<Page>({\n entity,\n keys: latestKeys\n });\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n ...keys\n })\n ];\n\n const esData = getESLatestPageData(plugins, page, input);\n\n if (latestPage && latestPage?.id === page.id) {\n /**\n * We also update the regular record.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n })\n );\n }\n /**\n * Unfortunately we cannot push regular and es record in the batch write because they are two separate tables.\n */\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update existing page.\",\n ex.code || \"UPDATE_PAGE_ERROR\",\n {\n original,\n page,\n latestPage,\n latestKeys,\n keys\n }\n );\n }\n };\n\n /**\n * In case of delete, we must delete records:\n * - revision\n * - path if published\n * Update:\n * - latest\n */\n const deleteOne = async (\n params: PageStorageOperationsDeleteParams\n ): Promise<[Page, Page | null]> => {\n const { page, latestPage, publishedPage } = params;\n\n const partitionKey = createPartitionKey(page);\n\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n if (publishedPage && publishedPage.id === page.id) {\n items.push(\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n })\n );\n esItems.push(\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n let previousLatestPage: Page | null = null;\n if (latestPage && latestPage.id === page.id) {\n const previousLatestRecord = await queryOne<Page>({\n entity,\n partitionKey,\n options: {\n lt: createSortKey(latestPage),\n reverse: true\n }\n });\n if (previousLatestRecord) {\n items.push(\n entity.putBatch({\n ...previousLatestRecord,\n TYPE: createLatestType(),\n PK: partitionKey,\n SK: createLatestSortKey()\n })\n );\n esItems.push(\n esEntity.putBatch({\n PK: partitionKey,\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, previousLatestRecord)\n })\n );\n previousLatestPage = cleanupItem(entity, previousLatestRecord);\n }\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch write all the page records.\",\n ex.code || \"BATCH_WRITE_RECORDS_ERROR\"\n );\n }\n if (esItems.length === 0) {\n return [page, previousLatestPage];\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch write all the page Elasticsearch records.\",\n ex.code || \"BATCH_WRITE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page, previousLatestPage];\n };\n\n /**\n * In case of deleteAll, we must delete records:\n * - latest\n * - published\n * - path if published\n * - revision\n * - es latest\n * - es published\n */\n const deleteAll = async (params: PageStorageOperationsDeleteAllParams): Promise<[Page]> => {\n const { page } = params;\n\n const partitionKey = createPartitionKey(page);\n const queryAllParams = {\n entity,\n partitionKey,\n options: {\n gte: \" \"\n }\n };\n let revisions: DbItem<Page>[];\n try {\n revisions = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query for all revisions of the page.\",\n ex.code || \"LIST_REVISIONS_ERROR\",\n {\n params: queryAllParams\n }\n );\n }\n\n /**\n * We need to go through all possible entries and delete them.\n * Also, delete the published entry path record.\n */\n const items = [];\n let publishedPathEntryDeleted = false;\n for (const revision of revisions) {\n if (revision.status === \"published\" && !publishedPathEntryDeleted) {\n publishedPathEntryDeleted = true;\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: revision.path\n })\n );\n }\n items.push(\n entity.deleteBatch({\n PK: revision.PK,\n SK: revision.SK\n })\n );\n }\n const esItems = [\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createLatestSortKey()\n })\n ];\n /**\n * Delete published record if it is published.\n */\n if (publishedPathEntryDeleted) {\n esItems.push(\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page records.\",\n ex.code || \"DELETE_RECORDS_ERROR\"\n );\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page Elasticsearch records.\",\n ex.code || \"DELETE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page];\n };\n\n const publish = async (params: PageStorageOperationsPublishParams): Promise<Page> => {\n const { page, latestPage, publishedPage } = params;\n\n page.status = \"published\";\n\n /**\n * Update the given revision of the page.\n */\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n /**\n * If we are publishing the latest revision, update the latest revision\n * status in ES. We also need to update the latest page revision entry in ES.\n */\n if (latestPage.id === page.id) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n })\n );\n }\n /**\n * If we already have a published revision, and it's not the revision being published:\n * - set the existing published revision to \"unpublished\"\n */\n if (publishedPage && publishedPage.id !== page.id) {\n items.push(\n entity.putBatch({\n ...publishedPage,\n status: \"unpublished\",\n PK: createPartitionKey(publishedPage),\n SK: createSortKey(publishedPage)\n })\n );\n /**\n * Remove old published path if required.\n */\n if (publishedPage.path !== page.path) {\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: publishedPage.path\n })\n );\n }\n }\n\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey(),\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page)\n })\n );\n\n /**\n * Update or insert published path.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n })\n );\n /**\n * Update or insert published page.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createPublishedType(),\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n })\n );\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update all the page records when publishing.\",\n ex.code || \"UPDATE_RECORDS_ERROR\"\n );\n }\n /**\n * No point in continuing if there are no items in Elasticsearch data\n */\n if (esItems.length === 0) {\n return page;\n }\n try {\n await batchWriteAll({\n table: esEntity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when publishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const unpublish = async (params: PageStorageOperationsUnpublishParams): Promise<Page> => {\n const { page, latestPage } = params;\n\n page.status = \"unpublished\";\n\n const items = [\n entity.deleteBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n }),\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n }),\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n /*\n * If we are unpublishing the latest revision, let's also update the latest revision entry's status in ES.\n */\n if (latestPage.id === page.id) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n })\n );\n }\n\n esItems.push(\n esEntity.deleteBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n })\n );\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update all the page records when unpublishing.\",\n ex.code || \"UPDATE_RECORDS_ERROR\"\n );\n }\n /**\n * No need to go further if no Elasticsearch items to be applied.\n */\n if (esItems.length === 0) {\n return page;\n }\n try {\n await batchWriteAll({\n table: esEntity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when unpublishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const get = async (params: PageStorageOperationsGetParams): Promise<Page | null> => {\n const { where } = params;\n const { pid, id, path, published } = where;\n let { version } = where;\n /**\n * In case of having full ID and not having version we can take the version from the id.\n */\n if (id && id.includes(\"#\") && !version) {\n version = Number(id.split(\"#\").pop());\n }\n let partitionKey: string | null = null;\n let sortKey: string;\n if (path) {\n partitionKey = createPathPartitionKey(where);\n sortKey = path;\n } else if (published) {\n sortKey = createPublishedSortKey();\n } else if (version) {\n sortKey = createSortKey({\n version\n });\n } else {\n sortKey = createLatestSortKey();\n }\n /**\n * If partition key is still undefined, create one with id or pid\n */\n if (!partitionKey) {\n partitionKey = createPartitionKey({\n ...where,\n id: pid || (id as string)\n });\n }\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n try {\n return await getClean({\n entity,\n keys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page by given params.\",\n ex.code || \"GET_PAGE_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n const list = async (\n params: PageStorageOperationsListParams\n ): Promise<PageStorageOperationsListResponse> => {\n /**\n * We do not allow loading both published and latest at the same time.\n * @see PageStorageOperationsListWhere\n */\n if (params.where.published && params.where.latest) {\n throw new WebinyError(\n \"Both published and latest cannot be defined at the same time.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n const { after: previousCursor = null, limit: initialLimit } = params;\n\n const limit = createLimit(initialLimit, 50);\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n ...params.where\n },\n limit,\n after: previousCursor,\n plugins\n });\n\n let searchPlugins: SearchPagesPlugin[] = [];\n if (params.where.published) {\n searchPlugins = plugins.byType<SearchPublishedPagesPlugin>(\n SearchPublishedPagesPlugin.type\n );\n } else if (params.where.latest) {\n searchPlugins = plugins.byType<SearchLatestPagesPlugin>(SearchLatestPagesPlugin.type);\n } else {\n throw new WebinyError(\n \"Only published or latest can be listed. Missing where condition.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n for (const plugin of searchPlugins) {\n /**\n * Apply query modifications\n */\n plugin.modifyQuery({\n query: body.query as unknown as ElasticsearchBoolQueryConfig,\n args: params,\n plugins\n });\n\n /**\n * Apply sort modifications\n */\n plugin.modifySort({\n sort: body.sort,\n args: params,\n plugins\n });\n }\n\n let response: ElasticsearchSearchResponse<Page>;\n const esConfig = configurations.es(params.where);\n try {\n response = await elasticsearch.search({\n ...esConfig,\n body\n });\n } catch (ex) {\n /**\n * Do not throw the error if Elasticsearch index does not exist.\n * In some CRUDs we try to get list of pages but index was not created yet.\n */\n if (ex.message === \"index_not_found_exception\") {\n return {\n items: [],\n meta: {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null\n }\n };\n }\n throw new WebinyError(\n ex.message || \"Could not load pages by given Elasticsearch body.\",\n ex.code || \"LIST_PAGES_ERROR\",\n {\n body\n }\n );\n }\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source).map(item => removePageAttributes(item));\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const cursor =\n items.length > 0 && hasMoreItems\n ? encodeCursor(hits[items.length - 1].sort) || null\n : null;\n return {\n items,\n meta: {\n hasMoreItems,\n totalCount: total.value,\n cursor\n }\n };\n };\n\n const listTags = async (params: PageStorageOperationsListTagsParams): Promise<string[]> => {\n const { where } = params;\n\n const tenant: string = where.tenant;\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n locale: where.locale,\n search: undefined,\n tenant\n },\n sort: [],\n after: null,\n limit: 100000,\n plugins\n });\n\n const esConfig = configurations.es(where);\n\n try {\n const response: ElasticsearchSearchResponse<string> = await elasticsearch.search({\n ...esConfig,\n body: {\n ...body,\n sort: undefined,\n limit: undefined,\n size: 0,\n aggs: {\n tags: {\n terms: {\n field: \"tags.keyword\",\n include: `.*${where.search}.*`,\n size: 10\n }\n }\n }\n }\n });\n\n const tags = response.body.aggregations[\"tags\"];\n if (!tags || Array.isArray(tags.buckets) === false) {\n return [];\n }\n return tags.buckets.map(item => item.key);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list tags by given parameters.\",\n ex.code || \"LIST_TAGS_ERROR\",\n {\n body,\n where\n }\n );\n }\n };\n\n const listRevisions = async (\n params: PageStorageOperationsListRevisionsParams\n ): Promise<Page[]> => {\n const { where, sort } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n ...where,\n id: where.pid\n }),\n options: {\n beginsWith: \"REV#\",\n reverse: false\n }\n };\n\n let items: Page[] = [];\n try {\n items = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all the revisions from requested page.\",\n ex.code || \"LOAD_PAGE_REVISIONS_ERROR\",\n {\n params\n }\n );\n }\n\n const fields = plugins.byType<PageDynamoDbElasticsearchFieldPlugin>(\n PageDynamoDbElasticsearchFieldPlugin.type\n );\n\n return sortItems({\n items: items.map(item => removePageAttributes(item)),\n fields,\n sort\n });\n };\n\n return {\n create,\n createFrom,\n update,\n delete: deleteOne,\n deleteAll: deleteAll,\n publish,\n unpublish,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"],"mappings":"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"}