@webiny/api-page-builder-so-ddb-es 5.25.0-beta.1 → 5.25.0-beta.4

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.
package/index.js CHANGED
@@ -100,7 +100,11 @@ const createStorageOperations = params => {
100
100
  /**
101
101
  * Page fields required for filtering/sorting.
102
102
  */
103
- (0, _fields4.createPagesElasticsearchFields)()]);
103
+ (0, _fields4.createPagesElasticsearchFields)(),
104
+ /**
105
+ * Page fields required for filtering/sorting when using dynamodb.
106
+ */
107
+ (0, _fields4.createPagesDynamoDbFields)()]);
104
108
  const entities = {
105
109
  settings: (0, _settingsEntity.createSettingsEntity)({
106
110
  entityName: _types.ENTITIES.SETTINGS,
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["createStorageOperations","params","documentClient","elasticsearch","table","esTable","attributes","plugins","customPlugins","tableInstance","tableElasticsearchInstance","PluginsContainer","entities","settings","entityName","ENTITIES","SETTINGS","system","SYSTEM","categories","CATEGORIES","menus","MENUS","pageElements","PAGE_ELEMENTS","pages","PAGES","pagesEs","PAGES_ES","init","context","pageBuilder","onBeforeInstall","subscribe","tenant","getEntities","getTable","getEsTable","entity","esEntity"],"mappings":"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","sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createElasticsearchTable } from \"~/definitions/tableElasticsearch\";\nimport { createSettingsEntity } from \"~/definitions/settingsEntity\";\nimport { createSystemEntity } from \"./definitions/systemEntity\";\nimport { createCategoryEntity } from \"~/definitions/categoryEntity\";\nimport { createMenuEntity } from \"~/definitions/menuEntity\";\nimport { createPageElementEntity } from \"~/definitions/pageElementEntity\";\nimport { createPageEntity } from \"~/definitions/pageEntity\";\nimport { createPageElasticsearchEntity } from \"~/definitions/pageElasticsearchEntity\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { getElasticsearchOperators } from \"@webiny/api-elasticsearch/operators\";\nimport { execOnBeforeInstall } from \"~/operations/system/installation\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createCategoryDynamoDbFields } from \"~/operations/category/fields\";\nimport { createCategoryStorageOperations } from \"~/operations/category\";\nimport { createMenuDynamoDbFields } from \"~/operations/menu/fields\";\nimport { createMenuStorageOperations } from \"~/operations/menu\";\nimport { createPageElementDynamoDbFields } from \"~/operations/pageElement/fields\";\nimport { createPageElementStorageOperations } from \"~/operations/pageElement\";\nimport { createPagesElasticsearchFields } from \"~/operations/pages/fields\";\nimport { createPageStorageOperations } from \"~/operations/pages\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const {\n documentClient,\n elasticsearch,\n table,\n esTable,\n attributes,\n plugins: customPlugins\n } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n const tableElasticsearchInstance = createElasticsearchTable({\n table: esTable,\n documentClient\n });\n\n const plugins = new PluginsContainer([\n /**\n * User defined custom plugins.\n */\n ...(customPlugins || []),\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Elasticsearch operators.\n */\n getElasticsearchOperators(),\n /**\n * Category fields required for filtering/sorting.\n */\n createCategoryDynamoDbFields(),\n /**\n * Menu fields required for filtering/sorting.\n */\n createMenuDynamoDbFields(),\n /**\n * Page element fields required for filtering/sorting.\n */\n createPageElementDynamoDbFields(),\n /**\n * Page fields required for filtering/sorting.\n */\n createPagesElasticsearchFields()\n ]);\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n categories: createCategoryEntity({\n entityName: ENTITIES.CATEGORIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.CATEGORIES] : {}\n }),\n menus: createMenuEntity({\n entityName: ENTITIES.MENUS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MENUS] : {}\n }),\n pageElements: createPageElementEntity({\n entityName: ENTITIES.PAGE_ELEMENTS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_ELEMENTS] : {}\n }),\n pages: createPageEntity({\n entityName: ENTITIES.PAGES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES] : {}\n }),\n pagesEs: createPageElasticsearchEntity({\n entityName: ENTITIES.PAGES_ES,\n table: tableElasticsearchInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES_ES] : {}\n })\n };\n\n return {\n init: async context => {\n context.pageBuilder.onBeforeInstall.subscribe(async ({ tenant }) => {\n await execOnBeforeInstall({\n tenant,\n elasticsearch\n });\n });\n },\n plugins: [],\n getEntities: () => entities,\n getTable: () => tableInstance,\n getEsTable: () => tableElasticsearchInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n categories: createCategoryStorageOperations({\n entity: entities.categories,\n plugins\n }),\n menus: createMenuStorageOperations({\n entity: entities.menus,\n plugins\n }),\n pageElements: createPageElementStorageOperations({\n entity: entities.pageElements,\n plugins\n }),\n pages: createPageStorageOperations({\n entity: entities.pages,\n esEntity: entities.pagesEs,\n elasticsearch,\n plugins\n })\n };\n};\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["createStorageOperations","params","documentClient","elasticsearch","table","esTable","attributes","plugins","customPlugins","tableInstance","tableElasticsearchInstance","PluginsContainer","entities","settings","entityName","ENTITIES","SETTINGS","system","SYSTEM","categories","CATEGORIES","menus","MENUS","pageElements","PAGE_ELEMENTS","pages","PAGES","pagesEs","PAGES_ES","init","context","pageBuilder","onBeforeInstall","subscribe","tenant","getEntities","getTable","getEsTable","entity","esEntity"],"mappings":"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","sourcesContent":["import dynamoDbValueFilters from \"@webiny/db-dynamodb/plugins/filters\";\nimport { createSystemStorageOperations } from \"~/operations/system\";\nimport { ENTITIES, StorageOperationsFactory } from \"~/types\";\nimport { createTable } from \"~/definitions/table\";\nimport { createElasticsearchTable } from \"~/definitions/tableElasticsearch\";\nimport { createSettingsEntity } from \"~/definitions/settingsEntity\";\nimport { createSystemEntity } from \"./definitions/systemEntity\";\nimport { createCategoryEntity } from \"~/definitions/categoryEntity\";\nimport { createMenuEntity } from \"~/definitions/menuEntity\";\nimport { createPageElementEntity } from \"~/definitions/pageElementEntity\";\nimport { createPageEntity } from \"~/definitions/pageEntity\";\nimport { createPageElasticsearchEntity } from \"~/definitions/pageElasticsearchEntity\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { getElasticsearchOperators } from \"@webiny/api-elasticsearch/operators\";\nimport { execOnBeforeInstall } from \"~/operations/system/installation\";\nimport { createSettingsStorageOperations } from \"~/operations/settings\";\nimport { createCategoryDynamoDbFields } from \"~/operations/category/fields\";\nimport { createCategoryStorageOperations } from \"~/operations/category\";\nimport { createMenuDynamoDbFields } from \"~/operations/menu/fields\";\nimport { createMenuStorageOperations } from \"~/operations/menu\";\nimport { createPageElementDynamoDbFields } from \"~/operations/pageElement/fields\";\nimport { createPageElementStorageOperations } from \"~/operations/pageElement\";\nimport {\n createPagesElasticsearchFields,\n createPagesDynamoDbFields\n} from \"~/operations/pages/fields\";\nimport { createPageStorageOperations } from \"~/operations/pages\";\n\nexport const createStorageOperations: StorageOperationsFactory = params => {\n const {\n documentClient,\n elasticsearch,\n table,\n esTable,\n attributes,\n plugins: customPlugins\n } = params;\n\n const tableInstance = createTable({\n table,\n documentClient\n });\n const tableElasticsearchInstance = createElasticsearchTable({\n table: esTable,\n documentClient\n });\n\n const plugins = new PluginsContainer([\n /**\n * User defined custom plugins.\n */\n ...(customPlugins || []),\n /**\n * DynamoDB filter plugins for the where conditions.\n */\n dynamoDbValueFilters(),\n /**\n * Elasticsearch operators.\n */\n getElasticsearchOperators(),\n /**\n * Category fields required for filtering/sorting.\n */\n createCategoryDynamoDbFields(),\n /**\n * Menu fields required for filtering/sorting.\n */\n createMenuDynamoDbFields(),\n /**\n * Page element fields required for filtering/sorting.\n */\n createPageElementDynamoDbFields(),\n /**\n * Page fields required for filtering/sorting.\n */\n createPagesElasticsearchFields(),\n /**\n * Page fields required for filtering/sorting when using dynamodb.\n */\n createPagesDynamoDbFields()\n ]);\n\n const entities = {\n settings: createSettingsEntity({\n entityName: ENTITIES.SETTINGS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SETTINGS] : {}\n }),\n system: createSystemEntity({\n entityName: ENTITIES.SYSTEM,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.SYSTEM] : {}\n }),\n categories: createCategoryEntity({\n entityName: ENTITIES.CATEGORIES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.CATEGORIES] : {}\n }),\n menus: createMenuEntity({\n entityName: ENTITIES.MENUS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.MENUS] : {}\n }),\n pageElements: createPageElementEntity({\n entityName: ENTITIES.PAGE_ELEMENTS,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGE_ELEMENTS] : {}\n }),\n pages: createPageEntity({\n entityName: ENTITIES.PAGES,\n table: tableInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES] : {}\n }),\n pagesEs: createPageElasticsearchEntity({\n entityName: ENTITIES.PAGES_ES,\n table: tableElasticsearchInstance,\n attributes: attributes ? attributes[ENTITIES.PAGES_ES] : {}\n })\n };\n\n return {\n init: async context => {\n context.pageBuilder.onBeforeInstall.subscribe(async ({ tenant }) => {\n await execOnBeforeInstall({\n tenant,\n elasticsearch\n });\n });\n },\n plugins: [],\n getEntities: () => entities,\n getTable: () => tableInstance,\n getEsTable: () => tableElasticsearchInstance,\n system: createSystemStorageOperations({\n entity: entities.system\n }),\n settings: createSettingsStorageOperations({\n entity: entities.settings\n }),\n categories: createCategoryStorageOperations({\n entity: entities.categories,\n plugins\n }),\n menus: createMenuStorageOperations({\n entity: entities.menus,\n plugins\n }),\n pageElements: createPageElementStorageOperations({\n entity: entities.pageElements,\n plugins\n }),\n pages: createPageStorageOperations({\n entity: entities.pages,\n esEntity: entities.pagesEs,\n elasticsearch,\n plugins\n })\n };\n};\n"]}
@@ -1,2 +1,4 @@
1
1
  import { PageElasticsearchFieldPlugin } from "../../plugins/definitions/PageElasticsearchFieldPlugin";
2
+ import { PageDynamoDbElasticsearchFieldPlugin } from "../../plugins/definitions/PageDynamoDbElasticsearchFieldPlugin";
2
3
  export declare const createPagesElasticsearchFields: () => PageElasticsearchFieldPlugin[];
4
+ export declare const createPagesDynamoDbFields: () => PageDynamoDbElasticsearchFieldPlugin[];
@@ -3,10 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createPagesElasticsearchFields = void 0;
6
+ exports.createPagesElasticsearchFields = exports.createPagesDynamoDbFields = void 0;
7
7
 
8
8
  var _PageElasticsearchFieldPlugin = require("../../plugins/definitions/PageElasticsearchFieldPlugin");
9
9
 
10
+ var _PageDynamoDbElasticsearchFieldPlugin = require("../../plugins/definitions/PageDynamoDbElasticsearchFieldPlugin");
11
+
10
12
  const createPagesElasticsearchFields = () => [new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
11
13
  field: "createdOn",
12
14
  unmappedType: "date",
@@ -39,4 +41,14 @@ new _PageElasticsearchFieldPlugin.PageElasticsearchFieldPlugin({
39
41
  field: "*"
40
42
  })];
41
43
 
42
- exports.createPagesElasticsearchFields = createPagesElasticsearchFields;
44
+ exports.createPagesElasticsearchFields = createPagesElasticsearchFields;
45
+
46
+ const createPagesDynamoDbFields = () => {
47
+ return [new _PageDynamoDbElasticsearchFieldPlugin.PageDynamoDbElasticsearchFieldPlugin({
48
+ field: "version",
49
+ type: "number",
50
+ sortable: true
51
+ })];
52
+ };
53
+
54
+ exports.createPagesDynamoDbFields = createPagesDynamoDbFields;
@@ -1 +1 @@
1
- {"version":3,"sources":["fields.ts"],"names":["createPagesElasticsearchFields","PageElasticsearchFieldPlugin","field","unmappedType","keyword","path","searchable"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,8BAA8B,GAAG,MAAsC,CAChF,IAAIC,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,WADsB;AAE7BC,EAAAA,YAAY,EAAE,MAFe;AAG7BC,EAAAA,OAAO,EAAE;AAHoB,CAAjC,CADgF,EAMhF,IAAIH,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,SADsB;AAE7BC,EAAAA,YAAY,EAAE,MAFe;AAG7BC,EAAAA,OAAO,EAAE;AAHoB,CAAjC,CANgF,EAWhF,IAAIH,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,aADsB;AAE7BC,EAAAA,YAAY,EAAE,MAFe;AAG7BC,EAAAA,OAAO,EAAE;AAHoB,CAAjC,CAXgF,EAgBhF,IAAIH,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,WADsB;AAE7BG,EAAAA,IAAI,EAAE;AAFuB,CAAjC,CAhBgF,EAoBhF,IAAIJ,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,SADsB;AAE7BG,EAAAA,IAAI,EAAE;AAFuB,CAAjC,CApBgF,EAwBhF,IAAIJ,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,OADsB;AAE7BG,EAAAA,IAAI,EAAE,SAFuB;AAG7BF,EAAAA,YAAY,EAAE,MAHe;AAI7BC,EAAAA,OAAO,EAAE,IAJoB;AAK7BE,EAAAA,UAAU,EAAE;AALiB,CAAjC,CAxBgF;AA+BhF;AACJ;AACA;AACI,IAAIL,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE;AADsB,CAAjC,CAlCgF,CAA7E","sourcesContent":["import { PageElasticsearchFieldPlugin } from \"~/plugins/definitions/PageElasticsearchFieldPlugin\";\n\nexport const createPagesElasticsearchFields = (): PageElasticsearchFieldPlugin[] => [\n new PageElasticsearchFieldPlugin({\n field: \"createdOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"savedOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"publishedOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\"\n }),\n new PageElasticsearchFieldPlugin({\n field: \"ownedBy\",\n path: \"ownedBy.id\"\n }),\n new PageElasticsearchFieldPlugin({\n field: \"title\",\n path: \"titleLC\",\n unmappedType: \"text\",\n keyword: true,\n searchable: true\n }),\n /**\n * Defines all fields that are not strictly defined.\n */\n new PageElasticsearchFieldPlugin({\n field: \"*\"\n })\n];\n"]}
1
+ {"version":3,"sources":["fields.ts"],"names":["createPagesElasticsearchFields","PageElasticsearchFieldPlugin","field","unmappedType","keyword","path","searchable","createPagesDynamoDbFields","PageDynamoDbElasticsearchFieldPlugin","type","sortable"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,MAAMA,8BAA8B,GAAG,MAAsC,CAChF,IAAIC,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,WADsB;AAE7BC,EAAAA,YAAY,EAAE,MAFe;AAG7BC,EAAAA,OAAO,EAAE;AAHoB,CAAjC,CADgF,EAMhF,IAAIH,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,SADsB;AAE7BC,EAAAA,YAAY,EAAE,MAFe;AAG7BC,EAAAA,OAAO,EAAE;AAHoB,CAAjC,CANgF,EAWhF,IAAIH,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,aADsB;AAE7BC,EAAAA,YAAY,EAAE,MAFe;AAG7BC,EAAAA,OAAO,EAAE;AAHoB,CAAjC,CAXgF,EAgBhF,IAAIH,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,WADsB;AAE7BG,EAAAA,IAAI,EAAE;AAFuB,CAAjC,CAhBgF,EAoBhF,IAAIJ,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,SADsB;AAE7BG,EAAAA,IAAI,EAAE;AAFuB,CAAjC,CApBgF,EAwBhF,IAAIJ,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE,OADsB;AAE7BG,EAAAA,IAAI,EAAE,SAFuB;AAG7BF,EAAAA,YAAY,EAAE,MAHe;AAI7BC,EAAAA,OAAO,EAAE,IAJoB;AAK7BE,EAAAA,UAAU,EAAE;AALiB,CAAjC,CAxBgF;AA+BhF;AACJ;AACA;AACI,IAAIL,0DAAJ,CAAiC;AAC7BC,EAAAA,KAAK,EAAE;AADsB,CAAjC,CAlCgF,CAA7E;;;;AAuCA,MAAMK,yBAAyB,GAAG,MAA8C;AACnF,SAAO,CACH,IAAIC,0EAAJ,CAAyC;AACrCN,IAAAA,KAAK,EAAE,SAD8B;AAErCO,IAAAA,IAAI,EAAE,QAF+B;AAGrCC,IAAAA,QAAQ,EAAE;AAH2B,GAAzC,CADG,CAAP;AAOH,CARM","sourcesContent":["import { PageElasticsearchFieldPlugin } from \"~/plugins/definitions/PageElasticsearchFieldPlugin\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\n\nexport const createPagesElasticsearchFields = (): PageElasticsearchFieldPlugin[] => [\n new PageElasticsearchFieldPlugin({\n field: \"createdOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"savedOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"publishedOn\",\n unmappedType: \"date\",\n keyword: false\n }),\n new PageElasticsearchFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\"\n }),\n new PageElasticsearchFieldPlugin({\n field: \"ownedBy\",\n path: \"ownedBy.id\"\n }),\n new PageElasticsearchFieldPlugin({\n field: \"title\",\n path: \"titleLC\",\n unmappedType: \"text\",\n keyword: true,\n searchable: true\n }),\n /**\n * Defines all fields that are not strictly defined.\n */\n new PageElasticsearchFieldPlugin({\n field: \"*\"\n })\n];\n\nexport const createPagesDynamoDbFields = (): PageDynamoDbElasticsearchFieldPlugin[] => {\n return [\n new PageDynamoDbElasticsearchFieldPlugin({\n field: \"version\",\n type: \"number\",\n sortable: true\n })\n ];\n};\n"]}
@@ -37,6 +37,10 @@ var _get2 = require("@webiny/db-dynamodb/utils/get");
37
37
 
38
38
  var _keys = require("./keys");
39
39
 
40
+ var _sort = require("@webiny/db-dynamodb/utils/sort");
41
+
42
+ var _PageDynamoDbElasticsearchFieldPlugin = require("../../plugins/definitions/PageDynamoDbElasticsearchFieldPlugin");
43
+
40
44
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
45
 
42
46
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -975,24 +979,36 @@ const createPageStorageOperations = params => {
975
979
  };
976
980
 
977
981
  const listRevisions = async params => {
982
+ const {
983
+ where,
984
+ sort
985
+ } = params;
978
986
  const queryAllParams = {
979
987
  entity,
980
- partitionKey: (0, _keys.createPartitionKey)(_objectSpread(_objectSpread({}, params.where), {}, {
981
- id: params.where.pid
988
+ partitionKey: (0, _keys.createPartitionKey)(_objectSpread(_objectSpread({}, where), {}, {
989
+ id: where.pid
982
990
  })),
983
991
  options: {
984
992
  beginsWith: "REV#",
985
993
  reverse: false
986
994
  }
987
995
  };
996
+ let items = [];
988
997
 
989
998
  try {
990
- return await (0, _query.queryAll)(queryAllParams);
999
+ items = await (0, _query.queryAll)(queryAllParams);
991
1000
  } catch (ex) {
992
1001
  throw new _error.default(ex.message || "Could not load all the revisions from requested page.", ex.code || "LOAD_PAGE_REVISIONS_ERROR", {
993
1002
  params
994
1003
  });
995
1004
  }
1005
+
1006
+ const fields = plugins.byType(_PageDynamoDbElasticsearchFieldPlugin.PageDynamoDbElasticsearchFieldPlugin.type);
1007
+ return (0, _sort.sortItems)({
1008
+ items,
1009
+ fields,
1010
+ sort
1011
+ });
996
1012
  };
997
1013
 
998
1014
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","versionKeys","PK","SK","latestKeys","items","putBatch","TYPE","esData","table","put","index","configurations","es","data","ex","WebinyError","message","code","createFrom","latestPage","original","undefined","update","keys","latestPageResult","get","Item","deleteEsRecord","id","push","delete","deleteOne","publishedPage","partitionKey","deleteBatch","esItems","previousLatestPage","previousLatestRecord","options","lt","reverse","length","deleteAll","queryAllParams","gte","revisions","publishedPathEntryDeleted","revision","status","path","publish","esRecord","unpublish","requestReview","requestChanges","where","pid","published","version","includes","Number","split","pop","sortKey","result","list","latest","after","previousCursor","limit","initialLimit","body","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","meta","hasMoreItems","totalCount","cursor","hits","total","map","item","_source","value","listTags","tenant","locale","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith"],"mappings":";;;;;;;;;;;AAmBA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;;;;;AAmBO,MAAMA,2BAA2B,GACpCC,MADuC,IAEf;AACxB,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA,QAAV;AAAoBC,IAAAA,aAApB;AAAmCC,IAAAA;AAAnC,MAA+CJ,MAArD;;AAEA,QAAMK,MAAM,GAAG,MAAOL,MAAP,IAAoE;AAC/E,UAAM;AAAEM,MAAAA;AAAF,QAAWN,MAAjB;AAEA,UAAMO,WAAW,GAAG;AAChBC,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADY;AAEhBG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAFY,KAApB;;AAIA,UAAMI,UAAU,mCACTH,WADS;AAEZE,MAAAA,EAAE,EAAE;AAFQ,MAAhB;;AAKA,UAAME,KAAK,GAAG,CACVV,MAAM,CAACW,QAAP,+CACON,IADP,GAEOC,WAFP;AAGIM,MAAAA,IAAI,EAAE;AAHV,OADU,EAMVZ,MAAM,CAACW,QAAP,+CACON,IADP,GAEOI,UAFP;AAGIG,MAAAA,IAAI,EAAE;AAHV,OANU,CAAd;AAYA,UAAMC,MAAM,GAAG,kCAAoBV,OAApB,EAA6BE,IAA7B,CAAf;;AACA,QAAI;AACA,YAAM,+BAAc;AAChBS,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA,KAAK,EAAEA;AAFS,OAAd,CAAN;AAIA,YAAMT,QAAQ,CAACc,GAAT;AACFC,QAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAD7B;AAEFG,QAAAA,IAAI,EAAEN;AAFJ,SAGCJ,UAHD,EAAN;AAKA,aAAOJ,IAAP;AACH,KAXD,CAWE,OAAOe,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,4BADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,mBAFT,EAGF;AACIjB,QAAAA,WADJ;AAEIG,QAAAA,UAFJ;AAGIJ,QAAAA;AAHJ,OAHE,CAAN;AASH;AACJ,GA/CD;;AAiDA,QAAMmB,UAAU,GAAG,MAAOzB,MAAP,IAAwE;AACvF,UAAM;AAAEM,MAAAA,IAAF;AAAQoB,MAAAA,UAAR;AAAoBC,MAAAA;AAApB,QAAiC3B,MAAvC;AAEA,UAAMO,WAAW,GAAG;AAChBC,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADY;AAEhBG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAFY,KAApB;;AAIA,UAAMI,UAAU,mCACTH,WADS;AAEZE,MAAAA,EAAE,EAAE;AAFQ,MAAhB;;AAKA,UAAME,KAAK,GAAG,CACVV,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE;AAFV,OAGON,WAHP,EADU,EAMVN,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE;AAFV,OAGOH,UAHP,EANU,CAAd;AAYA;AACR;AACA;AACA;;AACQ,QAAII,MAAW,GAAGc,SAAlB;;AACA,QAAI,kBAAUtB,IAAV,EAAgB,wBAAhB,MAA8C,KAAlD,EAAyD;AACrDQ,MAAAA,MAAM,GAAG,kCAAoBV,OAApB,EAA6BE,IAA7B,CAAT;AACH;;AAED,QAAI;AACA,YAAM,+BAAc;AAChBS,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;;AAIA,UAAIG,MAAJ,EAAY;AACR,cAAMZ,QAAQ,CAACc,GAAT;AACFC,UAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAD7B;AAEFG,UAAAA,IAAI,EAAEN;AAFJ,WAGCJ,UAHD,EAAN;AAKH;;AACD,aAAOJ,IAAP;AACH,KAbD,CAaE,OAAOe,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,+CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,wBAFT,EAGF;AACIjB,QAAAA,WADJ;AAEIG,QAAAA,UAFJ;AAGIgB,QAAAA,UAHJ;AAIIC,QAAAA,QAJJ;AAKIrB,QAAAA;AALJ,OAHE,CAAN;AAWH;AACJ,GA3DD;;AA6DA,QAAMuB,MAAM,GAAG,MAAO7B,MAAP,IAAoE;AAC/E,UAAM;AAAE2B,MAAAA,QAAF;AAAYrB,MAAAA;AAAZ,QAAqBN,MAA3B;AAEA,UAAM8B,IAAI,GAAG;AACTtB,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADK;AAETG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAFK,KAAb;;AAKA,UAAMI,UAAU,mCACToB,IADS;AAEZrB,MAAAA,EAAE,EAAE;AAFQ,MAAhB;;AAIA,UAAMsB,gBAAgB,GAAG,MAAM9B,MAAM,CAAC+B,GAAP,CAAWtB,UAAX,CAA/B;AACA,UAAMgB,UAAU,GAAG,0BAAYzB,MAAZ,EAAoB8B,gBAAgB,GAAGA,gBAAgB,CAACE,IAApB,GAA2B,IAA/D,CAAnB;AAEA,UAAMtB,KAAK,GAAG,CACVV,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE;AAFV,OAGOiB,IAHP,EADU,CAAd;AAOA;AACR;AACA;AACA;AACA;AACA;;AACQ,QAAIhB,MAAkC,GAAG,IAAzC;AACA,QAAIoB,cAAc,GAAG,KAArB;;AACA,QAAIR,UAAU,IAAIA,UAAU,CAACS,EAAX,KAAkB7B,IAAI,CAAC6B,EAAzC,EAA6C;AACzC,UAAI,kBAAU7B,IAAV,EAAgB,wBAAhB,MAA8C,KAAlD,EAAyD;AACrD4B,QAAAA,cAAc,GAAG,IAAjB;AACH,OAFD,MAEO;AACHpB,QAAAA,MAAM,GAAG,kCAAoBV,OAApB,EAA6BE,IAA7B,CAAT;AACH;AACD;AACZ;AACA;;;AACYK,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,QAAAA,IAAI,EAAE;AAFV,SAGOH,UAHP,EADJ;AAOH;AACD;AACR;AACA;;;AACQ,QAAI;AACA,YAAM,+BAAc;AAChBK,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;;AAKA,UAAIuB,cAAJ,EAAoB;AAChB,cAAMhC,QAAQ,CAACmC,MAAT,mBACC3B,UADD,EAAN;AAGH,OAJD,MAIO,IAAII,MAAJ,EAAY;AACf,cAAMZ,QAAQ,CAACc,GAAT;AACFC,UAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAD7B;AAEFG,UAAAA,IAAI,EAAEN;AAFJ,WAGCJ,UAHD,EAAN;AAKH;;AAED,aAAOJ,IAAP;AACH,KAnBD,CAmBE,OAAOe,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,mBAFT,EAGF;AACIG,QAAAA,QADJ;AAEIrB,QAAAA,IAFJ;AAGIoB,QAAAA,UAHJ;AAIIhB,QAAAA,UAJJ;AAKIoB,QAAAA;AALJ,OAHE,CAAN;AAWH;AACJ,GAlFD;AAoFA;AACJ;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAMQ,SAAS,GAAG,MACdtC,MADc,IAEiB;AAC/B,UAAM;AAAEM,MAAAA,IAAF;AAAQoB,MAAAA,UAAR;AAAoBa,MAAAA;AAApB,QAAsCvC,MAA5C;AAEA,UAAMwC,YAAY,GAAG,8BAAmBlC,IAAnB,CAArB;AAEA,UAAMK,KAAK,GAAG,CACVV,MAAM,CAACwC,WAAP,CAAmB;AACfjC,MAAAA,EAAE,EAAEgC,YADW;AAEf/B,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAFW,KAAnB,CADU,CAAd;AAMA,UAAMoC,OAAO,GAAG,EAAhB;;AACA,QAAIH,aAAa,IAAIA,aAAa,CAACJ,EAAd,KAAqB7B,IAAI,CAAC6B,EAA/C,EAAmD;AAC/CxB,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACwC,WAAP,CAAmB;AACfjC,QAAAA,EAAE,EAAEgC,YADW;AAEf/B,QAAAA,EAAE,EAAE;AAFW,OAAnB,CADJ;AAMAE,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACwC,WAAP,CAAmB;AACfjC,QAAAA,EAAE,EAAE,kCAAuBF,IAAvB,CADW;AAEfG,QAAAA,EAAE,EAAE,6BAAkBH,IAAlB;AAFW,OAAnB,CADJ;AAMAoC,MAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACuC,WAAT,CAAqB;AACjBjC,QAAAA,EAAE,EAAEgC,YADa;AAEjB/B,QAAAA,EAAE,EAAE;AAFa,OAArB,CADJ;AAMH;;AACD,QAAIkC,kBAA+B,GAAG,IAAtC;;AACA,QAAIjB,UAAU,IAAIA,UAAU,CAACS,EAAX,KAAkB7B,IAAI,CAAC6B,EAAzC,EAA6C;AACzC,YAAMS,oBAAoB,GAAG,MAAM,qBAAe;AAC9C3C,QAAAA,MAD8C;AAE9CuC,QAAAA,YAF8C;AAG9CK,QAAAA,OAAO,EAAE;AACLC,UAAAA,EAAE,EAAE,yBAAcpB,UAAd,CADC;AAELqB,UAAAA,OAAO,EAAE;AAFJ;AAHqC,OAAf,CAAnC;;AAQA,UAAIH,oBAAJ,EAA0B;AACtBjC,QAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACOgC,oBADP;AAEI/B,UAAAA,IAAI,EAAE,6BAFV;AAGIL,UAAAA,EAAE,EAAEgC,YAHR;AAII/B,UAAAA,EAAE,EAAE;AAJR,WADJ;AAQAiC,QAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACU,QAAT,CAAkB;AACdJ,UAAAA,EAAE,EAAEgC,YADU;AAEd/B,UAAAA,EAAE,EAAE,gCAFU;AAGdQ,UAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAHjB;AAIdG,UAAAA,IAAI,EAAE,kCAAoBhB,OAApB,EAA6BwC,oBAA7B;AAJQ,SAAlB,CADJ;AAQAD,QAAAA,kBAAkB,GAAG,0BAAY1C,MAAZ,EAAoB2C,oBAApB,CAArB;AACH;AACJ;;AACD,QAAI;AACA,YAAM,+BAAc;AAChB7B,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOU,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,6CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,2BAFT,CAAN;AAIH;;AACD,QAAIkB,OAAO,CAACM,MAAR,KAAmB,CAAvB,EAA0B;AACtB,aAAO,CAAC1C,IAAD,EAAOqC,kBAAP,CAAP;AACH;;AACD,QAAI;AACA,YAAM,+BAAc;AAChB5B,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA,KAAK,EAAE+B;AAFS,OAAd,CAAN;AAIH,KALD,CAKE,OAAOrB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,2DADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,yCAFT,CAAN;AAIH;;AACD,WAAO,CAAClB,IAAD,EAAOqC,kBAAP,CAAP;AACH,GA1FD;AA4FA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACI,QAAMM,SAAS,GAAG,MAAOjD,MAAP,IAAyE;AACvF,UAAM;AAAEM,MAAAA;AAAF,QAAWN,MAAjB;AAEA,UAAMwC,YAAY,GAAG,8BAAmBlC,IAAnB,CAArB;AACA,UAAM4C,cAAc,GAAG;AACnBjD,MAAAA,MADmB;AAEnBuC,MAAAA,YAFmB;AAGnBK,MAAAA,OAAO,EAAE;AACLM,QAAAA,GAAG,EAAE;AADA;AAHU,KAAvB;AAOA,QAAIC,SAAJ;;AACA,QAAI;AACAA,MAAAA,SAAS,GAAG,MAAM,qBAAeF,cAAf,CAAlB;AACH,KAFD,CAEE,OAAO7B,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,gDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,sBAFT,EAGF;AACIxB,QAAAA,MAAM,EAAEkD;AADZ,OAHE,CAAN;AAOH;AAED;AACR;AACA;AACA;;;AACQ,UAAMvC,KAAK,GAAG,EAAd;AACA,QAAI0C,yBAAyB,GAAG,KAAhC;;AACA,SAAK,MAAMC,QAAX,IAAuBF,SAAvB,EAAkC;AAC9B,UAAIE,QAAQ,CAACC,MAAT,KAAoB,WAApB,IAAmC,CAACF,yBAAxC,EAAmE;AAC/DA,QAAAA,yBAAyB,GAAG,IAA5B;AACA1C,QAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACwC,WAAP,CAAmB;AACfjC,UAAAA,EAAE,EAAE,kCAAuBF,IAAvB,CADW;AAEfG,UAAAA,EAAE,EAAE6C,QAAQ,CAACE;AAFE,SAAnB,CADJ;AAMH;;AACD7C,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACwC,WAAP,CAAmB;AACfjC,QAAAA,EAAE,EAAE8C,QAAQ,CAAC9C,EADE;AAEfC,QAAAA,EAAE,EAAE6C,QAAQ,CAAC7C;AAFE,OAAnB,CADJ;AAMH;;AACD,UAAMiC,OAAO,GAAG,CACZxC,QAAQ,CAACuC,WAAT,CAAqB;AACjBjC,MAAAA,EAAE,EAAEgC,YADa;AAEjB/B,MAAAA,EAAE,EAAE;AAFa,KAArB,CADY,CAAhB;AAMA;AACR;AACA;;AACQ,QAAI4C,yBAAJ,EAA+B;AAC3BX,MAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACuC,WAAT,CAAqB;AACjBjC,QAAAA,EAAE,EAAEgC,YADa;AAEjB/B,QAAAA,EAAE,EAAE;AAFa,OAArB,CADJ;AAMH;;AAED,QAAI;AACA,YAAM,+BAAc;AAChBM,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOU,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,wCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,sBAFT,CAAN;AAIH;;AACD,QAAI;AACA,YAAM,+BAAc;AAChBT,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA,KAAK,EAAE+B;AAFS,OAAd,CAAN;AAIH,KALD,CAKE,OAAOrB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,sDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,oCAFT,CAAN;AAIH;;AACD,WAAO,CAAClB,IAAD,CAAP;AACH,GAxFD;;AA0FA,QAAMmD,OAAO,GAAG,MAAOzD,MAAP,IAAqE;AACjF,UAAM;AAAEM,MAAAA,IAAF;AAAQoB,MAAAA,UAAR;AAAoBa,MAAAA;AAApB,QAAsCvC,MAA5C;AAEA;AACR;AACA;;AACQ,UAAMW,KAAK,GAAG,CACVV,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE,4BAFV;AAGIL,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAJR,OADU,CAAd;AAQA,UAAMoC,OAAO,GAAG,EAAhB;AACA;AACR;AACA;AACA;AACA;;AACQ,QAAIhB,UAAU,CAACS,EAAX,KAAkB7B,IAAI,CAAC6B,EAA3B,EAA+B;AAC3BxB,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,QAAAA,IAAI,EAAE,6BAFV;AAGIL,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,QAAAA,EAAE,EAAE;AAJR,SADJ;;AAQA,UAAI,kBAAUH,IAAV,EAAgB,wBAAhB,MAA8C,KAAlD,EAAyD;AACrDoC,QAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACU,QAAT,CAAkB;AACdJ,UAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADU;AAEdG,UAAAA,EAAE,EAAE,gCAFU;AAGdQ,UAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAHjB;AAIdG,UAAAA,IAAI,EAAE,kCAAoBhB,OAApB,EAA6BE,IAA7B;AAJQ,SAAlB,CADJ;AAQH;AACJ;AACD;AACR;AACA;AACA;AACA;;;AACQ,QAAIiC,aAAJ,EAAmB;AACf5B,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACO2B,aADP;AAEIgB,QAAAA,MAAM,EAAE,aAFZ;AAGI/C,QAAAA,EAAE,EAAE,8BAAmB+B,aAAnB,CAHR;AAII9B,QAAAA,EAAE,EAAE,yBAAc8B,aAAd;AAJR,SADJ;AAQA;AACZ;AACA;;AACY,UAAIA,aAAa,CAACiB,IAAd,KAAuBlD,IAAI,CAACkD,IAAhC,EAAsC;AAClC7C,QAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACwC,WAAP,CAAmB;AACfjC,UAAAA,EAAE,EAAE,kCAAuBF,IAAvB,CADW;AAEfG,UAAAA,EAAE,EAAE8B,aAAa,CAACiB;AAFH,SAAnB,CADJ;AAMH;AACJ;AACD;AACR;AACA;AACA;;;AACQ,QAAI,kBAAUlD,IAAV,EAAgB,2BAAhB,MAAiD,KAArD,EAA4D;AACxDoC,MAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACU,QAAT,CAAkB;AACdJ,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADU;AAEdG,QAAAA,EAAE,EAAE,mCAFU;AAGdQ,QAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAHjB;AAIdG,QAAAA,IAAI,EAAE,qCAAuBhB,OAAvB,EAAgCE,IAAhC;AAJQ,OAAlB,CADJ;AAQH,KATD,MASO;AACH;AACZ;AACA;AACY,YAAMwB,IAAI,GAAG;AACTtB,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADK;AAETG,QAAAA,EAAE,EAAE;AAFK,OAAb;AAIA,YAAMiD,QAAQ,GAAG,MAAM,eAAU;AAC7BzD,QAAAA,MAAM,EAAEC,QADqB;AAE7B4B,QAAAA;AAF6B,OAAV,CAAvB;AAIA;AACZ;AACA;;AACY,UAAI4B,QAAJ,EAAc;AACV;AAChB;AACA;AACgBhB,QAAAA,OAAO,CAACN,IAAR,CAAalC,QAAQ,CAACuC,WAAT,CAAqBX,IAArB,CAAb;AACH;AACJ;AACD;AACR;AACA;;;AACQnB,IAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE,oCAFV;AAGIL,MAAAA,EAAE,EAAE,kCAAuBF,IAAvB,CAHR;AAIIG,MAAAA,EAAE,EAAE,6BAAkBH,IAAlB;AAJR,OADJ;AAQA;AACR;AACA;;AACQK,IAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE,gCAFV;AAGIL,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,MAAAA,EAAE,EAAE;AAJR,OADJ;;AASA,QAAI;AACA,YAAM,+BAAc;AAChBM,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOU,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,wDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,sBAFT,CAAN;AAIH;AACD;AACR;AACA;;;AACQ,QAAIkB,OAAO,CAACM,MAAR,KAAmB,CAAvB,EAA0B;AACtB,aAAO1C,IAAP;AACH;;AACD,QAAI;AACA,YAAM,+BAAc;AAChBS,QAAAA,KAAK,EAAEb,QAAQ,CAACa,KADA;AAEhBJ,QAAAA,KAAK,EAAE+B;AAFS,OAAd,CAAN;AAIH,KALD,CAKE,OAAOrB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IACI,sEAFF,EAGFF,EAAE,CAACG,IAAH,IAAW,oCAHT,CAAN;AAKH;;AACD,WAAOlB,IAAP;AACH,GA1JD;;AA4JA,QAAMqD,SAAS,GAAG,MAAO3D,MAAP,IAAuE;AACrF,UAAM;AAAEM,MAAAA,IAAF;AAAQoB,MAAAA;AAAR,QAAuB1B,MAA7B;AAEA,UAAMW,KAAK,GAAG,CACVV,MAAM,CAACwC,WAAP,CAAmB;AACfjC,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADW;AAEfG,MAAAA,EAAE,EAAE;AAFW,KAAnB,CADU,EAKVR,MAAM,CAACwC,WAAP,CAAmB;AACfjC,MAAAA,EAAE,EAAE,kCAAuBF,IAAvB,CADW;AAEfG,MAAAA,EAAE,EAAE,6BAAkBH,IAAlB;AAFW,KAAnB,CALU,EASVL,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE,4BAFV;AAGIL,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAJR,OATU,CAAd;AAgBA,UAAMoC,OAAO,GAAG,EAAhB;AACA;AACR;AACA;AACA;AACA;;AACQ,QAAIhB,UAAU,CAACS,EAAX,KAAkB7B,IAAI,CAAC6B,EAAvB,IAA6B,kBAAU7B,IAAV,EAAgB,wBAAhB,MAA8C,KAA/E,EAAsF;AAClFK,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,QAAAA,IAAI,EAAE,6BAFV;AAGIL,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,QAAAA,EAAE,EAAE;AAJR,SADJ;AAQAiC,MAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACU,QAAT,CAAkB;AACdJ,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADU;AAEdG,QAAAA,EAAE,EAAE,gCAFU;AAGdQ,QAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAHjB;AAIdG,QAAAA,IAAI,EAAE,kCAAoBhB,OAApB,EAA6BE,IAA7B;AAJQ,OAAlB,CADJ;AAQH;;AACD,QAAI,kBAAUA,IAAV,EAAgB,2BAAhB,MAAiD,KAArD,EAA4D;AACxDoC,MAAAA,OAAO,CAACN,IAAR,CACIlC,QAAQ,CAACuC,WAAT,CAAqB;AACjBjC,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADa;AAEjBG,QAAAA,EAAE,EAAE;AAFa,OAArB,CADJ;AAMH;;AAED,QAAI;AACA,YAAM,+BAAc;AAChBM,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOU,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,0DADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,sBAFT,CAAN;AAIH;AACD;AACR;AACA;;;AACQ,QAAIkB,OAAO,CAACM,MAAR,KAAmB,CAAvB,EAA0B;AACtB,aAAO1C,IAAP;AACH;;AACD,QAAI;AACA,YAAM,+BAAc;AAChBS,QAAAA,KAAK,EAAEb,QAAQ,CAACa,KADA;AAEhBJ,QAAAA,KAAK,EAAE+B;AAFS,OAAd,CAAN;AAIH,KALD,CAKE,OAAOrB,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IACI,wEAFF,EAGFF,EAAE,CAACG,IAAH,IAAW,oCAHT,CAAN;AAKH;;AACD,WAAOlB,IAAP;AACH,GAlFD;;AAoFA,QAAMsD,aAAa,GAAG,MAClB5D,MADkB,IAEF;AAChB,UAAM;AAAE2B,MAAAA,QAAF;AAAYrB,MAAAA,IAAZ;AAAkBoB,MAAAA;AAAlB,QAAiC1B,MAAvC;AAEA,UAAMW,KAAK,GAAG,CACVV,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE,4BAFV;AAGIL,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAJR,OADU,CAAd;AAQA,QAAIQ,MAAM,GAAGc,SAAb;;AACA,QAAIF,UAAU,CAACS,EAAX,KAAkB7B,IAAI,CAAC6B,EAAvB,IAA6B,kBAAU7B,IAAV,EAAgB,wBAAhB,MAA8C,KAA/E,EAAsF;AAClFK,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,QAAAA,IAAI,EAAE,6BAFV;AAGIL,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,QAAAA,EAAE,EAAE;AAJR,SADJ;AAQAK,MAAAA,MAAM,GAAG,kCAAoBV,OAApB,EAA6BE,IAA7B,CAAT;AACH;;AACD,QAAI;AACA,YAAM,+BAAc;AAChBS,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOU,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,0CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,sBAFT,EAGF;AACIG,QAAAA,QADJ;AAEIrB,QAAAA,IAFJ;AAGIoB,QAAAA;AAHJ,OAHE,CAAN;AASH;AACD;AACR;AACA;;;AACQ,QAAI,CAACZ,MAAL,EAAa;AACT,aAAOR,IAAP;AACH;;AAED,QAAI;AACA,YAAMJ,QAAQ,CAACc,GAAT,CAAa;AACfR,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADW;AAEfG,QAAAA,EAAE,EAAE,gCAFW;AAGfQ,QAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAHhB;AAIfG,QAAAA,IAAI,EAAEN;AAJS,OAAb,CAAN;AAMH,KAPD,CAOE,OAAOO,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,wDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,yBAFT,EAGF;AACIG,QAAAA,QADJ;AAEIrB,QAAAA,IAFJ;AAGIoB,QAAAA;AAHJ,OAHE,CAAN;AASH;;AAED,WAAOpB,IAAP;AACH,GApED;;AAsEA,QAAMuD,cAAc,GAAG,MACnB7D,MADmB,IAEH;AAChB,UAAM;AAAE2B,MAAAA,QAAF;AAAYrB,MAAAA,IAAZ;AAAkBoB,MAAAA;AAAlB,QAAiC1B,MAAvC;AAEA,UAAMW,KAAK,GAAG,CACVV,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,MAAAA,IAAI,EAAE,4BAFV;AAGIL,MAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,MAAAA,EAAE,EAAE,yBAAcH,IAAd;AAJR,OADU,CAAd;AAQA,QAAIQ,MAAM,GAAGc,SAAb;;AACA,QAAIF,UAAU,CAACS,EAAX,KAAkB7B,IAAI,CAAC6B,EAAvB,IAA6B,kBAAU7B,IAAV,EAAgB,wBAAhB,MAA8C,KAA/E,EAAsF;AAClFK,MAAAA,KAAK,CAACyB,IAAN,CACInC,MAAM,CAACW,QAAP,iCACON,IADP;AAEIO,QAAAA,IAAI,EAAE,6BAFV;AAGIL,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CAHR;AAIIG,QAAAA,EAAE,EAAE;AAJR,SADJ;AAQAK,MAAAA,MAAM,GAAG,kCAAoBV,OAApB,EAA6BE,IAA7B,CAAT;AACH;;AAED,QAAI;AACA,YAAM,+BAAc;AAChBS,QAAAA,KAAK,EAAEd,MAAM,CAACc,KADE;AAEhBJ,QAAAA;AAFgB,OAAd,CAAN;AAIH,KALD,CAKE,OAAOU,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,2CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,uBAFT,EAGF;AACIG,QAAAA,QADJ;AAEIrB,QAAAA,IAFJ;AAGIoB,QAAAA;AAHJ,OAHE,CAAN;AASH;AACD;AACR;AACA;;;AACQ,QAAI,CAACZ,MAAL,EAAa;AACT,aAAOR,IAAP;AACH;;AAED,QAAI;AACA,YAAMJ,QAAQ,CAACc,GAAT,CAAa;AACfR,QAAAA,EAAE,EAAE,8BAAmBF,IAAnB,CADW;AAEfG,QAAAA,EAAE,EAAE,gCAFW;AAGfQ,QAAAA,KAAK,EAAEC,wBAAeC,EAAf,CAAkBb,IAAlB,EAAwBW,KAHhB;AAIfG,QAAAA,IAAI,EAAEN;AAJS,OAAb,CAAN;AAMH,KAPD,CAOE,OAAOO,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,yDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,0BAFT,EAGF;AACIG,QAAAA,QADJ;AAEIrB,QAAAA,IAFJ;AAGIoB,QAAAA;AAHJ,OAHE,CAAN;AASH;;AAED,WAAOpB,IAAP;AACH,GArED;;AAuEA,QAAM0B,GAAG,GAAG,MAAOhC,MAAP,IAAwE;AAChF,UAAM;AAAE8D,MAAAA;AAAF,QAAY9D,MAAlB;AACA,UAAM;AAAE+D,MAAAA,GAAF;AAAO5B,MAAAA,EAAP;AAAWqB,MAAAA,IAAX;AAAiBQ,MAAAA;AAAjB,QAA+BF,KAArC;AACA,QAAI;AAAEG,MAAAA;AAAF,QAAcH,KAAlB;AACA;AACR;AACA;;AACQ,QAAI3B,EAAE,IAAIA,EAAE,CAAC+B,QAAH,CAAY,GAAZ,CAAN,IAA0B,CAACD,OAA/B,EAAwC;AACpCA,MAAAA,OAAO,GAAGE,MAAM,CAAChC,EAAE,CAACiC,KAAH,CAAS,GAAT,EAAcC,GAAd,EAAD,CAAhB;AACH;;AACD,QAAI7B,YAA2B,GAAG,IAAlC;AACA,QAAI8B,OAAJ;;AACA,QAAId,IAAJ,EAAU;AACNhB,MAAAA,YAAY,GAAG,kCAAuBsB,KAAvB,CAAf;AACAQ,MAAAA,OAAO,GAAGd,IAAV;AACH,KAHD,MAGO,IAAIQ,SAAJ,EAAe;AAClBM,MAAAA,OAAO,GAAG,mCAAV;AACH,KAFM,MAEA,IAAIL,OAAJ,EAAa;AAChBK,MAAAA,OAAO,GAAG,yBAAc;AACpBL,QAAAA;AADoB,OAAd,CAAV;AAGH,KAJM,MAIA;AACHK,MAAAA,OAAO,GAAG,gCAAV;AACH;AACD;AACR;AACA;;;AACQ,QAAI,CAAC9B,YAAL,EAAmB;AACfA,MAAAA,YAAY,GAAG,8DACRsB,KADQ;AAEX3B,QAAAA,EAAE,EAAE4B,GAAG,IAAK5B;AAFD,SAAf;AAIH;;AACD,UAAML,IAAI,GAAG;AACTtB,MAAAA,EAAE,EAAEgC,YADK;AAET/B,MAAAA,EAAE,EAAE6D;AAFK,KAAb;;AAIA,QAAI;AACA,YAAMC,MAAM,GAAG,MAAMtE,MAAM,CAAC+B,GAAP,CAAWF,IAAX,CAArB;;AACA,UAAI,CAACyC,MAAD,IAAW,CAACA,MAAM,CAACtC,IAAvB,EAA6B;AACzB,eAAO,IAAP;AACH;;AACD,aAAO,0BAAYhC,MAAZ,EAAoBsE,MAAM,CAACtC,IAA3B,CAAP;AACH,KAND,CAME,OAAOZ,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,sCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,gBAFT,EAGF;AACIsC,QAAAA,KADJ;AAEIhC,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GArDD;;AAuDA,QAAM0C,IAAI,GAAG,MACTxE,MADS,IAEoC;AAC7C;AACR;AACA;AACA;AACQ,QAAIA,MAAM,CAAC8D,KAAP,CAAaE,SAAb,IAA0BhE,MAAM,CAAC8D,KAAP,CAAaW,MAA3C,EAAmD;AAC/C,YAAM,IAAInD,cAAJ,CACF,+DADE,EAEF,uBAFE,EAGF;AACIwC,QAAAA,KAAK,EAAE9D,MAAM,CAAC8D;AADlB,OAHE,CAAN;AAOH;;AAED,UAAM;AAAEY,MAAAA,KAAK,EAAEC,cAAc,GAAG,IAA1B;AAAgCC,MAAAA,KAAK,EAAEC;AAAvC,QAAwD7E,MAA9D;AAEA,UAAM4E,KAAK,GAAG,wBAAYC,YAAZ,EAA0B,EAA1B,CAAd;AACA,UAAMC,IAAI,GAAG,0FACN9E,MADM;AAET8D,MAAAA,KAAK,oBACE9D,MAAM,CAAC8D,KADT,CAFI;AAKTc,MAAAA,KALS;AAMTF,MAAAA,KAAK,EAAEC,cANE;AAOTvE,MAAAA;AAPS,OAAb;AAUA,QAAI2E,aAAkC,GAAG,EAAzC;;AACA,QAAI/E,MAAM,CAAC8D,KAAP,CAAaE,SAAjB,EAA4B;AACxBe,MAAAA,aAAa,GAAG3E,OAAO,CAAC4E,MAAR,CACZC,uDAA2BC,IADf,CAAhB;AAGH,KAJD,MAIO,IAAIlF,MAAM,CAAC8D,KAAP,CAAaW,MAAjB,EAAyB;AAC5BM,MAAAA,aAAa,GAAG3E,OAAO,CAAC4E,MAAR,CAAwCG,iDAAwBD,IAAhE,CAAhB;AACH,KAFM,MAEA;AACH,YAAM,IAAI5D,cAAJ,CACF,kEADE,EAEF,uBAFE,EAGF;AACIwC,QAAAA,KAAK,EAAE9D,MAAM,CAAC8D;AADlB,OAHE,CAAN;AAOH;;AAED,SAAK,MAAMsB,MAAX,IAAqBL,aAArB,EAAoC;AAChC;AACZ;AACA;AACYK,MAAAA,MAAM,CAACC,WAAP,CAAmB;AACfC,QAAAA,KAAK,EAAER,IAAI,CAACQ,KADG;AAEfC,QAAAA,IAAI,EAAEvF,MAFS;AAGfI,QAAAA;AAHe,OAAnB;AAMA;AACZ;AACA;;AACYgF,MAAAA,MAAM,CAACI,UAAP,CAAkB;AACdC,QAAAA,IAAI,EAAEX,IAAI,CAACW,IADG;AAEdF,QAAAA,IAAI,EAAEvF,MAFQ;AAGdI,QAAAA;AAHc,OAAlB;AAKH;;AAED,QAAIsF,QAAJ;;AACA,UAAMC,QAAQ,GAAGzE,wBAAeC,EAAf,CAAkBnB,MAAM,CAAC8D,KAAzB,CAAjB;;AACA,QAAI;AACA4B,MAAAA,QAAQ,GAAG,MAAMvF,aAAa,CAACyF,MAAd,iCACVD,QADU;AAEbb,QAAAA;AAFa,SAAjB;AAIH,KALD,CAKE,OAAOzD,EAAP,EAAW;AACT;AACZ;AACA;AACA;AACY,UAAIA,EAAE,CAACE,OAAH,KAAe,2BAAnB,EAAgD;AAC5C,eAAO;AACHZ,UAAAA,KAAK,EAAE,EADJ;AAEHkF,UAAAA,IAAI,EAAE;AACFC,YAAAA,YAAY,EAAE,KADZ;AAEFC,YAAAA,UAAU,EAAE,CAFV;AAGFC,YAAAA,MAAM,EAAE;AAHN;AAFH,SAAP;AAQH;;AACD,YAAM,IAAI1E,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,mDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,kBAFT,EAGF;AACIsD,QAAAA;AADJ,OAHE,CAAN;AAOH;;AACD,UAAM;AAAEmB,MAAAA,IAAF;AAAQC,MAAAA;AAAR,QAAkBR,QAAQ,CAACZ,IAAT,CAAcmB,IAAtC;AACA,UAAMtF,KAAK,GAAGsF,IAAI,CAACE,GAAL,CAASC,IAAI,IAAIA,IAAI,CAACC,OAAtB,CAAd;AAEA,UAAMP,YAAY,GAAGnF,KAAK,CAACqC,MAAN,GAAe4B,KAApC;;AACA,QAAIkB,YAAJ,EAAkB;AACd;AACZ;AACA;AACYnF,MAAAA,KAAK,CAAC0D,GAAN;AACH;AACD;AACR;AACA;AACA;;;AACQ,UAAM2B,MAAM,GACRrF,KAAK,CAACqC,MAAN,GAAe,CAAf,IAAoB8C,YAApB,GACM,2BAAaG,IAAI,CAACtF,KAAK,CAACqC,MAAN,GAAe,CAAhB,CAAJ,CAAuByC,IAApC,KAA6C,IADnD,GAEM,IAHV;AAIA,WAAO;AACH9E,MAAAA,KADG;AAEHkF,MAAAA,IAAI,EAAE;AACFC,QAAAA,YADE;AAEFC,QAAAA,UAAU,EAAEG,KAAK,CAACI,KAFhB;AAGFN,QAAAA;AAHE;AAFH,KAAP;AAQH,GA3HD;;AA6HA,QAAMO,QAAQ,GAAG,MAAOvG,MAAP,IAA0E;AACvF,UAAM;AAAE8D,MAAAA;AAAF,QAAY9D,MAAlB;AAEA,UAAMwG,MAAc,GAAG1C,KAAK,CAAC0C,MAA7B;AACA,UAAM1B,IAAI,GAAG,0FACN9E,MADM;AAET8D,MAAAA,KAAK,EAAE;AACH2C,QAAAA,MAAM,EAAE3C,KAAK,CAAC2C,MADX;AAEHb,QAAAA,MAAM,EAAEhE,SAFL;AAGH4E,QAAAA;AAHG,OAFE;AAOTf,MAAAA,IAAI,EAAE,EAPG;AAQTf,MAAAA,KAAK,EAAE,IARE;AASTE,MAAAA,KAAK,EAAE,MATE;AAUTxE,MAAAA;AAVS,OAAb;;AAaA,UAAMuF,QAAQ,GAAGzE,wBAAeC,EAAf,CAAkB2C,KAAlB,CAAjB;;AAEA,QAAI;AACA,YAAM4B,QAA6C,GAAG,MAAMvF,aAAa,CAACyF,MAAd,iCACrDD,QADqD;AAExDb,QAAAA,IAAI,kCACGA,IADH;AAEAW,UAAAA,IAAI,EAAE7D,SAFN;AAGAgD,UAAAA,KAAK,EAAEhD,SAHP;AAIA8E,UAAAA,IAAI,EAAE,CAJN;AAKAC,UAAAA,IAAI,EAAE;AACFC,YAAAA,IAAI,EAAE;AACFC,cAAAA,KAAK,EAAE;AACHC,gBAAAA,KAAK,EAAE,cADJ;AAEHC,gBAAAA,OAAO,EAAG,KAAIjD,KAAK,CAAC8B,MAAO,IAFxB;AAGHc,gBAAAA,IAAI,EAAE;AAHH;AADL;AADJ;AALN;AAFoD,SAA5D;AAmBA,YAAME,IAAI,GAAGlB,QAAQ,CAACZ,IAAT,CAAckC,YAAd,CAA2B,MAA3B,CAAb;;AACA,UAAI,CAACJ,IAAD,IAASK,KAAK,CAACC,OAAN,CAAcN,IAAI,CAACO,OAAnB,MAAgC,KAA7C,EAAoD;AAChD,eAAO,EAAP;AACH;;AACD,aAAOP,IAAI,CAACO,OAAL,CAAahB,GAAb,CAAiBC,IAAI,IAAIA,IAAI,CAACgB,GAA9B,CAAP;AACH,KAzBD,CAyBE,OAAO/F,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,0CADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,iBAFT,EAGF;AACIsD,QAAAA,IADJ;AAEIhB,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GAtDD;;AAwDA,QAAMuD,aAAa,GAAG,MAClBrH,MADkB,IAEA;AAClB,UAAMkD,cAA8B,GAAG;AACnCjD,MAAAA,MADmC;AAEnCuC,MAAAA,YAAY,EAAE,8DACPxC,MAAM,CAAC8D,KADA;AAEV3B,QAAAA,EAAE,EAAEnC,MAAM,CAAC8D,KAAP,CAAaC;AAFP,SAFqB;AAMnClB,MAAAA,OAAO,EAAE;AACLyE,QAAAA,UAAU,EAAE,MADP;AAELvE,QAAAA,OAAO,EAAE;AAFJ;AAN0B,KAAvC;;AAYA,QAAI;AACA,aAAO,MAAM,qBAAeG,cAAf,CAAb;AACH,KAFD,CAEE,OAAO7B,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,uDADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,2BAFT,EAGF;AACIxB,QAAAA;AADJ,OAHE,CAAN;AAOH;AACJ,GA1BD;;AA4BA,SAAO;AACHK,IAAAA,MADG;AAEHoB,IAAAA,UAFG;AAGHI,IAAAA,MAHG;AAIHQ,IAAAA,MAAM,EAAEC,SAJL;AAKHW,IAAAA,SAAS,EAAEA,SALR;AAMHQ,IAAAA,OANG;AAOHE,IAAAA,SAPG;AAQHC,IAAAA,aARG;AASHC,IAAAA,cATG;AAUH7B,IAAAA,GAVG;AAWHwC,IAAAA,IAXG;AAYH6C,IAAAA,aAZG;AAaHd,IAAAA;AAbG,GAAP;AAeH,CAjiCM","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 PageStorageOperationsRequestChangesParams,\n PageStorageOperationsRequestReviewParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\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 \"~/operations/configurations\";\nimport { encodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { createLimit } from \"@webiny/api-elasticsearch/limit\";\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 lodashGet from \"lodash/get\";\nimport { get as entityGet } from \"@webiny/db-dynamodb/utils/get\";\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\";\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 } = 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);\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 * Specifically for the Elasticsearch.\n * If visibility on the latest list is not false, push it into the ES.\n */\n let esData: any = undefined;\n if (lodashGet(page, \"visibility.list.latest\") !== false) {\n esData = getESLatestPageData(plugins, page);\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n if (esData) {\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 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 } = 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 * In the case the latest page is the page we are currently updating\n * check for the visibility in the list.\n * If visibility is set to false - delete the record\n * Otherwise update it.\n */\n let esData: Record<string, any> | null = null;\n let deleteEsRecord = false;\n if (latestPage && latestPage.id === page.id) {\n if (lodashGet(page, \"visibility.list.latest\") === false) {\n deleteEsRecord = true;\n } else {\n esData = getESLatestPageData(plugins, page);\n }\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 if (deleteEsRecord) {\n await esEntity.delete({\n ...latestKeys\n });\n } else if (esData) {\n await esEntity.put({\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 /**\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, let's also update the latest revision entry's\n * status in ES. Also, if we are publishing the latest revision and the \"LATEST page lists\n * visibility\" is not false, then we 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 if (lodashGet(page, \"visibility.list.latest\") !== false) {\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 /**\n * If we have already published revision of this page:\n * - set existing published page revision to unpublished\n * - remove old published path if paths are different\n */\n if (publishedPage) {\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 * If we need to display the published page in the list.\n * Check only if it's not false, because only that should stop the propagation.\n */\n if (lodashGet(page, \"visibility.list.published\") !== false) {\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 } else {\n /**\n * We need to check if record is in the Elasticsearch table.\n */\n const keys = {\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n };\n const esRecord = await entityGet({\n entity: esEntity,\n keys\n });\n /**\n * And if it is, delete it.\n */\n if (esRecord) {\n /**\n * Delete published record if not visible\n */\n esItems.push(esEntity.deleteBatch(keys));\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 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\n * status in ES. We can only do that if the entry actually exists, or in other words, if the\n * published page's \"LATEST pages lists visibility\" setting is not set to false.\n */\n if (latestPage.id === page.id && lodashGet(page, \"visibility.list.latest\") !== false) {\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 if (lodashGet(page, \"visibility.list.published\") !== false) {\n esItems.push(\n esEntity.deleteBatch({\n PK: createPartitionKey(page),\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 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 requestReview = async (\n params: PageStorageOperationsRequestReviewParams\n ): Promise<Page> => {\n const { original, page, latestPage } = params;\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n let esData = undefined;\n if (latestPage.id === page.id && lodashGet(page, \"visibility.list.latest\") !== false) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esData = getESLatestPageData(plugins, page);\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 request review on page record.\",\n ex.code || \"REQUEST_REVIEW_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\n }\n /**\n * Just return if we do not need to update the Elasticsearch.\n */\n if (!esData) {\n return page;\n }\n\n try {\n await esEntity.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: esData\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not request review on page Elasticsearch record.\",\n ex.code || \"REQUEST_REVIEW_ES_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\n }\n\n return page;\n };\n\n const requestChanges = async (\n params: PageStorageOperationsRequestChangesParams\n ): Promise<Page> => {\n const { original, page, latestPage } = params;\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n let esData = undefined;\n if (latestPage.id === page.id && lodashGet(page, \"visibility.list.latest\") !== false) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esData = getESLatestPageData(plugins, page);\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 request changes on page record.\",\n ex.code || \"REQUEST_CHANGES_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\n }\n /**\n * Just return if we do not need to update the Elasticsearch.\n */\n if (!esData) {\n return page;\n }\n\n try {\n await esEntity.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: esData\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not request changes on page Elasticsearch record.\",\n ex.code || \"REQUEST_CHANGES_ES_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\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);\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 queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n ...params.where,\n id: params.where.pid\n }),\n options: {\n beginsWith: \"REV#\",\n reverse: false\n }\n };\n\n try {\n return 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\n return {\n create,\n createFrom,\n update,\n delete: deleteOne,\n deleteAll: deleteAll,\n publish,\n unpublish,\n requestReview,\n requestChanges,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"]}
1
+ {"version":3,"sources":["index.ts"],"names":["createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","versionKeys","PK","SK","latestKeys","items","putBatch","TYPE","esData","table","put","index","configurations","es","data","ex","WebinyError","message","code","createFrom","latestPage","original","undefined","update","keys","latestPageResult","get","Item","deleteEsRecord","id","push","delete","deleteOne","publishedPage","partitionKey","deleteBatch","esItems","previousLatestPage","previousLatestRecord","options","lt","reverse","length","deleteAll","queryAllParams","gte","revisions","publishedPathEntryDeleted","revision","status","path","publish","esRecord","unpublish","requestReview","requestChanges","where","pid","published","version","includes","Number","split","pop","sortKey","result","list","latest","after","previousCursor","limit","initialLimit","body","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","meta","hasMoreItems","totalCount","cursor","hits","total","map","item","_source","value","listTags","tenant","locale","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith","fields","PageDynamoDbElasticsearchFieldPlugin"],"mappings":"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","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 PageStorageOperationsRequestChangesParams,\n PageStorageOperationsRequestReviewParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\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 \"~/operations/configurations\";\nimport { encodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { createLimit } from \"@webiny/api-elasticsearch/limit\";\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 lodashGet from \"lodash/get\";\nimport { get as entityGet } from \"@webiny/db-dynamodb/utils/get\";\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\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 } = 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);\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 * Specifically for the Elasticsearch.\n * If visibility on the latest list is not false, push it into the ES.\n */\n let esData: any = undefined;\n if (lodashGet(page, \"visibility.list.latest\") !== false) {\n esData = getESLatestPageData(plugins, page);\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n if (esData) {\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 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 } = 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 * In the case the latest page is the page we are currently updating\n * check for the visibility in the list.\n * If visibility is set to false - delete the record\n * Otherwise update it.\n */\n let esData: Record<string, any> | null = null;\n let deleteEsRecord = false;\n if (latestPage && latestPage.id === page.id) {\n if (lodashGet(page, \"visibility.list.latest\") === false) {\n deleteEsRecord = true;\n } else {\n esData = getESLatestPageData(plugins, page);\n }\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 if (deleteEsRecord) {\n await esEntity.delete({\n ...latestKeys\n });\n } else if (esData) {\n await esEntity.put({\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 /**\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, let's also update the latest revision entry's\n * status in ES. Also, if we are publishing the latest revision and the \"LATEST page lists\n * visibility\" is not false, then we 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 if (lodashGet(page, \"visibility.list.latest\") !== false) {\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 /**\n * If we have already published revision of this page:\n * - set existing published page revision to unpublished\n * - remove old published path if paths are different\n */\n if (publishedPage) {\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 * If we need to display the published page in the list.\n * Check only if it's not false, because only that should stop the propagation.\n */\n if (lodashGet(page, \"visibility.list.published\") !== false) {\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 } else {\n /**\n * We need to check if record is in the Elasticsearch table.\n */\n const keys = {\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n };\n const esRecord = await entityGet({\n entity: esEntity,\n keys\n });\n /**\n * And if it is, delete it.\n */\n if (esRecord) {\n /**\n * Delete published record if not visible\n */\n esItems.push(esEntity.deleteBatch(keys));\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 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\n * status in ES. We can only do that if the entry actually exists, or in other words, if the\n * published page's \"LATEST pages lists visibility\" setting is not set to false.\n */\n if (latestPage.id === page.id && lodashGet(page, \"visibility.list.latest\") !== false) {\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 if (lodashGet(page, \"visibility.list.published\") !== false) {\n esItems.push(\n esEntity.deleteBatch({\n PK: createPartitionKey(page),\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 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 requestReview = async (\n params: PageStorageOperationsRequestReviewParams\n ): Promise<Page> => {\n const { original, page, latestPage } = params;\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n let esData = undefined;\n if (latestPage.id === page.id && lodashGet(page, \"visibility.list.latest\") !== false) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esData = getESLatestPageData(plugins, page);\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 request review on page record.\",\n ex.code || \"REQUEST_REVIEW_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\n }\n /**\n * Just return if we do not need to update the Elasticsearch.\n */\n if (!esData) {\n return page;\n }\n\n try {\n await esEntity.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: esData\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not request review on page Elasticsearch record.\",\n ex.code || \"REQUEST_REVIEW_ES_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\n }\n\n return page;\n };\n\n const requestChanges = async (\n params: PageStorageOperationsRequestChangesParams\n ): Promise<Page> => {\n const { original, page, latestPage } = params;\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n let esData = undefined;\n if (latestPage.id === page.id && lodashGet(page, \"visibility.list.latest\") !== false) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esData = getESLatestPageData(plugins, page);\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 request changes on page record.\",\n ex.code || \"REQUEST_CHANGES_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\n }\n /**\n * Just return if we do not need to update the Elasticsearch.\n */\n if (!esData) {\n return page;\n }\n\n try {\n await esEntity.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: esData\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not request changes on page Elasticsearch record.\",\n ex.code || \"REQUEST_CHANGES_ES_ERROR\",\n {\n original,\n page,\n latestPage\n }\n );\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);\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,\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 requestReview,\n requestChanges,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-page-builder-so-ddb-es",
3
- "version": "5.25.0-beta.1",
3
+ "version": "5.25.0-beta.4",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "@webiny/api-page-builder",
@@ -17,15 +17,15 @@
17
17
  "description": "The DynamoDB + Elasticsearch storage operations Webiny Page Builder API.",
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@babel/runtime": "7.17.2",
21
- "@webiny/api-elasticsearch": "5.25.0-beta.1",
22
- "@webiny/api-page-builder": "5.25.0-beta.1",
23
- "@webiny/api-upgrade": "5.25.0-beta.1",
24
- "@webiny/db-dynamodb": "5.25.0-beta.1",
25
- "@webiny/error": "5.25.0-beta.1",
26
- "@webiny/handler-db": "5.25.0-beta.1",
27
- "@webiny/plugins": "5.25.0-beta.1",
28
- "@webiny/utils": "5.25.0-beta.1",
20
+ "@babel/runtime": "7.17.7",
21
+ "@webiny/api-elasticsearch": "5.25.0-beta.4",
22
+ "@webiny/api-page-builder": "5.25.0-beta.4",
23
+ "@webiny/api-upgrade": "5.25.0-beta.4",
24
+ "@webiny/db-dynamodb": "5.25.0-beta.4",
25
+ "@webiny/error": "5.25.0-beta.4",
26
+ "@webiny/handler-db": "5.25.0-beta.4",
27
+ "@webiny/plugins": "5.25.0-beta.4",
28
+ "@webiny/utils": "5.25.0-beta.4",
29
29
  "dataloader": "2.0.0",
30
30
  "dynamodb-toolbox": "0.3.5",
31
31
  "elastic-ts": "0.7.0",
@@ -39,14 +39,14 @@
39
39
  "@elastic/elasticsearch": "7.12.0",
40
40
  "@elastic/elasticsearch-mock": "0.3.0",
41
41
  "@shelf/jest-elasticsearch": "^1.0.0",
42
- "@webiny/api-dynamodb-to-elasticsearch": "^5.25.0-beta.1",
43
- "@webiny/api-security": "^5.25.0-beta.1",
44
- "@webiny/api-tenancy": "^5.25.0-beta.1",
45
- "@webiny/cli": "^5.25.0-beta.1",
46
- "@webiny/handler": "^5.25.0-beta.1",
47
- "@webiny/handler-aws": "^5.25.0-beta.1",
48
- "@webiny/handler-graphql": "^5.25.0-beta.1",
49
- "@webiny/project-utils": "^5.25.0-beta.1",
42
+ "@webiny/api-dynamodb-to-elasticsearch": "^5.25.0-beta.4",
43
+ "@webiny/api-security": "^5.25.0-beta.4",
44
+ "@webiny/api-tenancy": "^5.25.0-beta.4",
45
+ "@webiny/cli": "^5.25.0-beta.4",
46
+ "@webiny/handler": "^5.25.0-beta.4",
47
+ "@webiny/handler-aws": "^5.25.0-beta.4",
48
+ "@webiny/handler-graphql": "^5.25.0-beta.4",
49
+ "@webiny/project-utils": "^5.25.0-beta.4",
50
50
  "jest": "^26.6.3",
51
51
  "jest-dynalite": "^3.2.0",
52
52
  "jest-environment-node": "^27.0.6",
@@ -62,5 +62,5 @@
62
62
  "build": "yarn webiny run build",
63
63
  "watch": "yarn webiny run watch"
64
64
  },
65
- "gitHead": "c5cbc36b39a28e3f1c58de7d768fdcd113ad8e15"
65
+ "gitHead": "625ab53457e211940b30b1fe86add4f19f63c8b0"
66
66
  }
@@ -0,0 +1,4 @@
1
+ import { FieldPlugin } from "@webiny/db-dynamodb/plugins/definitions/FieldPlugin";
2
+ export declare class PageDynamoDbElasticsearchFieldPlugin extends FieldPlugin {
3
+ static readonly type: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.PageDynamoDbElasticsearchFieldPlugin = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _FieldPlugin = require("@webiny/db-dynamodb/plugins/definitions/FieldPlugin");
13
+
14
+ class PageDynamoDbElasticsearchFieldPlugin extends _FieldPlugin.FieldPlugin {}
15
+
16
+ exports.PageDynamoDbElasticsearchFieldPlugin = PageDynamoDbElasticsearchFieldPlugin;
17
+ (0, _defineProperty2.default)(PageDynamoDbElasticsearchFieldPlugin, "type", "pageBuilder.dynamodb.es.page.field");
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PageDynamoDbElasticsearchFieldPlugin.ts"],"names":["PageDynamoDbElasticsearchFieldPlugin","FieldPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,oCAAN,SAAmDC,wBAAnD,CAA+D;;;8BAAzDD,oC,UACsC,oC","sourcesContent":["import { FieldPlugin } from \"@webiny/db-dynamodb/plugins/definitions/FieldPlugin\";\n\nexport class PageDynamoDbElasticsearchFieldPlugin extends FieldPlugin {\n public static override readonly type: string = \"pageBuilder.dynamodb.es.page.field\";\n}\n"]}