@webiny/api-page-builder-so-ddb-es 5.24.0 → 5.25.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/categoryEntity.js.map +1 -0
- package/definitions/menuEntity.js.map +1 -0
- package/definitions/pageElasticsearchEntity.js.map +1 -0
- package/definitions/pageElementEntity.js.map +1 -0
- package/definitions/pageEntity.js.map +1 -0
- package/definitions/settingsEntity.js.map +1 -0
- package/definitions/systemEntity.js.map +1 -0
- package/definitions/table.js.map +1 -0
- package/definitions/tableElasticsearch.js.map +1 -0
- package/index.js.map +1 -0
- package/operations/category/dataLoader.d.ts +1 -5
- package/operations/category/dataLoader.js +1 -1
- package/operations/category/dataLoader.js.map +1 -0
- package/operations/category/fields.js.map +1 -0
- package/operations/category/index.d.ts +2 -2
- package/operations/category/index.js.map +1 -0
- package/operations/category/keys.js.map +1 -0
- package/operations/configurations.js.map +1 -0
- package/operations/menu/fields.js.map +1 -0
- package/operations/menu/index.d.ts +2 -2
- package/operations/menu/index.js +1 -1
- package/operations/menu/index.js.map +1 -0
- package/operations/pageElement/fields.js.map +1 -0
- package/operations/pageElement/index.d.ts +2 -2
- package/operations/pageElement/index.js +1 -1
- package/operations/pageElement/index.js.map +1 -0
- package/operations/pages/elasticsearchQueryBody.d.ts +2 -9
- package/operations/pages/elasticsearchQueryBody.js +3 -3
- package/operations/pages/elasticsearchQueryBody.js.map +1 -0
- package/operations/pages/fields.js.map +1 -0
- package/operations/pages/helpers.d.ts +3 -11
- package/operations/pages/helpers.js.map +1 -0
- package/operations/pages/index.d.ts +2 -2
- package/operations/pages/index.js +12 -5
- package/operations/pages/index.js.map +1 -0
- package/operations/pages/keys.js.map +1 -0
- package/operations/settings/index.d.ts +2 -2
- package/operations/settings/index.js.map +1 -0
- package/operations/system/index.d.ts +2 -2
- package/operations/system/index.js.map +1 -0
- package/operations/system/installation.d.ts +2 -2
- package/operations/system/installation.js.map +1 -0
- package/package.json +20 -20
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/IndexPageDataPlugin.d.ts +1 -1
- package/plugins/definitions/IndexPageDataPlugin.js.map +1 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.d.ts +1 -2
- package/plugins/definitions/PageElasticsearchFieldPlugin.js +1 -6
- package/plugins/definitions/PageElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/SearchLatestPagesPlugin.d.ts +1 -1
- package/plugins/definitions/SearchLatestPagesPlugin.js.map +1 -0
- package/plugins/definitions/SearchPagesPlugin.js.map +1 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.d.ts +1 -1
- package/plugins/definitions/SearchPublishedPagesPlugin.js.map +1 -0
- package/types.js.map +1 -0
- package/upgrades/index.js.map +1 -0
- package/upgrades/v5.15.0/category.js.map +1 -0
- package/upgrades/v5.15.0/index.js.map +1 -0
- package/upgrades/v5.15.0/menu.js.map +1 -0
- package/upgrades/v5.15.0/pageElement.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["categoryEntity.ts"],"names":["createCategoryEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","slug","url","layout","createdOn","createdBy","tenant","locale"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,oBAAoB,GAAIC,MAAD,IAAiC;AACjE,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNN,MAAAA,IAAI,EAAE;AACFM,QAAAA,IAAI,EAAE;AADJ,OAVA;AAaNC,MAAAA,IAAI,EAAE;AACFD,QAAAA,IAAI,EAAE;AADJ,OAbA;AAgBNE,MAAAA,GAAG,EAAE;AACDF,QAAAA,IAAI,EAAE;AADL,OAhBC;AAmBNG,MAAAA,MAAM,EAAE;AACJH,QAAAA,IAAI,EAAE;AADF,OAnBF;AAsBNI,MAAAA,SAAS,EAAE;AACPJ,QAAAA,IAAI,EAAE;AADC,OAtBL;AAyBNK,MAAAA,SAAS,EAAE;AACPL,QAAAA,IAAI,EAAE;AADC,OAzBL;AA4BNM,MAAAA,MAAM,EAAE;AACJN,QAAAA,IAAI,EAAE;AADF,OA5BF;AA+BNO,MAAAA,MAAM,EAAE;AACJP,QAAAA,IAAI,EAAE;AADF;AA/BF,OAkCFT,UAAU,IAAI,EAlCZ;AAHI,GAAX,CAAP;AAwCH,CA1CM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createCategoryEntity = (params: Params): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n slug: {\n type: \"string\"\n },\n url: {\n type: \"string\"\n },\n layout: {\n type: \"string\"\n },\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["menuEntity.ts"],"names":["createMenuEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","title","slug","description","items","createdOn","createdBy","tenant","locale"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,gBAAgB,GAAIC,MAAD,IAAiC;AAC7D,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,KAAK,EAAE;AACHD,QAAAA,IAAI,EAAE;AADH,OAVD;AAaNE,MAAAA,IAAI,EAAE;AACFF,QAAAA,IAAI,EAAE;AADJ,OAbA;AAgBNG,MAAAA,WAAW,EAAE;AACTH,QAAAA,IAAI,EAAE;AADG,OAhBP;AAmBNI,MAAAA,KAAK,EAAE;AACHJ,QAAAA,IAAI,EAAE;AADH,OAnBD;AAsBNK,MAAAA,SAAS,EAAE;AACPL,QAAAA,IAAI,EAAE;AADC,OAtBL;AAyBNM,MAAAA,SAAS,EAAE;AACPN,QAAAA,IAAI,EAAE;AADC,OAzBL;AA4BNO,MAAAA,MAAM,EAAE;AACJP,QAAAA,IAAI,EAAE;AADF,OA5BF;AA+BNQ,MAAAA,MAAM,EAAE;AACJR,QAAAA,IAAI,EAAE;AADF;AA/BF,OAkCFT,UAAU,IAAI,EAlCZ;AAHI,GAAX,CAAP;AAwCH,CA1CM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createMenuEntity = (params: Params): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n title: {\n type: \"string\"\n },\n slug: {\n type: \"string\"\n },\n description: {\n type: \"string\"\n },\n items: {\n type: \"list\"\n },\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["pageElasticsearchEntity.ts"],"names":["createPageElasticsearchEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","index","type","data"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,6BAA6B,GAAIC,MAAD,IAAiC;AAC1E,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,KAAK,EAAE;AACHC,QAAAA,IAAI,EAAE;AADH,OAPD;AAUNC,MAAAA,IAAI,EAAE;AACFD,QAAAA,IAAI,EAAE;AADJ;AAVA,OAaFT,UAAU,IAAI,EAbZ;AAHI,GAAX,CAAP;AAmBH,CArBM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createPageElasticsearchEntity = (params: Params): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n index: {\n type: \"string\"\n },\n data: {\n type: \"map\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["pageElementEntity.ts"],"names":["createPageElementEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","id","category","content","preview","createdOn","createdBy","tenant","locale"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,uBAAuB,GAAIC,MAAD,IAAiC;AACpE,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,EAAE,EAAE;AACAD,QAAAA,IAAI,EAAE;AADN,OAVE;AAaNN,MAAAA,IAAI,EAAE;AACFM,QAAAA,IAAI,EAAE;AADJ,OAbA;AAgBNA,MAAAA,IAAI,EAAE;AACFA,QAAAA,IAAI,EAAE;AADJ,OAhBA;AAmBNE,MAAAA,QAAQ,EAAE;AACNF,QAAAA,IAAI,EAAE;AADA,OAnBJ;AAsBNG,MAAAA,OAAO,EAAE;AACLH,QAAAA,IAAI,EAAE;AADD,OAtBH;AAyBNI,MAAAA,OAAO,EAAE;AACLJ,QAAAA,IAAI,EAAE;AADD,OAzBH;AA4BNK,MAAAA,SAAS,EAAE;AACPL,QAAAA,IAAI,EAAE;AADC,OA5BL;AA+BNM,MAAAA,SAAS,EAAE;AACPN,QAAAA,IAAI,EAAE;AADC,OA/BL;AAkCNO,MAAAA,MAAM,EAAE;AACJP,QAAAA,IAAI,EAAE;AADF,OAlCF;AAqCNQ,MAAAA,MAAM,EAAE;AACJR,QAAAA,IAAI,EAAE;AADF;AArCF,OAwCFT,UAAU,IAAI,EAxCZ;AAHI,GAAX,CAAP;AA8CH,CAhDM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createPageElementEntity = (params: Params): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n name: {\n type: \"string\"\n },\n type: {\n type: \"string\"\n },\n category: {\n type: \"string\"\n },\n content: {\n type: \"map\"\n },\n preview: {\n type: \"map\"\n },\n createdOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["pageEntity.ts"],"names":["createPageEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","TYPE","type","id","pid","tenant","locale","title","editor","createdFrom","path","category","content","publishedOn","version","settings","locked","status","visibility","home","notFound","createdOn","savedOn","createdBy","ownedBy","webinyVersion"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,gBAAgB,GAAIC,MAAD,IAAiC;AAC7D,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,IAAI,EAAE;AACFC,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,EAAE,EAAE;AACAD,QAAAA,IAAI,EAAE;AADN,OAVE;AAaNE,MAAAA,GAAG,EAAE;AACDF,QAAAA,IAAI,EAAE;AADL,OAbC;AAgBNG,MAAAA,MAAM,EAAE;AACJH,QAAAA,IAAI,EAAE;AADF,OAhBF;AAmBNI,MAAAA,MAAM,EAAE;AACJJ,QAAAA,IAAI,EAAE;AADF,OAnBF;AAsBNK,MAAAA,KAAK,EAAE;AACHL,QAAAA,IAAI,EAAE;AADH,OAtBD;AAyBNM,MAAAA,MAAM,EAAE;AACJN,QAAAA,IAAI,EAAE;AADF,OAzBF;AA4BNO,MAAAA,WAAW,EAAE;AACTP,QAAAA,IAAI,EAAE;AADG,OA5BP;AA+BNQ,MAAAA,IAAI,EAAE;AACFR,QAAAA,IAAI,EAAE;AADJ,OA/BA;AAkCNS,MAAAA,QAAQ,EAAE;AACNT,QAAAA,IAAI,EAAE;AADA,OAlCJ;AAqCNU,MAAAA,OAAO,EAAE;AACLV,QAAAA,IAAI,EAAE;AADD,OArCH;AAwCNW,MAAAA,WAAW,EAAE;AACTX,QAAAA,IAAI,EAAE;AADG,OAxCP;AA2CNY,MAAAA,OAAO,EAAE;AACLZ,QAAAA,IAAI,EAAE;AADD,OA3CH;AA8CNa,MAAAA,QAAQ,EAAE;AACNb,QAAAA,IAAI,EAAE;AADA,OA9CJ;AAiDNc,MAAAA,MAAM,EAAE;AACJd,QAAAA,IAAI,EAAE;AADF,OAjDF;AAoDNe,MAAAA,MAAM,EAAE;AACJf,QAAAA,IAAI,EAAE;AADF,OApDF;AAuDNgB,MAAAA,UAAU,EAAE;AACRhB,QAAAA,IAAI,EAAE;AADE,OAvDN;AA0DNiB,MAAAA,IAAI,EAAE;AACFjB,QAAAA,IAAI,EAAE;AADJ,OA1DA;AA6DNkB,MAAAA,QAAQ,EAAE;AACNlB,QAAAA,IAAI,EAAE;AADA,OA7DJ;AAgENmB,MAAAA,SAAS,EAAE;AACPnB,QAAAA,IAAI,EAAE;AADC,OAhEL;AAmENoB,MAAAA,OAAO,EAAE;AACLpB,QAAAA,IAAI,EAAE;AADD,OAnEH;AAsENqB,MAAAA,SAAS,EAAE;AACPrB,QAAAA,IAAI,EAAE;AADC,OAtEL;AAyENsB,MAAAA,OAAO,EAAE;AACLtB,QAAAA,IAAI,EAAE;AADD,OAzEH;AA4ENuB,MAAAA,aAAa,EAAE;AACXvB,QAAAA,IAAI,EAAE;AADK;AA5ET,OA+EFT,UAAU,IAAI,EA/EZ;AAHI,GAAX,CAAP;AAqFH,CAvFM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createPageEntity = (params: Params): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n TYPE: {\n type: \"string\"\n },\n id: {\n type: \"string\"\n },\n pid: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n title: {\n type: \"string\"\n },\n editor: {\n type: \"string\"\n },\n createdFrom: {\n type: \"string\"\n },\n path: {\n type: \"string\"\n },\n category: {\n type: \"string\"\n },\n content: {\n type: \"map\"\n },\n publishedOn: {\n type: \"string\"\n },\n version: {\n type: \"number\"\n },\n settings: {\n type: \"map\"\n },\n locked: {\n type: \"boolean\"\n },\n status: {\n type: \"string\"\n },\n visibility: {\n type: \"map\"\n },\n home: {\n type: \"boolean\"\n },\n notFound: {\n type: \"boolean\"\n },\n createdOn: {\n type: \"string\"\n },\n savedOn: {\n type: \"string\"\n },\n createdBy: {\n type: \"map\"\n },\n ownedBy: {\n type: \"map\"\n },\n webinyVersion: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["settingsEntity.ts"],"names":["createSettingsEntity","params","entityName","table","attributes","Entity","name","PK","partitionKey","SK","sortKey","type","websiteUrl","websitePreviewUrl","favicon","logo","prerendering","social","pages","tenant","locale","TYPE","theme"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,oBAAoB,GAAIC,MAAD,IAAiC;AACjE,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,KAAd;AAAqBC,IAAAA;AAArB,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdC,IAAAA,KAFc;AAGdC,IAAAA,UAAU;AACNG,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONJ,MAAAA,IAAI,EAAE;AACFK,QAAAA,IAAI,EAAE;AADJ,OAPA;AAUNC,MAAAA,UAAU,EAAE;AACRD,QAAAA,IAAI,EAAE;AADE,OAVN;AAaNE,MAAAA,iBAAiB,EAAE;AACfF,QAAAA,IAAI,EAAE;AADS,OAbb;AAgBNG,MAAAA,OAAO,EAAE;AACLH,QAAAA,IAAI,EAAE;AADD,OAhBH;AAmBNI,MAAAA,IAAI,EAAE;AACFJ,QAAAA,IAAI,EAAE;AADJ,OAnBA;AAsBNK,MAAAA,YAAY,EAAE;AACVL,QAAAA,IAAI,EAAE;AADI,OAtBR;AAyBNM,MAAAA,MAAM,EAAE;AACJN,QAAAA,IAAI,EAAE;AADF,OAzBF;AA4BNO,MAAAA,KAAK,EAAE;AACHP,QAAAA,IAAI,EAAE;AADH,OA5BD;AA+BNA,MAAAA,IAAI,EAAE;AACFA,QAAAA,IAAI,EAAE;AADJ,OA/BA;AAkCNQ,MAAAA,MAAM,EAAE;AACJR,QAAAA,IAAI,EAAE;AADF,OAlCF;AAqCNS,MAAAA,MAAM,EAAE;AACJT,QAAAA,IAAI,EAAE;AADF,OArCF;AAwCNU,MAAAA,IAAI,EAAE;AACFV,QAAAA,IAAI,EAAE;AADJ,OAxCA;AA2CN;AACAW,MAAAA,KAAK,EAAE;AACHX,QAAAA,IAAI,EAAE;AADH;AA5CD,OA+CFP,UAAU,IAAI,EA/CZ;AAHI,GAAX,CAAP;AAqDH,CAvDM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createSettingsEntity = (params: Params): Entity<any> => {\n const { entityName, table, attributes } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n name: {\n type: \"string\"\n },\n websiteUrl: {\n type: \"string\"\n },\n websitePreviewUrl: {\n type: \"string\"\n },\n favicon: {\n type: \"map\"\n },\n logo: {\n type: \"map\"\n },\n prerendering: {\n type: \"map\"\n },\n social: {\n type: \"map\"\n },\n pages: {\n type: \"map\"\n },\n type: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n locale: {\n type: \"string\"\n },\n TYPE: {\n type: \"string\"\n },\n // TODO: implement this via a plugin when https://github.com/webiny/webiny-js/issues/2169 is resolved.\n theme: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["systemEntity.ts"],"names":["createSystemEntity","params","entityName","attributes","table","Entity","name","PK","partitionKey","SK","sortKey","version","type","tenant"],"mappings":";;;;;;;;;;;AAAA;;;;;;AASO,MAAMA,kBAAkB,GAAIC,MAAD,IAAiC;AAC/D,QAAM;AAAEC,IAAAA,UAAF;AAAcC,IAAAA,UAAd;AAA0BC,IAAAA;AAA1B,MAAoCH,MAA1C;AACA,SAAO,IAAII,uBAAJ,CAAW;AACdC,IAAAA,IAAI,EAAEJ,UADQ;AAEdE,IAAAA,KAFc;AAGdD,IAAAA,UAAU;AACNI,MAAAA,EAAE,EAAE;AACAC,QAAAA,YAAY,EAAE;AADd,OADE;AAINC,MAAAA,EAAE,EAAE;AACAC,QAAAA,OAAO,EAAE;AADT,OAJE;AAONC,MAAAA,OAAO,EAAE;AACLC,QAAAA,IAAI,EAAE;AADD,OAPH;AAUNC,MAAAA,MAAM,EAAE;AACJD,QAAAA,IAAI,EAAE;AADF;AAVF,OAaFT,UAAU,IAAI,EAbZ;AAHI,GAAX,CAAP;AAmBH,CArBM","sourcesContent":["import { Entity, Table } from \"dynamodb-toolbox\";\nimport { Attributes } from \"~/types\";\n\ninterface Params {\n table: Table;\n entityName: string;\n attributes: Attributes;\n}\n\nexport const createSystemEntity = (params: Params): Entity<any> => {\n const { entityName, attributes, table } = params;\n return new Entity({\n name: entityName,\n table,\n attributes: {\n PK: {\n partitionKey: true\n },\n SK: {\n sortKey: true\n },\n version: {\n type: \"string\"\n },\n tenant: {\n type: \"string\"\n },\n ...(attributes || {})\n }\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["table.ts"],"names":["createTable","table","documentClient","tableConfig","name","process","env","DB_PAGE_BUILDER","DB_TABLE","partitionKey","sortKey","DocumentClient","config","Table"],"mappings":";;;;;;;AAEA;;AAOO,MAAMA,WAAW,GAAG,CAAC;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,KAA8C;AACrE,QAAMC,WAA6B,GAAG;AAClCC,IAAAA,IAAI,EAAEC,OAAO,CAACC,GAAR,CAAYC,eAAZ,IAAgCF,OAAO,CAACC,GAAR,CAAYE,QADhB;AAElCC,IAAAA,YAAY,EAAE,IAFoB;AAGlCC,IAAAA,OAAO,EAAE,IAHyB;AAIlCC,IAAAA,cAAc,EAAET;AAJkB,GAAtC;AAOA,QAAMU,MAAM,GAAG,OAAOX,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACE,WAAD,CAAnC,GAAmDA,WAAlE;AAEA,SAAO,IAAIU,sBAAJ,CAAUD,MAAV,CAAP;AACH,CAXM","sourcesContent":["import { TableModifier } from \"~/types\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table } from \"dynamodb-toolbox\";\nimport { TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\n\ninterface Params {\n table?: TableModifier;\n documentClient: DocumentClient;\n}\nexport const createTable = ({ table, documentClient }: Params): Table => {\n const tableConfig: TableConstructor = {\n name: process.env.DB_PAGE_BUILDER || (process.env.DB_TABLE as string),\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient\n };\n\n const config = typeof table === \"function\" ? table(tableConfig) : tableConfig;\n\n return new Table(config);\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["tableElasticsearch.ts"],"names":["createElasticsearchTable","table","documentClient","tableConfig","name","process","env","DB_TABLE_ELASTICSEARCH","partitionKey","sortKey","DocumentClient","config","Table"],"mappings":";;;;;;;AAEA;;AAOO,MAAMA,wBAAwB,GAAG,CAAC;AAAEC,EAAAA,KAAF;AAASC,EAAAA;AAAT,CAAD,KAA8C;AAClF,QAAMC,WAA6B,GAAG;AAClCC,IAAAA,IAAI,EAAEC,OAAO,CAACC,GAAR,CAAYC,sBADgB;AAElCC,IAAAA,YAAY,EAAE,IAFoB;AAGlCC,IAAAA,OAAO,EAAE,IAHyB;AAIlCC,IAAAA,cAAc,EAAER;AAJkB,GAAtC;AAOA,QAAMS,MAAM,GAAG,OAAOV,KAAP,KAAiB,UAAjB,GAA8BA,KAAK,CAACE,WAAD,CAAnC,GAAmDA,WAAlE;AAEA,SAAO,IAAIS,sBAAJ,CAAUD,MAAV,CAAP;AACH,CAXM","sourcesContent":["import { TableModifier } from \"~/types\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Table } from \"dynamodb-toolbox\";\nimport { TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\n\ninterface Params {\n table?: TableModifier;\n documentClient: DocumentClient;\n}\nexport const createElasticsearchTable = ({ table, documentClient }: Params): Table => {\n const tableConfig: TableConstructor = {\n name: process.env.DB_TABLE_ELASTICSEARCH as string,\n partitionKey: \"PK\",\n sortKey: \"SK\",\n DocumentClient: documentClient\n };\n\n const config = typeof table === \"function\" ? table(tableConfig) : tableConfig;\n\n return new Table(config);\n};\n"]}
|
package/index.js.map
ADDED
|
@@ -0,0 +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"]}
|
|
@@ -3,11 +3,7 @@ import { Entity } from "dynamodb-toolbox";
|
|
|
3
3
|
interface Params {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
slug: string;
|
|
8
|
-
tenant: string;
|
|
9
|
-
locale: string;
|
|
10
|
-
}
|
|
6
|
+
declare type DataLoaderGetItem = Pick<Category, "slug" | "tenant" | "locale">;
|
|
11
7
|
export declare class CategoryDataLoader {
|
|
12
8
|
private _getDataLoader;
|
|
13
9
|
private readonly entity;
|
|
@@ -19,7 +19,7 @@ var _keys = require("./keys");
|
|
|
19
19
|
|
|
20
20
|
class CategoryDataLoader {
|
|
21
21
|
constructor(params) {
|
|
22
|
-
(0, _defineProperty2.default)(this, "_getDataLoader",
|
|
22
|
+
(0, _defineProperty2.default)(this, "_getDataLoader", undefined);
|
|
23
23
|
(0, _defineProperty2.default)(this, "entity", void 0);
|
|
24
24
|
this.entity = params.entity;
|
|
25
25
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["dataLoader.ts"],"names":["CategoryDataLoader","constructor","params","undefined","entity","getOne","item","getDataLoader","load","getAll","items","loadMany","clear","clearAll","_getDataLoader","cacheKeyFn","key","tenant","locale","slug","DataLoader","batched","map","getBatch","PK","SK","records","table","results","reduce","collection","result"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAQO,MAAMA,kBAAN,CAAyB;AAK5BC,EAAAA,WAAW,CAACC,MAAD,EAAiB;AAAA,0DAJ+BC,SAI/B;AAAA;AACxB,SAAKC,MAAL,GAAcF,MAAM,CAACE,MAArB;AACH;;AAEkB,QAANC,MAAM,CAACC,IAAD,EAA6C;AAC5D,WAAO,MAAM,KAAKC,aAAL,GAAqBC,IAArB,CAA0BF,IAA1B,CAAb;AACH;;AAEkB,QAANG,MAAM,CAACC,KAAD,EAAkD;AACjE,WAAO,MAAM,KAAKH,aAAL,GAAqBI,QAArB,CAA8BD,KAA9B,CAAb;AACH;;AAEME,EAAAA,KAAK,GAAS;AACjB,SAAKL,aAAL,GAAqBM,QAArB;AACH;;AAEON,EAAAA,aAAa,GAAyB;AAC1C,QAAI,CAAC,KAAKO,cAAV,EAA0B;AACtB,YAAMC,UAAU,GAAIC,GAAD,IAA4B;AAC3C,eAAQ,KAAIA,GAAG,CAACC,MAAO,MAAKD,GAAG,CAACE,MAAO,IAAGF,GAAG,CAACG,IAAK,EAAnD;AACH,OAFD;;AAGA,WAAKL,cAAL,GAAsB,IAAIM,mBAAJ,CAClB,MAAMV,KAAN,IAAe;AACX,cAAMW,OAAO,GAAGX,KAAK,CAACY,GAAN,CAAUhB,IAAI,IAAI;AAC9B,iBAAO,KAAKF,MAAL,CAAYmB,QAAZ,CAAqB;AACxBC,YAAAA,EAAE,EAAE,8BAAmBlB,IAAnB,CADoB;AAExBmB,YAAAA,EAAE,EAAE,yBAAcnB,IAAd;AAFoB,WAArB,CAAP;AAIH,SALe,CAAhB;AAOA,cAAMoB,OAAO,GAAG,MAAM,6BAAuB;AACzCC,UAAAA,KAAK,EAAE,KAAKvB,MAAL,CAAYuB,KADsB;AAEzCjB,UAAAA,KAAK,EAAEW;AAFkC,SAAvB,CAAtB;AAKA,cAAMO,OAAO,GAAGF,OAAO,CAACG,MAAR,CAAe,CAACC,UAAD,EAAaC,MAAb,KAAwB;AACnD,cAAI,CAACA,MAAL,EAAa;AACT,mBAAOD,UAAP;AACH;;AACD,gBAAMd,GAAG,GAAGD,UAAU,CAACgB,MAAD,CAAtB;AACAD,UAAAA,UAAU,CAACd,GAAD,CAAV,GAAkB,0BAAY,KAAKZ,MAAjB,EAAyB2B,MAAzB,CAAlB;AACA,iBAAOD,UAAP;AACH,SAPe,EAOb,EAPa,CAAhB;AAQA,eAAOpB,KAAK,CAACY,GAAN,CAAUhB,IAAI,IAAI;AACrB,gBAAMU,GAAG,GAAGD,UAAU,CAACT,IAAD,CAAtB;AACA,iBAAOsB,OAAO,CAACZ,GAAD,CAAP,IAAgB,IAAvB;AACH,SAHM,CAAP;AAIH,OA1BiB,EA2BlB;AACID,QAAAA;AADJ,OA3BkB,CAAtB;AA+BH;;AACD,WAAO,KAAKD,cAAZ;AACH;;AA3D2B","sourcesContent":["import DataLoader from \"dataloader\";\nimport { batchReadAll } from \"@webiny/db-dynamodb/utils/batchRead\";\nimport { Category } from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { createPartitionKey, createSortKey } from \"./keys\";\n\ninterface Params {\n entity: Entity<any>;\n}\n\ntype DataLoaderGetItem = Pick<Category, \"slug\" | \"tenant\" | \"locale\">;\n\nexport class CategoryDataLoader {\n private _getDataLoader: DataLoader<any, any> | undefined = undefined;\n\n private readonly entity: Entity<any>;\n\n constructor(params: Params) {\n this.entity = params.entity;\n }\n\n public async getOne(item: DataLoaderGetItem): Promise<Category> {\n return await this.getDataLoader().load(item);\n }\n\n public async getAll(items: DataLoaderGetItem[]): Promise<Category[]> {\n return await this.getDataLoader().loadMany(items);\n }\n\n public clear(): void {\n this.getDataLoader().clearAll();\n }\n\n private getDataLoader(): DataLoader<any, any> {\n if (!this._getDataLoader) {\n const cacheKeyFn = (key: DataLoaderGetItem) => {\n return `T#${key.tenant}#L#${key.locale}#${key.slug}`;\n };\n this._getDataLoader = new DataLoader(\n async items => {\n const batched = items.map(item => {\n return this.entity.getBatch({\n PK: createPartitionKey(item),\n SK: createSortKey(item)\n });\n });\n\n const records = await batchReadAll<Category>({\n table: this.entity.table,\n items: batched\n });\n\n const results = records.reduce((collection, result) => {\n if (!result) {\n return collection;\n }\n const key = cacheKeyFn(result);\n collection[key] = cleanupItem(this.entity, result) as Category;\n return collection;\n }, {} as Record<string, Category>);\n return items.map(item => {\n const key = cacheKeyFn(item);\n return results[key] || null;\n });\n },\n {\n cacheKeyFn\n }\n );\n }\n return this._getDataLoader;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fields.ts"],"names":["createCategoryDynamoDbFields","CategoryDynamoDbElasticFieldPlugin","field","type","path"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,4BAA4B,GAAG,MAA4C;AACpF,SAAO,CACH,IAAIC,sEAAJ,CAAuC;AACnCC,IAAAA,KAAK,EAAE;AAD4B,GAAvC,CADG,EAIH,IAAID,sEAAJ,CAAuC;AACnCC,IAAAA,KAAK,EAAE,WAD4B;AAEnCC,IAAAA,IAAI,EAAE;AAF6B,GAAvC,CAJG,EAQH,IAAIF,sEAAJ,CAAuC;AACnCC,IAAAA,KAAK,EAAE,SAD4B;AAEnCC,IAAAA,IAAI,EAAE;AAF6B,GAAvC,CARG,EAYH,IAAIF,sEAAJ,CAAuC;AACnCC,IAAAA,KAAK,EAAE,aAD4B;AAEnCC,IAAAA,IAAI,EAAE;AAF6B,GAAvC,CAZG,EAgBH,IAAIF,sEAAJ,CAAuC;AACnCC,IAAAA,KAAK,EAAE,WAD4B;AAEnCE,IAAAA,IAAI,EAAE;AAF6B,GAAvC,CAhBG,CAAP;AAqBH,CAtBM","sourcesContent":["import { CategoryDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/CategoryDynamoDbElasticFieldPlugin\";\n\nexport const createCategoryDynamoDbFields = (): CategoryDynamoDbElasticFieldPlugin[] => {\n return [\n new CategoryDynamoDbElasticFieldPlugin({\n field: \"id\"\n }),\n new CategoryDynamoDbElasticFieldPlugin({\n field: \"createdOn\",\n type: \"date\"\n }),\n new CategoryDynamoDbElasticFieldPlugin({\n field: \"savedOn\",\n type: \"date\"\n }),\n new CategoryDynamoDbElasticFieldPlugin({\n field: \"publishedOn\",\n type: \"date\"\n }),\n new CategoryDynamoDbElasticFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\"\n })\n ];\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { CategoryStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
3
|
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
-
export interface
|
|
4
|
+
export interface CreateCategoryStorageOperationsParams {
|
|
5
5
|
entity: Entity<any>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
}
|
|
8
|
-
export declare const createCategoryStorageOperations: ({ entity, plugins }:
|
|
8
|
+
export declare const createCategoryStorageOperations: ({ entity, plugins }: CreateCategoryStorageOperationsParams) => CategoryStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["createType","createCategoryStorageOperations","entity","plugins","dataLoader","CategoryDataLoader","get","params","where","getOne","ex","WebinyError","message","code","create","category","keys","PK","tenant","locale","SK","put","TYPE","clear","update","original","deleteCategory","delete","list","sort","limit","restWhere","queryAllParams","partitionKey","options","gt","items","fields","byType","CategoryDynamoDbElasticFieldPlugin","type","filteredItems","sortedItems","totalCount","length","after"],"mappings":"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","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n Category,\n CategoryStorageOperations,\n CategoryStorageOperationsCreateParams,\n CategoryStorageOperationsDeleteParams,\n CategoryStorageOperationsGetParams,\n CategoryStorageOperationsListParams,\n CategoryStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { CategoryDataLoader } from \"./dataLoader\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { CategoryDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/CategoryDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { createPartitionKey, createSortKey } from \"~/operations/category/keys\";\n\nconst createType = (): string => {\n return \"pb.category\";\n};\n\nexport interface CreateCategoryStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createCategoryStorageOperations = ({\n entity,\n plugins\n}: CreateCategoryStorageOperationsParams): CategoryStorageOperations => {\n const dataLoader = new CategoryDataLoader({\n entity\n });\n\n const get = async (params: CategoryStorageOperationsGetParams) => {\n const { where } = params;\n\n try {\n return await dataLoader.getOne(where);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load category by given parameters.\",\n ex.code || \"CATEGORY_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const create = async (params: CategoryStorageOperationsCreateParams) => {\n const { category } = params;\n\n const keys = {\n PK: createPartitionKey({\n tenant: category.tenant,\n locale: category.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.put({\n ...category,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create category.\",\n ex.code || \"CATEGORY_CREATE_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const update = async (params: CategoryStorageOperationsUpdateParams) => {\n const { original, category } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: original.tenant,\n locale: original.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.put({\n ...category,\n TYPE: createType(),\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update category.\",\n ex.code || \"CATEGORY_UPDATE_ERROR\",\n {\n keys,\n original,\n category\n }\n );\n }\n };\n\n const deleteCategory = async (params: CategoryStorageOperationsDeleteParams) => {\n const { category } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: category.tenant,\n locale: category.locale\n }),\n SK: createSortKey(category)\n };\n\n try {\n await entity.delete({\n ...category,\n ...keys\n });\n /**\n * Always clear data loader cache when modifying the records.\n */\n dataLoader.clear();\n\n return category;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete category.\",\n ex.code || \"CATEGORY_DELETE_ERROR\",\n {\n keys,\n category\n }\n );\n }\n };\n\n const list = async (params: CategoryStorageOperationsListParams) => {\n const { where, sort, limit } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({ tenant, locale }),\n options: {\n gt: \" \"\n }\n };\n\n let items: Category[] = [];\n\n try {\n items = await queryAll<Category>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list categories by given parameters.\",\n ex.code || \"CATEGORIES_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<CategoryDynamoDbElasticFieldPlugin>(\n CategoryDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<Category>({\n plugins,\n where: restWhere,\n items,\n fields\n });\n\n const sortedItems = sortItems<Category>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit: limit || 100000,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n get,\n create,\n update,\n delete: deleteCategory,\n list\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["keys.ts"],"names":["createPartitionKey","params","tenant","locale","createSortKey","slug"],"mappings":";;;;;;;AAIO,MAAMA,kBAAkB,GAAIC,MAAD,IAAwC;AACtE,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAqBF,MAA3B;AACA,SAAQ,KAAIC,MAAO,MAAKC,MAAO,OAA/B;AACH,CAHM;;;;AAQA,MAAMC,aAAa,GAAIH,MAAD,IAAmC;AAC5D,QAAM;AAAEI,IAAAA;AAAF,MAAWJ,MAAjB;AACA,SAAOI,IAAP;AACH,CAHM","sourcesContent":["export interface PartitionKeyParams {\n tenant: string;\n locale: string;\n}\nexport const createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#PB#C`;\n};\n\nexport interface SortKeyParams {\n slug: string;\n}\nexport const createSortKey = (params: SortKeyParams): string => {\n const { slug } = params;\n return slug;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["configurations.ts"],"names":["es","params","tenant","WebinyError","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","index","prefix","ELASTIC_SEARCH_INDEX_PREFIX"],"mappings":";;;;;;;;;AAAA;;eAMe;AACXA,EAAAA,EAAE,EAAGC,MAAD,IAAiC;AACjC,UAAM;AAAEC,MAAAA;AAAF,QAAaD,MAAnB;;AACA,QAAI,CAACC,MAAL,EAAa;AACT,YAAM,IAAIC,cAAJ,CACD,4EADC,EAEF,cAFE,CAAN;AAIH;;AAED,UAAMC,WAAW,GAAGC,OAAO,CAACC,GAAR,CAAYC,4BAAZ,KAA6C,MAAjE;AACA,UAAMC,KAAK,GAAI,GAAEJ,WAAW,GAAG,MAAH,GAAYF,MAAO,eAA/C;AAEA,UAAMO,MAAM,GAAGJ,OAAO,CAACC,GAAR,CAAYI,2BAA3B;;AACA,QAAID,MAAJ,EAAY;AACR,aAAO;AAAED,QAAAA,KAAK,EAAEC,MAAM,GAAGD;AAAlB,OAAP;AACH;;AACD,WAAO;AAAEA,MAAAA;AAAF,KAAP;AACH;AAlBU,C","sourcesContent":["import WebinyError from \"@webiny/error\";\n\nexport interface ElasticsearchParams {\n tenant: string;\n}\n\nexport default {\n es: (params: ElasticsearchParams) => {\n const { tenant } = params;\n if (!tenant) {\n throw new WebinyError(\n `Missing \"tenant\" parameter when trying to create Elasticsearch index name.`,\n \"TENANT_ERROR\"\n );\n }\n\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n const index = `${sharedIndex ? \"root\" : tenant}-page-builder`;\n\n const prefix = process.env.ELASTIC_SEARCH_INDEX_PREFIX;\n if (prefix) {\n return { index: prefix + index };\n }\n return { index };\n }\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fields.ts"],"names":["createMenuDynamoDbFields","MenuDynamoDbElasticFieldPlugin","field","type","path","sortable"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,wBAAwB,GAAG,MAAwC;AAC5E,SAAO,CACH,IAAIC,8DAAJ,CAAmC;AAC/BC,IAAAA,KAAK,EAAE;AADwB,GAAnC,CADG,EAIH,IAAID,8DAAJ,CAAmC;AAC/BC,IAAAA,KAAK,EAAE;AADwB,GAAnC,CAJG,EAOH,IAAID,8DAAJ,CAAmC;AAC/BC,IAAAA,KAAK,EAAE;AADwB,GAAnC,CAPG,EAUH,IAAID,8DAAJ,CAAmC;AAC/BC,IAAAA,KAAK,EAAE,WADwB;AAE/BC,IAAAA,IAAI,EAAE;AAFyB,GAAnC,CAVG,EAcH,IAAIF,8DAAJ,CAAmC;AAC/BC,IAAAA,KAAK,EAAE,WADwB;AAE/BE,IAAAA,IAAI,EAAE,cAFyB;AAG/BC,IAAAA,QAAQ,EAAE;AAHqB,GAAnC,CAdG,CAAP;AAoBH,CArBM","sourcesContent":["import { MenuDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/MenuDynamoDbElasticFieldPlugin\";\n\nexport const createMenuDynamoDbFields = (): MenuDynamoDbElasticFieldPlugin[] => {\n return [\n new MenuDynamoDbElasticFieldPlugin({\n field: \"id\"\n }),\n new MenuDynamoDbElasticFieldPlugin({\n field: \"title\"\n }),\n new MenuDynamoDbElasticFieldPlugin({\n field: \"slug\"\n }),\n new MenuDynamoDbElasticFieldPlugin({\n field: \"createdOn\",\n type: \"date\"\n }),\n new MenuDynamoDbElasticFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\",\n sortable: false\n })\n ];\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MenuStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
3
|
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
-
export interface
|
|
4
|
+
export interface CreateMenuStorageOperationsParams {
|
|
5
5
|
entity: Entity<any>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
}
|
|
8
|
-
export declare const createMenuStorageOperations: ({ entity, plugins }:
|
|
8
|
+
export declare const createMenuStorageOperations: ({ entity, plugins }: CreateMenuStorageOperationsParams) => MenuStorageOperations;
|
package/operations/menu/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["createPartitionKey","params","tenant","locale","createSortKey","slug","createType","createMenuStorageOperations","entity","plugins","get","where","keys","PK","SK","result","Item","ex","WebinyError","message","code","create","menu","put","TYPE","update","original","list","sort","limit","restWhere","queryAllParams","partitionKey","options","undefined","gt","items","fields","byType","MenuDynamoDbElasticFieldPlugin","type","filteredItems","map","item","sortedItems","totalCount","length","after","deleteMenu","delete"],"mappings":"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","sourcesContent":["import {\n Menu,\n MenuStorageOperations,\n MenuStorageOperationsCreateParams,\n MenuStorageOperationsDeleteParams,\n MenuStorageOperationsGetParams,\n MenuStorageOperationsListParams,\n MenuStorageOperationsUpdateParams\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 { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { MenuDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/MenuDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface PartitionKeyParams {\n tenant: string;\n locale: string;\n}\nconst createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#PB#M`;\n};\n\ninterface SortKeyParams {\n slug: string;\n}\nconst createSortKey = (params: SortKeyParams): string => {\n const { slug } = params;\n return slug;\n};\n\nconst createType = (): string => {\n return \"pb.menu\";\n};\n\nexport interface CreateMenuStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createMenuStorageOperations = ({\n entity,\n plugins\n}: CreateMenuStorageOperationsParams): MenuStorageOperations => {\n const get = async (params: MenuStorageOperationsGetParams) => {\n const { where } = params;\n const keys = {\n PK: createPartitionKey(where),\n SK: createSortKey(where)\n };\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 menu by given parameters.\",\n ex.code || \"MENU_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const create = async (params: MenuStorageOperationsCreateParams) => {\n const { menu } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: menu.tenant,\n locale: menu.locale\n }),\n SK: createSortKey(menu)\n };\n\n try {\n await entity.put({\n ...menu,\n TYPE: createType(),\n ...keys\n });\n return menu;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create menu.\",\n ex.code || \"MENU_CREATE_ERROR\",\n {\n keys,\n menu\n }\n );\n }\n };\n\n const update = async (params: MenuStorageOperationsUpdateParams) => {\n const { menu, original } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: menu.tenant,\n locale: menu.locale\n }),\n SK: createSortKey(menu)\n };\n\n try {\n await entity.put({\n ...menu,\n TYPE: createType(),\n ...keys\n });\n return menu;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update menu.\",\n ex.code || \"MENU_UPDATE_ERROR\",\n {\n keys,\n original,\n menu\n }\n );\n }\n };\n\n const list = async (params: MenuStorageOperationsListParams) => {\n const { where, sort, limit = 10 } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n tenant,\n locale\n }),\n options: {\n limit: limit || undefined,\n gt: \" \"\n }\n };\n\n let items: Menu[] = [];\n\n try {\n items = await queryAll<Menu>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list menus by given parameters.\",\n ex.code || \"MENUS_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<MenuDynamoDbElasticFieldPlugin>(\n MenuDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<Menu>({\n plugins,\n where: restWhere,\n items,\n fields\n }).map(item => {\n return cleanupItem<Menu>(entity, item);\n }) as Menu[];\n\n const sortedItems = sortItems<Menu>({\n items: filteredItems,\n sort,\n fields\n ///: [\"createdOn\", \"id\", \"title\", \"slug\"]\n });\n\n return createListResponse({\n items: sortedItems,\n limit,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n const deleteMenu = async (params: MenuStorageOperationsDeleteParams) => {\n const { menu } = params;\n const keys = {\n PK: createPartitionKey({\n tenant: menu.tenant,\n locale: menu.locale\n }),\n SK: createSortKey(menu)\n };\n\n try {\n await entity.delete({\n ...menu,\n ...keys\n });\n return menu;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete menu.\",\n ex.code || \"MENU_DELETE_ERROR\",\n {\n keys,\n menu\n }\n );\n }\n };\n\n return {\n get,\n create,\n update,\n list,\n delete: deleteMenu\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["fields.ts"],"names":["createPageElementDynamoDbFields","PageElementDynamoDbElasticFieldPlugin","field","type","path","sortable"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,+BAA+B,GAAG,MAA+C,CAC1F,IAAIC,4EAAJ,CAA0C;AACtCC,EAAAA,KAAK,EAAE,WAD+B;AAEtCC,EAAAA,IAAI,EAAE;AAFgC,CAA1C,CAD0F,EAK1F,IAAIF,4EAAJ,CAA0C;AACtCC,EAAAA,KAAK,EAAE,WAD+B;AAEtCE,EAAAA,IAAI,EAAE,cAFgC;AAGtCC,EAAAA,QAAQ,EAAE;AAH4B,CAA1C,CAL0F,CAAvF","sourcesContent":["import { PageElementDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/PageElementDynamoDbElasticFieldPlugin\";\n\nexport const createPageElementDynamoDbFields = (): PageElementDynamoDbElasticFieldPlugin[] => [\n new PageElementDynamoDbElasticFieldPlugin({\n field: \"createdOn\",\n type: \"date\"\n }),\n new PageElementDynamoDbElasticFieldPlugin({\n field: \"createdBy\",\n path: \"createdBy.id\",\n sortable: false\n })\n];\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { PageElementStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
3
|
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
-
export interface
|
|
4
|
+
export interface CreatePageElementStorageOperationsParams {
|
|
5
5
|
entity: Entity<any>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
}
|
|
8
|
-
export declare const createPageElementStorageOperations: ({ entity, plugins }:
|
|
8
|
+
export declare const createPageElementStorageOperations: ({ entity, plugins }: CreatePageElementStorageOperationsParams) => PageElementStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["createPartitionKey","params","tenant","locale","createSortKey","id","createType","createPageElementStorageOperations","entity","plugins","create","pageElement","keys","PK","SK","put","TYPE","ex","WebinyError","message","code","update","original","deletePageElement","delete","get","where","result","Item","list","sort","limit","restWhere","queryAllParams","partitionKey","options","undefined","gt","results","fields","byType","PageElementDynamoDbElasticFieldPlugin","type","filteredItems","items","map","item","sortedItems","totalCount","length","after"],"mappings":"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","sourcesContent":["import {\n PageElement,\n PageElementStorageOperations,\n PageElementStorageOperationsCreateParams,\n PageElementStorageOperationsDeleteParams,\n PageElementStorageOperationsGetParams,\n PageElementStorageOperationsListParams,\n PageElementStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport WebinyError from \"@webiny/error\";\nimport { queryAll, QueryAllParams } from \"@webiny/db-dynamodb/utils/query\";\nimport { filterItems } from \"@webiny/db-dynamodb/utils/filter\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { createListResponse } from \"@webiny/db-dynamodb/utils/listResponse\";\nimport { PageElementDynamoDbElasticFieldPlugin } from \"~/plugins/definitions/PageElementDynamoDbElasticFieldPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface PartitionKeyParams {\n tenant: string;\n locale: string;\n}\nconst createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#PB#PE`;\n};\n\ninterface SortKeyParams {\n id: string;\n}\nconst createSortKey = (params: SortKeyParams): string => {\n const { id } = params;\n return id;\n};\n\nconst createType = (): string => {\n return \"pb.pageElement\";\n};\n\nexport interface CreatePageElementStorageOperationsParams {\n entity: Entity<any>;\n plugins: PluginsContainer;\n}\nexport const createPageElementStorageOperations = ({\n entity,\n plugins\n}: CreatePageElementStorageOperationsParams): PageElementStorageOperations => {\n const create = async (params: PageElementStorageOperationsCreateParams) => {\n const { pageElement } = params;\n const keys = {\n PK: createPartitionKey(pageElement),\n SK: createSortKey(pageElement)\n };\n\n try {\n await entity.put({\n ...pageElement,\n TYPE: createType(),\n ...keys\n });\n return pageElement;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create pageElement.\",\n ex.code || \"PAGE_ELEMENT_CREATE_ERROR\",\n {\n keys,\n pageElement\n }\n );\n }\n };\n\n const update = async (params: PageElementStorageOperationsUpdateParams) => {\n const { pageElement, original } = params;\n const keys = {\n PK: createPartitionKey(pageElement),\n SK: createSortKey(pageElement)\n };\n\n try {\n await entity.put({\n ...pageElement,\n TYPE: createType(),\n ...keys\n });\n return pageElement;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update pageElement.\",\n ex.code || \"PAGE_ELEMENT_UPDATE_ERROR\",\n {\n keys,\n original,\n pageElement\n }\n );\n }\n };\n\n const deletePageElement = async (params: PageElementStorageOperationsDeleteParams) => {\n const { pageElement } = params;\n const keys = {\n PK: createPartitionKey(pageElement),\n SK: createSortKey(pageElement)\n };\n\n try {\n await entity.delete(keys);\n return pageElement;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete pageElement.\",\n ex.code || \"PAGE_ELEMENT_DELETE_ERROR\",\n {\n keys,\n pageElement\n }\n );\n }\n };\n\n const get = async (params: PageElementStorageOperationsGetParams) => {\n const { where } = params;\n\n const keys = {\n PK: createPartitionKey(where),\n SK: createSortKey(where)\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 element by given parameters.\",\n ex.code || \"PAGE_ELEMENT_GET_ERROR\",\n {\n where\n }\n );\n }\n };\n\n const list = async (params: PageElementStorageOperationsListParams) => {\n const { where, sort, limit = 10 } = params;\n\n const { tenant, locale, ...restWhere } = where;\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n tenant,\n locale\n }),\n options: {\n limit: limit || undefined,\n gt: \" \"\n }\n };\n\n let results: PageElement[] = [];\n\n try {\n results = await queryAll<PageElement>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list page elements by given parameters.\",\n ex.code || \"PAGE_ELEMENTS_LIST_ERROR\",\n {\n partitionKey: queryAllParams.partitionKey,\n options: queryAllParams.options\n }\n );\n }\n\n const fields = plugins.byType<PageElementDynamoDbElasticFieldPlugin>(\n PageElementDynamoDbElasticFieldPlugin.type\n );\n\n const filteredItems = filterItems<PageElement>({\n plugins,\n where: restWhere,\n items: results,\n fields\n }).map(item => {\n return cleanupItem<PageElement>(entity, item);\n }) as PageElement[];\n\n const sortedItems = sortItems<PageElement>({\n items: filteredItems,\n sort,\n fields\n });\n\n return createListResponse({\n items: sortedItems,\n limit,\n totalCount: filteredItems.length,\n after: null\n });\n };\n\n return {\n get,\n create,\n update,\n delete: deletePageElement,\n list\n };\n};\n"]}
|
|
@@ -5,15 +5,8 @@ interface CreateElasticsearchBodyParams {
|
|
|
5
5
|
plugins: PluginsContainer;
|
|
6
6
|
where: PageStorageOperationsListWhere;
|
|
7
7
|
limit: number;
|
|
8
|
-
after
|
|
8
|
+
after: string | null;
|
|
9
9
|
sort: string[];
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
plugins: PluginsContainer;
|
|
13
|
-
where: PageStorageOperationsListWhere;
|
|
14
|
-
limit: number;
|
|
15
|
-
after?: string;
|
|
16
|
-
sort: string[];
|
|
17
|
-
}
|
|
18
|
-
export declare const createElasticsearchQueryBody: (params: CreateElasticsearchBodyParams) => esSearchBody;
|
|
11
|
+
export declare const createElasticsearchQueryBody: (params: CreateElasticsearchBodyParams) => esSearchBody & Pick<Required<esSearchBody>, "sort">;
|
|
19
12
|
export {};
|
|
@@ -108,11 +108,11 @@ const createElasticsearchQuery = params => {
|
|
|
108
108
|
const {
|
|
109
109
|
tags_in: tags,
|
|
110
110
|
tags_rule: tagsRule
|
|
111
|
-
} =
|
|
111
|
+
} = initialWhere;
|
|
112
112
|
delete where["tags_in"];
|
|
113
113
|
delete where["tags_rule"];
|
|
114
114
|
|
|
115
|
-
if (Array.isArray(tags) === true && tags.length > 0) {
|
|
115
|
+
if (tags && Array.isArray(tags) === true && tags.length > 0) {
|
|
116
116
|
if (tagsRule === "any") {
|
|
117
117
|
query.filter.push({
|
|
118
118
|
terms: {
|
|
@@ -158,7 +158,7 @@ const createElasticsearchQuery = params => {
|
|
|
158
158
|
const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === "true";
|
|
159
159
|
|
|
160
160
|
if (sharedIndex) {
|
|
161
|
-
const tenant =
|
|
161
|
+
const tenant = initialWhere.tenant;
|
|
162
162
|
query.must.push({
|
|
163
163
|
term: {
|
|
164
164
|
"tenant.keyword": tenant
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["elasticsearchQueryBody.ts"],"names":["createInitialQueryValue","args","where","query","must","must_not","should","filter","published","push","term","latest","WebinyError","createElasticsearchQuery","params","plugins","initialWhere","fieldPlugins","operatorPlugins","byType","ElasticsearchQueryBuilderOperatorPlugin","type","reduce","acc","plugin","getOperator","tags_in","tags","tags_rule","tagsRule","Array","isArray","length","terms","bool","map","tag","search","query_string","allow_leading_wildcard","fields","sharedIndex","process","env","ELASTICSEARCH_SHARED_INDEXES","tenant","operators","createElasticsearchQueryBody","limit","initialLimit","sort","initialSort","after","PageElasticsearchFieldPlugin","field","queryModifiers","PageElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","PageElasticsearchSortModifierPlugin","modifySort","body","constant_score","size","search_after","bodyModifiers","PageElasticsearchBodyModifierPlugin","modifyBody"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AAGA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAOA;AACA;AACA;AACA;AACA;AACA,MAAMA,uBAAuB,GACzBC,IAD4B,IAEG;AAC/B,QAAM;AAAEC,IAAAA;AAAF,MAAYD,IAAlB;AAEA,QAAME,KAAmC,GAAG;AACxCC,IAAAA,IAAI,EAAE,EADkC;AAExCC,IAAAA,QAAQ,EAAE,EAF8B;AAGxCC,IAAAA,MAAM,EAAE,EAHgC;AAIxCC,IAAAA,MAAM,EAAE;AAJgC,GAA5C;AAOA;AACJ;AACA;;AACI,MAAIL,KAAK,CAACM,SAAN,KAAoB,IAAxB,EAA8B;AAC1BL,IAAAA,KAAK,CAACC,IAAN,CAAWK,IAAX,CAAgB;AACZC,MAAAA,IAAI,EAAE;AACFF,QAAAA,SAAS,EAAE;AADT;AADM,KAAhB;AAKH,GAND,MAMO,IAAIN,KAAK,CAACS,MAAN,KAAiB,IAArB,EAA2B;AAC9BR,IAAAA,KAAK,CAACC,IAAN,CAAWK,IAAX,CAAgB;AACZC,MAAAA,IAAI,EAAE;AACFC,QAAAA,MAAM,EAAE;AADN;AADM,KAAhB;AAKH,GANM,CAOP;AAPO,OAQF,IAAIT,KAAK,CAACM,SAAN,KAAoB,KAAxB,EAA+B;AAChC,UAAM,IAAII,cAAJ,CACD,gEADC,EAEF,iCAFE,EAGF;AACIV,MAAAA;AADJ,KAHE,CAAN;AAOH,GARI,MAQE,IAAIA,KAAK,CAACS,MAAN,KAAiB,KAArB,EAA4B;AAC/B,UAAM,IAAIC,cAAJ,CACD,6DADC,EAEF,iCAFE,EAGF;AACIV,MAAAA;AADJ,KAHE,CAAN;AAOH;;AACD,SAAOA,KAAK,CAACM,SAAb;AACA,SAAON,KAAK,CAACS,MAAb,CA7C+B,CA8C/B;;AACA,SAAOR,KAAP;AACH,CAlDD;;AA4DA,MAAMU,wBAAwB,GAC1BC,MAD6B,IAI5B;AACD,QAAM;AAAEC,IAAAA,OAAF;AAAWb,IAAAA,KAAK,EAAEc,YAAlB;AAAgCC,IAAAA;AAAhC,MAAiDH,MAAvD;AACA,QAAMX,KAAK,GAAGH,uBAAuB,CAAC;AAClCE,IAAAA,KAAK,EAAEc;AAD2B,GAAD,CAArC;AAGA;AACJ;AACA;;AACI,QAAME,eAAe,GAAGH,OAAO,CAC1BI,MADmB,CAEhBC,iFAAwCC,IAFxB,EAInBC,MAJmB,CAIZ,CAACC,GAAD,EAAMC,MAAN,KAAiB;AACrBD,IAAAA,GAAG,CAACC,MAAM,CAACC,WAAP,EAAD,CAAH,GAA4BD,MAA5B;AACA,WAAOD,GAAP;AACH,GAPmB,EAOjB,EAPiB,CAAxB;;AASA,QAAMrB,KAA8C,qBAC7Cc,YAD6C,CAApD;AAGA;AACJ;AACA;;;AACI,QAAM;AAAEU,IAAAA,OAAO,EAAEC,IAAX;AAAiBC,IAAAA,SAAS,EAAEC;AAA5B,MAAyCb,YAA/C;AACA,SAAOd,KAAK,CAAC,SAAD,CAAZ;AACA,SAAOA,KAAK,CAAC,WAAD,CAAZ;;AACA,MAAIyB,IAAI,IAAIG,KAAK,CAACC,OAAN,CAAcJ,IAAd,MAAwB,IAAhC,IAAwCA,IAAI,CAACK,MAAL,GAAc,CAA1D,EAA6D;AACzD,QAAIH,QAAQ,KAAK,KAAjB,EAAwB;AACpB1B,MAAAA,KAAK,CAACI,MAAN,CAAaE,IAAb,CAAkB;AACdwB,QAAAA,KAAK,EAAE;AACH,0BAAgBN;AADb;AADO,OAAlB;AAKH,KAND,MAMO;AACHxB,MAAAA,KAAK,CAACI,MAAN,CAAaE,IAAb,CAAkB;AACdyB,QAAAA,IAAI,EAAE;AACF9B,UAAAA,IAAI,EAAEuB,IAAI,CAACQ,GAAL,CAASC,GAAG,IAAI;AAClB,mBAAO;AACH1B,cAAAA,IAAI,EAAE;AACF,gCAAgB0B;AADd;AADH,aAAP;AAKH,WANK;AADJ;AADQ,OAAlB;AAWH;AACJ;AACD;AACJ;AACA;;;AACI,MAAIlC,KAAK,CAACmC,MAAV,EAAkB;AACdlC,IAAAA,KAAK,CAACC,IAAN,CAAWK,IAAX,CAAgB;AACZ6B,MAAAA,YAAY,EAAE;AACVnC,QAAAA,KAAK,EAAG,IAAGD,KAAK,CAACmC,MAAO,GADd;AAEVE,QAAAA,sBAAsB,EAAE,IAFd;AAGVC,QAAAA,MAAM,EAAE,CAAC,SAAD,EAAY,SAAZ;AAHE;AADF,KAAhB;AAOH;;AACD,SAAOtC,KAAK,CAACmC,MAAb;AAEA;AACJ;AACA;AACA;AACA;;AACI,QAAMI,WAAW,GAAGC,OAAO,CAACC,GAAR,CAAYC,4BAAZ,KAA6C,MAAjE;;AACA,MAAIH,WAAJ,EAAiB;AACb,UAAMI,MAAM,GAAG7B,YAAY,CAAC6B,MAA5B;AACA1C,IAAAA,KAAK,CAACC,IAAN,CAAWK,IAAX,CAAgB;AAAEC,MAAAA,IAAI,EAAE;AAAE,0BAAkBmC;AAApB;AAAR,KAAhB;AACA;AACR;AACA;AACA;;AACQ,WAAO3C,KAAK,CAAC,QAAD,CAAZ;AACH;AACD;AACJ;AACA;;;AACI,yBAAW;AACPC,IAAAA,KADO;AAEPD,IAAAA,KAFO;AAGPsC,IAAAA,MAAM,EAAEvB,YAHD;AAIP6B,IAAAA,SAAS,EAAE5B;AAJJ,GAAX;AAOA,SAAOf,KAAP;AACH,CA3FD;;AA6FO,MAAM4C,4BAA4B,GACrCjC,MADwC,IAEc;AACtD,QAAM;AAAEC,IAAAA,OAAF;AAAWb,IAAAA,KAAX;AAAkB8C,IAAAA,KAAK,EAAEC,YAAzB;AAAuCC,IAAAA,IAAI,EAAEC,WAA7C;AAA0DC,IAAAA;AAA1D,MAAoEtC,MAA1E;AAEA,QAAMG,YAAY,GAAGF,OAAO,CACvBI,MADgB,CACqBkC,2DAA6BhC,IADlD,EAEhBC,MAFgB,CAET,CAACC,GAAD,EAAMC,MAAN,KAAiB;AACrBD,IAAAA,GAAG,CAACC,MAAM,CAAC8B,KAAR,CAAH,GAAoB9B,MAApB;AACA,WAAOD,GAAP;AACH,GALgB,EAKd,EALc,CAArB;AAOA,QAAMyB,KAAK,GAAG,wBAAYC,YAAZ,EAA0B,GAA1B,CAAd;AAEA,QAAM9C,KAAK,GAAGU,wBAAwB,iCAC/BC,MAD+B;AAElCG,IAAAA;AAFkC,KAAtC;AAKA,QAAMiC,IAAI,GAAG,sBAAW;AACpBA,IAAAA,IAAI,EAAEC,WADc;AAEpBlC,IAAAA;AAFoB,GAAX,CAAb;AAKA,QAAMsC,cAAc,GAAGxC,OAAO,CAACI,MAAR,CACnBqC,2EAAqCnC,IADlB,CAAvB;;AAGA,OAAK,MAAMG,MAAX,IAAqB+B,cAArB,EAAqC;AACjC/B,IAAAA,MAAM,CAACiC,WAAP,CAAmB;AACftD,MAAAA,KADe;AAEfD,MAAAA;AAFe,KAAnB;AAIH;;AAED,QAAMwD,aAAa,GAAG3C,OAAO,CAACI,MAAR,CAClBwC,yEAAoCtC,IADlB,CAAtB;;AAGA,OAAK,MAAMG,MAAX,IAAqBkC,aAArB,EAAoC;AAChClC,IAAAA,MAAM,CAACoC,UAAP,CAAkB;AACdV,MAAAA;AADc,KAAlB;AAGH;;AAED,QAAMW,IAAI,GAAG;AACT1D,IAAAA,KAAK,EAAE;AACH2D,MAAAA,cAAc,EAAE;AACZvD,QAAAA,MAAM,EAAE;AACJ2B,UAAAA,IAAI,oBACG/B,KADH;AADA;AADI;AADb,KADE;AAUT4D,IAAAA,IAAI,EAAEf,KAAK,GAAG,CAVL;;AAWT;AACR;AACA;AACA;AACA;AACQgB,IAAAA,YAAY,EAAE,2BAAaZ,KAAb,CAhBL;AAiBTF,IAAAA;AAjBS,GAAb;AAoBA,QAAMe,aAAa,GAAGlD,OAAO,CAACI,MAAR,CAClB+C,yEAAoC7C,IADlB,CAAtB;;AAGA,OAAK,MAAMG,MAAX,IAAqByC,aAArB,EAAoC;AAChCzC,IAAAA,MAAM,CAAC2C,UAAP,CAAkB;AACdN,MAAAA;AADc,KAAlB;AAGH;;AAED,SAAOA,IAAP;AACH,CAzEM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { SearchBody as esSearchBody } from \"elastic-ts\";\nimport { decodeCursor } from \"@webiny/api-elasticsearch/cursors\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { PageStorageOperationsListWhere } from \"@webiny/api-page-builder/types\";\nimport { createSort } from \"@webiny/api-elasticsearch/sort\";\nimport { createLimit } from \"@webiny/api-elasticsearch/limit\";\nimport { ElasticsearchFieldPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin\";\nimport { ElasticsearchQueryBuilderOperatorPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryBuilderOperatorPlugin\";\nimport { PageElasticsearchFieldPlugin } from \"~/plugins/definitions/PageElasticsearchFieldPlugin\";\nimport { PageElasticsearchSortModifierPlugin } from \"~/plugins/definitions/PageElasticsearchSortModifierPlugin\";\nimport { PageElasticsearchQueryModifierPlugin } from \"~/plugins/definitions/PageElasticsearchQueryModifierPlugin\";\nimport { PageElasticsearchBodyModifierPlugin } from \"~/plugins/definitions/PageElasticsearchBodyModifierPlugin\";\nimport { applyWhere } from \"@webiny/api-elasticsearch/where\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface CreateElasticsearchQueryArgs {\n where: PageStorageOperationsListWhere;\n}\n\n/**\n * Latest and published are specific in Elasticsearch to that extend that they are tagged in the published or latest property.\n * We allow either published or either latest.\n * Latest is used in the manage API and published in the read API.\n */\nconst createInitialQueryValue = (\n args: CreateElasticsearchQueryArgs\n): ElasticsearchBoolQueryConfig => {\n const { where } = args;\n\n const query: ElasticsearchBoolQueryConfig = {\n must: [],\n must_not: [],\n should: [],\n filter: []\n };\n\n /**\n * We must transform published and latest where args into something that is understandable by our Elasticsearch\n */\n if (where.published === true) {\n query.must.push({\n term: {\n published: true\n }\n });\n } else if (where.latest === true) {\n query.must.push({\n term: {\n latest: true\n }\n });\n }\n // we do not allow not published and not latest\n else if (where.published === false) {\n throw new WebinyError(\n `Cannot call Elasticsearch query with \"published\" set at false.`,\n \"ELASTICSEARCH_UNSUPPORTED_QUERY\",\n {\n where\n }\n );\n } else if (where.latest === false) {\n throw new WebinyError(\n `Cannot call Elasticsearch query with \"latest\" set at false.`,\n \"ELASTICSEARCH_UNSUPPORTED_QUERY\",\n {\n where\n }\n );\n }\n delete where.published;\n delete where.latest;\n //\n return query;\n};\n\ninterface CreateElasticsearchBodyParams {\n plugins: PluginsContainer;\n where: PageStorageOperationsListWhere;\n limit: number;\n after: string | null;\n sort: string[];\n}\n\nconst createElasticsearchQuery = (\n params: CreateElasticsearchBodyParams & {\n fieldPlugins: Record<string, ElasticsearchFieldPlugin>;\n }\n) => {\n const { plugins, where: initialWhere, fieldPlugins } = params;\n const query = createInitialQueryValue({\n where: initialWhere\n });\n /**\n * Be aware that, if having more registered operator plugins of same type, the last one will be used.\n */\n const operatorPlugins = plugins\n .byType<ElasticsearchQueryBuilderOperatorPlugin>(\n ElasticsearchQueryBuilderOperatorPlugin.type\n )\n .reduce((acc, plugin) => {\n acc[plugin.getOperator()] = plugin;\n return acc;\n }, {} as Record<string, ElasticsearchQueryBuilderOperatorPlugin>);\n\n const where: Partial<PageStorageOperationsListWhere> = {\n ...initialWhere\n };\n /**\n * Tags are specific so extract them and remove from where.\n */\n const { tags_in: tags, tags_rule: tagsRule } = initialWhere;\n delete where[\"tags_in\"];\n delete where[\"tags_rule\"];\n if (tags && Array.isArray(tags) === true && tags.length > 0) {\n if (tagsRule === \"any\") {\n query.filter.push({\n terms: {\n \"tags.keyword\": tags\n }\n });\n } else {\n query.filter.push({\n bool: {\n must: tags.map(tag => {\n return {\n term: {\n \"tags.keyword\": tag\n }\n };\n })\n }\n });\n }\n }\n /**\n * Specific search parameter\n */\n if (where.search) {\n query.must.push({\n query_string: {\n query: `*${where.search}*`,\n allow_leading_wildcard: true,\n fields: [\"titleLC\", \"snippet\"]\n }\n });\n }\n delete where.search;\n\n /**\n * !!! IMPORTANT !!! There are few specific cases where we hardcode the query conditions.\n *\n * When ES index is shared between tenants, we need to filter records by tenant ID.\n */\n const sharedIndex = process.env.ELASTICSEARCH_SHARED_INDEXES === \"true\";\n if (sharedIndex) {\n const tenant = initialWhere.tenant;\n query.must.push({ term: { \"tenant.keyword\": tenant } });\n /**\n * Remove so it is not applied again later.\n * Possibly tenant is not defined, but just in case, remove it.\n */\n delete where[\"tenant\"];\n }\n /**\n * We apply other conditions as they are passed via the where value.\n */\n applyWhere({\n query,\n where,\n fields: fieldPlugins,\n operators: operatorPlugins\n });\n\n return query;\n};\n\nexport const createElasticsearchQueryBody = (\n params: CreateElasticsearchBodyParams\n): esSearchBody & Pick<Required<esSearchBody>, \"sort\"> => {\n const { plugins, where, limit: initialLimit, sort: initialSort, after } = params;\n\n const fieldPlugins = plugins\n .byType<PageElasticsearchFieldPlugin>(PageElasticsearchFieldPlugin.type)\n .reduce((acc, plugin) => {\n acc[plugin.field] = plugin;\n return acc;\n }, {} as Record<string, PageElasticsearchFieldPlugin>);\n\n const limit = createLimit(initialLimit, 100);\n\n const query = createElasticsearchQuery({\n ...params,\n fieldPlugins\n });\n\n const sort = createSort({\n sort: initialSort,\n fieldPlugins\n });\n\n const queryModifiers = plugins.byType<PageElasticsearchQueryModifierPlugin>(\n PageElasticsearchQueryModifierPlugin.type\n );\n for (const plugin of queryModifiers) {\n plugin.modifyQuery({\n query,\n where\n });\n }\n\n const sortModifiers = plugins.byType<PageElasticsearchSortModifierPlugin>(\n PageElasticsearchSortModifierPlugin.type\n );\n for (const plugin of sortModifiers) {\n plugin.modifySort({\n sort\n });\n }\n\n const body = {\n query: {\n constant_score: {\n filter: {\n bool: {\n ...query\n }\n }\n }\n },\n size: limit + 1,\n /**\n * Casting as any is required due to search_after is accepting an array of values.\n * Which is correct in some cases. In our case, it is not.\n * https://www.elastic.co/guide/en/elasticsearch/reference/7.13/paginate-search-results.html\n */\n search_after: decodeCursor(after) as any,\n sort\n };\n\n const bodyModifiers = plugins.byType<PageElasticsearchBodyModifierPlugin>(\n PageElasticsearchBodyModifierPlugin.type\n );\n for (const plugin of bodyModifiers) {\n plugin.modifyBody({\n body\n });\n }\n\n return body;\n};\n"]}
|
|
@@ -0,0 +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"]}
|
|
@@ -14,16 +14,8 @@ export declare const getESPageData: (page: Page) => {
|
|
|
14
14
|
locale: string;
|
|
15
15
|
createdOn: string;
|
|
16
16
|
savedOn: string;
|
|
17
|
-
createdBy:
|
|
18
|
-
|
|
19
|
-
id: string;
|
|
20
|
-
displayName: string;
|
|
21
|
-
};
|
|
22
|
-
ownedBy: {
|
|
23
|
-
type: string;
|
|
24
|
-
id: string;
|
|
25
|
-
displayName: string;
|
|
26
|
-
};
|
|
17
|
+
createdBy: import("@webiny/api-page-builder/types").CreatedBy;
|
|
18
|
+
ownedBy: import("@webiny/api-page-builder/types").CreatedBy;
|
|
27
19
|
category: string;
|
|
28
20
|
version: number;
|
|
29
21
|
title: string;
|
|
@@ -31,7 +23,7 @@ export declare const getESPageData: (page: Page) => {
|
|
|
31
23
|
path: string;
|
|
32
24
|
status: import("@webiny/api-page-builder/types").PageStatus;
|
|
33
25
|
locked: boolean;
|
|
34
|
-
publishedOn: string;
|
|
26
|
+
publishedOn: string | null;
|
|
35
27
|
tags: any;
|
|
36
28
|
snippet: any;
|
|
37
29
|
images: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["helpers.ts"],"names":["getESPageData","page","__type","tenant","webinyVersion","id","pid","editor","locale","createdOn","savedOn","createdBy","ownedBy","category","version","title","titleLC","toLowerCase","path","status","locked","publishedOn","tags","snippet","images","general","getESLatestPageData","plugins","data","latest","modifyData","getESPublishedPageData","published","pagePlugins","byType","IndexPageDataPlugin","type","plugin","apply"],"mappings":";;;;;;;;;;;AAAA;;AACA;;;;;;AAIA;AACA;AACA;AACA;AACO,MAAMA,aAAa,GAAIC,IAAD,IAAgB;AACzC,SAAO;AACHC,IAAAA,MAAM,EAAE,MADL;AAEHC,IAAAA,MAAM,EAAEF,IAAI,CAACE,MAFV;AAGHC,IAAAA,aAAa,EAAEH,IAAI,CAACG,aAHjB;AAIHC,IAAAA,EAAE,EAAEJ,IAAI,CAACI,EAJN;AAKHC,IAAAA,GAAG,EAAEL,IAAI,CAACK,GALP;AAMHC,IAAAA,MAAM,EAAEN,IAAI,CAACM,MANV;AAOHC,IAAAA,MAAM,EAAEP,IAAI,CAACO,MAPV;AAQHC,IAAAA,SAAS,EAAER,IAAI,CAACQ,SARb;AASHC,IAAAA,OAAO,EAAET,IAAI,CAACS,OATX;AAUHC,IAAAA,SAAS,EAAEV,IAAI,CAACU,SAVb;AAWHC,IAAAA,OAAO,EAAEX,IAAI,CAACW,OAXX;AAYHC,IAAAA,QAAQ,EAAEZ,IAAI,CAACY,QAZZ;AAaHC,IAAAA,OAAO,EAAEb,IAAI,CAACa,OAbX;AAcHC,IAAAA,KAAK,EAAEd,IAAI,CAACc,KAdT;AAeHC,IAAAA,OAAO,EAAEf,IAAI,CAACc,KAAL,CAAWE,WAAX,EAfN;AAgBHC,IAAAA,IAAI,EAAEjB,IAAI,CAACiB,IAhBR;AAiBHC,IAAAA,MAAM,EAAElB,IAAI,CAACkB,MAjBV;AAkBHC,IAAAA,MAAM,EAAEnB,IAAI,CAACmB,MAlBV;AAmBHC,IAAAA,WAAW,EAAEpB,IAAI,CAACoB,WAnBf;AAqBH;AACAC,IAAAA,IAAI,EAAE,kBAAUrB,IAAV,EAAgB,uBAAhB,KAA4C,EAtB/C;AAuBHsB,IAAAA,OAAO,EAAE,kBAAUtB,IAAV,EAAgB,0BAAhB,KAA+C,IAvBrD;AAyBH;AACAuB,IAAAA,MAAM,EAAE;AACJC,MAAAA,OAAO,EAAE,kBAAUxB,IAAV,EAAgB,wBAAhB;AADL;AA1BL,GAAP;AA8BH,CA/BM;;;;AAiCA,MAAMyB,mBAAmB,GAAG,CAACC,OAAD,EAA4B1B,IAA5B,KAA2C;AAC1E,QAAM2B,IAAI,mCAAQ5B,aAAa,CAACC,IAAD,CAArB;AAA6B4B,IAAAA,MAAM,EAAE;AAArC,IAAV;;AACA,SAAOC,UAAU,CAACF,IAAD,EAAO3B,IAAP,EAAa0B,OAAb,CAAjB;AACH,CAHM;;;;AAKA,MAAMI,sBAAsB,GAAG,CAACJ,OAAD,EAA4B1B,IAA5B,KAA2C;AAC7E,QAAM2B,IAAI,mCAAQ5B,aAAa,CAACC,IAAD,CAArB;AAA6B+B,IAAAA,SAAS,EAAE;AAAxC,IAAV;;AACA,SAAOF,UAAU,CAACF,IAAD,EAAO3B,IAAP,EAAa0B,OAAb,CAAjB;AACH,CAHM;;;;AAKP,MAAMG,UAAU,GAAG,CAACF,IAAD,EAA4B3B,IAA5B,EAAwC0B,OAAxC,KAAsE;AACrF,QAAMM,WAAW,GAAGN,OAAO,CAACO,MAAR,CAAoCC,yCAAoBC,IAAxD,CAApB;;AAEA,OAAK,MAAMC,MAAX,IAAqBJ,WAArB,EAAkC;AAC9BI,IAAAA,MAAM,CAACC,KAAP,CAAa;AAAErC,MAAAA,IAAF;AAAQ2B,MAAAA,IAAR;AAAcD,MAAAA;AAAd,KAAb;AACH;;AAED,SAAOC,IAAP;AACH,CARD","sourcesContent":["import lodashGet from \"lodash/get\";\nimport { IndexPageDataPlugin } from \"~/plugins/definitions/IndexPageDataPlugin\";\nimport { Page } from \"@webiny/api-page-builder/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\n/**\n * Map our system fields to the Elasticsearch data.\n * We need to add new fields if we add them into our system.\n */\nexport const getESPageData = (page: Page) => {\n return {\n __type: \"page\",\n tenant: page.tenant,\n webinyVersion: page.webinyVersion,\n id: page.id,\n pid: page.pid,\n editor: page.editor,\n locale: page.locale,\n createdOn: page.createdOn,\n savedOn: page.savedOn,\n createdBy: page.createdBy,\n ownedBy: page.ownedBy,\n category: page.category,\n version: page.version,\n title: page.title,\n titleLC: page.title.toLowerCase(),\n path: page.path,\n status: page.status,\n locked: page.locked,\n publishedOn: page.publishedOn,\n\n // Pull tags & snippet from settings.general.\n tags: lodashGet(page, \"settings.general.tags\") || [],\n snippet: lodashGet(page, \"settings.general.snippet\") || null,\n\n // Save some images that could maybe be used on listing pages.\n images: {\n general: lodashGet(page, \"settings.general.image\")\n }\n };\n};\n\nexport const getESLatestPageData = (plugins: PluginsContainer, page: Page) => {\n const data = { ...getESPageData(page), latest: true };\n return modifyData(data, page, plugins);\n};\n\nexport const getESPublishedPageData = (plugins: PluginsContainer, page: Page) => {\n const data = { ...getESPageData(page), published: true };\n return modifyData(data, page, plugins);\n};\n\nconst modifyData = (data: Record<string, any>, page: Page, plugins: PluginsContainer) => {\n const pagePlugins = plugins.byType<IndexPageDataPlugin>(IndexPageDataPlugin.type);\n\n for (const plugin of pagePlugins) {\n plugin.apply({ page, data, plugins });\n }\n\n return data;\n};\n"]}
|
|
@@ -2,10 +2,10 @@ import { PageStorageOperations } from "@webiny/api-page-builder/types";
|
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
3
|
import { Client } from "@elastic/elasticsearch";
|
|
4
4
|
import { PluginsContainer } from "@webiny/plugins";
|
|
5
|
-
export interface
|
|
5
|
+
export interface CreatePageStorageOperationsParams {
|
|
6
6
|
entity: Entity<any>;
|
|
7
7
|
esEntity: Entity<any>;
|
|
8
8
|
elasticsearch: Client;
|
|
9
9
|
plugins: PluginsContainer;
|
|
10
10
|
}
|
|
11
|
-
export declare const createPageStorageOperations: (params:
|
|
11
|
+
export declare const createPageStorageOperations: (params: CreatePageStorageOperationsParams) => PageStorageOperations;
|
|
@@ -170,7 +170,7 @@ const createPageStorageOperations = params => {
|
|
|
170
170
|
* Otherwise update it.
|
|
171
171
|
*/
|
|
172
172
|
|
|
173
|
-
let esData =
|
|
173
|
+
let esData = null;
|
|
174
174
|
let deleteEsRecord = false;
|
|
175
175
|
|
|
176
176
|
if (latestPage && latestPage.id === page.id) {
|
|
@@ -763,7 +763,7 @@ const createPageStorageOperations = params => {
|
|
|
763
763
|
version = Number(id.split("#").pop());
|
|
764
764
|
}
|
|
765
765
|
|
|
766
|
-
let partitionKey =
|
|
766
|
+
let partitionKey = null;
|
|
767
767
|
let sortKey;
|
|
768
768
|
|
|
769
769
|
if (path) {
|
|
@@ -822,7 +822,7 @@ const createPageStorageOperations = params => {
|
|
|
822
822
|
}
|
|
823
823
|
|
|
824
824
|
const {
|
|
825
|
-
after: previousCursor,
|
|
825
|
+
after: previousCursor = null,
|
|
826
826
|
limit: initialLimit
|
|
827
827
|
} = params;
|
|
828
828
|
const limit = (0, _limit.createLimit)(initialLimit, 50);
|
|
@@ -912,7 +912,7 @@ const createPageStorageOperations = params => {
|
|
|
912
912
|
*/
|
|
913
913
|
|
|
914
914
|
|
|
915
|
-
const cursor = items.length > 0 && hasMoreItems ? (0, _cursors.encodeCursor)(hits[items.length - 1].sort) : null;
|
|
915
|
+
const cursor = items.length > 0 && hasMoreItems ? (0, _cursors.encodeCursor)(hits[items.length - 1].sort) || null : null;
|
|
916
916
|
return {
|
|
917
917
|
items,
|
|
918
918
|
meta: {
|
|
@@ -935,6 +935,7 @@ const createPageStorageOperations = params => {
|
|
|
935
935
|
tenant
|
|
936
936
|
},
|
|
937
937
|
sort: [],
|
|
938
|
+
after: null,
|
|
938
939
|
limit: 100000,
|
|
939
940
|
plugins
|
|
940
941
|
}));
|
|
@@ -958,7 +959,13 @@ const createPageStorageOperations = params => {
|
|
|
958
959
|
}
|
|
959
960
|
})
|
|
960
961
|
}));
|
|
961
|
-
|
|
962
|
+
const tags = response.body.aggregations["tags"];
|
|
963
|
+
|
|
964
|
+
if (!tags || Array.isArray(tags.buckets) === false) {
|
|
965
|
+
return [];
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
return tags.buckets.map(item => item.key);
|
|
962
969
|
} catch (ex) {
|
|
963
970
|
throw new _error.default(ex.message || "Could not list tags by given parameters.", ex.code || "LIST_TAGS_ERROR", {
|
|
964
971
|
body,
|
|
@@ -0,0 +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":"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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\";\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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["keys.ts"],"names":["createBasePartitionKey","params","tenant","locale","createPartitionKey","id","createSortKey","version","createPathPartitionKey","createPathSortKey","path","createPublishedSortKey","createLatestSortKey","createBasicType","createLatestType","createPublishedType","createPublishedPathType"],"mappings":";;;;;;;AAAA;;AAOA,MAAMA,sBAAsB,GAAIC,MAAD,IAA4C;AACvE,QAAM;AAAEC,IAAAA,MAAF;AAAUC,IAAAA;AAAV,MAAqBF,MAA3B;AACA,SAAQ,KAAIC,MAAO,MAAKC,MAAO,MAA/B;AACH,CAHD;;AASO,MAAMC,kBAAkB,GAAIH,MAAD,IAAwC;AACtE,QAAM;AAAEI,IAAAA;AAAF,MAAS,4BAAgBJ,MAAM,CAACI,EAAvB,CAAf;AACA,SAAQ,GAAEL,sBAAsB,CAACC,MAAD,CAAS,KAAII,EAAG,EAAhD;AACH,CAHM;;;;AASA,MAAMC,aAAa,GAAIL,MAAD,IAAmC;AAC5D,SAAQ,OAAM,oBAAQA,MAAM,CAACM,OAAf,CAAwB,EAAtC;AACH,CAFM;;;;AAIA,MAAMC,sBAAsB,GAAIP,MAAD,IAA4C;AAC9E,SAAQ,GAAED,sBAAsB,CAACC,MAAD,CAAS,MAAzC;AACH,CAFM;;;;AAQA,MAAMQ,iBAAiB,GAAIR,MAAD,IAAuC;AACpE,SAAOA,MAAM,CAACS,IAAd;AACH,CAFM;;;;AAIA,MAAMC,sBAAsB,GAAG,MAAc;AAChD,SAAO,GAAP;AACH,CAFM;;;;AAIA,MAAMC,mBAAmB,GAAG,MAAc;AAC7C,SAAO,GAAP;AACH,CAFM;;;;AAIA,MAAMC,eAAe,GAAG,MAAc;AACzC,SAAO,SAAP;AACH,CAFM;;;;AAIA,MAAMC,gBAAgB,GAAG,MAAc;AAC1C,SAAO,WAAP;AACH,CAFM;;;;AAIA,MAAMC,mBAAmB,GAAG,MAAc;AAC7C,SAAO,WAAP;AACH,CAFM;;;;AAIA,MAAMC,uBAAuB,GAAG,MAAc;AACjD,SAAO,gBAAP;AACH,CAFM","sourcesContent":["import { parseIdentifier, zeroPad } from \"@webiny/utils\";\n\ninterface BasePartitionKeyParams {\n tenant: string;\n locale: string;\n}\n\nconst createBasePartitionKey = (params: BasePartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#PB#`;\n};\n\nexport interface PartitionKeyParams extends BasePartitionKeyParams {\n id: string;\n}\n\nexport const createPartitionKey = (params: PartitionKeyParams): string => {\n const { id } = parseIdentifier(params.id);\n return `${createBasePartitionKey(params)}P#${id}`;\n};\n\nexport interface SortKeyParams {\n version: number;\n}\n\nexport const createSortKey = (params: SortKeyParams): string => {\n return `REV#${zeroPad(params.version)}`;\n};\n\nexport const createPathPartitionKey = (params: BasePartitionKeyParams): string => {\n return `${createBasePartitionKey(params)}PATH`;\n};\n\nexport interface PathSortKeyParams {\n path: string;\n}\n\nexport const createPathSortKey = (params: PathSortKeyParams): string => {\n return params.path;\n};\n\nexport const createPublishedSortKey = (): string => {\n return \"P\";\n};\n\nexport const createLatestSortKey = (): string => {\n return \"L\";\n};\n\nexport const createBasicType = (): string => {\n return \"pb.page\";\n};\n\nexport const createLatestType = (): string => {\n return \"pb.page.l\";\n};\n\nexport const createPublishedType = (): string => {\n return \"pb.page.p\";\n};\n\nexport const createPublishedPathType = (): string => {\n return \"pb.page.p.path\";\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SettingsStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateSettingsStorageOperationsParams {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
}
|
|
6
|
-
export declare const createSettingsStorageOperations: ({ entity }:
|
|
6
|
+
export declare const createSettingsStorageOperations: ({ entity }: CreateSettingsStorageOperationsParams) => SettingsStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["extractFromStorage","settings","tenant","locale","prepareForStorage","createPartitionKey","params","parts","push","join","createSortKey","type","WebinyError","createType","createSettingsStorageOperations","entity","get","where","keys","PK","SK","result","Item","ex","message","code","create","put","TYPE","update","original","createCacheKey"],"mappings":"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","sourcesContent":["import {\n DefaultSettingsCrudOptions,\n Settings,\n SettingsStorageOperations,\n SettingsStorageOperationsCreateParams,\n SettingsStorageOperationsGetParams,\n SettingsStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport WebinyError from \"@webiny/error\";\n\nconst extractFromStorage = (settings: Settings): Settings => {\n return {\n ...settings,\n tenant: !settings.tenant ? false : settings.tenant,\n locale: !settings.locale ? false : settings.locale\n };\n};\n\ninterface StorageSettings extends Omit<Settings, \"tenant\" | \"locale\"> {\n tenant: string | false | null | undefined;\n locale: string | false | null | undefined;\n}\nconst prepareForStorage = (settings: Settings): StorageSettings => {\n return {\n ...settings,\n tenant: !settings.tenant ? null : settings.tenant,\n locale: !settings.locale ? null : settings.locale\n };\n};\n\n/**\n * Because it is a possibility that tenant and locale are set as false (for the global settings) we must take\n * it in consideration and create the partition key for the global settings.\n */\ninterface PartitionKeyParams {\n tenant: string | boolean | undefined;\n locale: string | boolean | undefined;\n}\n\nconst createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n const parts: string[] = [];\n if (tenant !== false) {\n parts.push(`T#${tenant}`);\n }\n if (locale !== false) {\n parts.push(`L#${locale}`);\n }\n parts.push(\"PB#SETTINGS\");\n\n return parts.join(\"#\");\n};\n\n/**\n * We expect any object that has type property in it.\n * This way we can either receive a settings object or where conditions\n */\ninterface SortKeyParams {\n type: string;\n}\nconst createSortKey = (params: SortKeyParams): string => {\n const { type } = params;\n switch (type) {\n case \"default\":\n return type;\n default:\n throw new WebinyError(\"Unsupported type for the sort key.\", \"UNSUPPORTED_TYPE\", {\n type\n });\n }\n};\n\nconst createType = (): string => {\n return \"pb.settings\";\n};\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createSettingsStorageOperations = ({\n entity\n}: CreateSettingsStorageOperationsParams): SettingsStorageOperations => {\n const get = async (params: SettingsStorageOperationsGetParams) => {\n const { where } = params;\n const keys = {\n PK: createPartitionKey(where),\n SK: createSortKey(where)\n };\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n const settings = cleanupItem(entity, result.Item);\n\n return extractFromStorage(settings);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load settings record.\",\n ex.code || \"SETTINGS_GET_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const create = async (params: SettingsStorageOperationsCreateParams) => {\n const { settings } = params;\n const keys = {\n PK: createPartitionKey(settings),\n SK: createSortKey(settings)\n };\n try {\n await entity.put({\n ...prepareForStorage(settings),\n TYPE: createType(),\n ...keys\n });\n\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create settings record.\",\n ex.code || \"SETTINGS_CREATE_ERROR\",\n {\n settings,\n keys\n }\n );\n }\n };\n\n const update = async (params: SettingsStorageOperationsUpdateParams) => {\n const { original, settings } = params;\n const keys = {\n PK: createPartitionKey(settings),\n SK: createSortKey(settings)\n };\n try {\n await entity.put({\n ...prepareForStorage(settings),\n TYPE: createType(),\n ...keys\n });\n\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update settings record.\",\n ex.code || \"SETTINGS_UPDATE_ERROR\",\n {\n original,\n settings,\n keys\n }\n );\n }\n };\n /**\n * We can simply return the partition key for this storage operations.\n */\n const createCacheKey = (params: DefaultSettingsCrudOptions): string => {\n return createPartitionKey(params);\n };\n\n return {\n get,\n create,\n update,\n createCacheKey\n };\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SystemStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
2
|
import { Entity } from "dynamodb-toolbox";
|
|
3
|
-
export interface
|
|
3
|
+
export interface CreateSystemStorageOperationsParams {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
}
|
|
6
|
-
export declare const createSystemStorageOperations: ({ entity }:
|
|
6
|
+
export declare const createSystemStorageOperations: ({ entity }: CreateSystemStorageOperationsParams) => SystemStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["createPartitionKey","tenant","createSortKey","createSystemStorageOperations","entity","get","params","keys","PK","SK","result","Item","ex","WebinyError","message","code","create","system","put","update","original"],"mappings":";;;;;;;;;;;AAAA;;AAQA;;;;;;AAKA,MAAMA,kBAAkB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAA4C;AACnE,SAAQ,KAAIA,MAAO,SAAnB;AACH,CAFD;;AAIA,MAAMC,aAAa,GAAG,MAAc;AAChC,SAAO,IAAP;AACH,CAFD;;AAOO,MAAMC,6BAA6B,GAAG,CAAC;AAC1CC,EAAAA;AAD0C,CAAD,KAEuB;AAChE,QAAMC,GAAG,GAAG,MAAOC,MAAP,IAA4E;AACpF,UAAM;AAAEL,MAAAA;AAAF,QAAaK,MAAnB;AACA,UAAMC,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAER,kBAAkB,CAAC;AAAEC,QAAAA;AAAF,OAAD,CADb;AAETQ,MAAAA,EAAE,EAAEP,aAAa;AAFR,KAAb;;AAIA,QAAI;AACA,YAAMQ,MAAM,GAAG,MAAMN,MAAM,CAACC,GAAP,CAAWE,IAAX,CAArB;;AACA,UAAI,CAACG,MAAD,IAAW,CAACA,MAAM,CAACC,IAAvB,EAA6B;AACzB,eAAO,IAAP;AACH;;AACD,aAAO,0BAAYP,MAAZ,EAAoBM,MAAM,CAACC,IAA3B,CAAP;AACH,KAND,CAME,OAAOC,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,+BADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,kBAFT,EAGF;AACIR,QAAAA;AADJ,OAHE,CAAN;AAOH;AACJ,GArBD;;AAuBA,QAAMS,MAAM,GAAG,MAAOV,MAAP,IAAwE;AACnF,UAAM;AAAEW,MAAAA;AAAF,QAAaX,MAAnB;AACA,UAAMC,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAER,kBAAkB,CAACiB,MAAD,CADb;AAETR,MAAAA,EAAE,EAAEP,aAAa;AAFR,KAAb;;AAIA,QAAI;AACA,YAAME,MAAM,CAACc,GAAP,iCACCD,MADD,GAECV,IAFD,EAAN;AAIA,aAAOU,MAAP;AACH,KAND,CAME,OAAOL,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;AACIE,QAAAA,MADJ;AAEIV,QAAAA;AAFJ,OAHE,CAAN;AAQH;AACJ,GAtBD;;AAwBA,QAAMY,MAAM,GAAG,MAAOb,MAAP,IAAwE;AACnF,UAAM;AAAEc,MAAAA,QAAF;AAAYH,MAAAA;AAAZ,QAAuBX,MAA7B;AACA,UAAMC,IAAI,GAAG;AACTC,MAAAA,EAAE,EAAER,kBAAkB,CAACoB,QAAD,CADb;AAETX,MAAAA,EAAE,EAAEP,aAAa;AAFR,KAAb;;AAIA,QAAI;AACA,YAAME,MAAM,CAACc,GAAP,iCACCD,MADD,GAECV,IAFD,EAAN;AAIA,aAAOU,MAAP;AACH,KAND,CAME,OAAOL,EAAP,EAAW;AACT,YAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;AACIK,QAAAA,QADJ;AAEIH,QAAAA,MAFJ;AAGIV,QAAAA;AAHJ,OAHE,CAAN;AASH;AACJ,GAvBD;;AAyBA,SAAO;AACHF,IAAAA,GADG;AAEHW,IAAAA,MAFG;AAGHG,IAAAA;AAHG,GAAP;AAKH,CAhFM","sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n System,\n SystemStorageOperations,\n SystemStorageOperationsCreateParams,\n SystemStorageOperationsGetParams,\n SystemStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\ninterface PartitionKeyParams {\n tenant: string;\n}\nconst createPartitionKey = ({ tenant }: PartitionKeyParams): string => {\n return `T#${tenant}#SYSTEM`;\n};\n\nconst createSortKey = (): string => {\n return \"PB\";\n};\n\nexport interface CreateSystemStorageOperationsParams {\n entity: Entity<any>;\n}\nexport const createSystemStorageOperations = ({\n entity\n}: CreateSystemStorageOperationsParams): SystemStorageOperations => {\n const get = async (params: SystemStorageOperationsGetParams): Promise<System | null> => {\n const { tenant } = params;\n const keys = {\n PK: createPartitionKey({ tenant }),\n SK: createSortKey()\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 system record.\",\n ex.code || \"SYSTEM_GET_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const create = async (params: SystemStorageOperationsCreateParams): Promise<System> => {\n const { system } = params;\n const keys = {\n PK: createPartitionKey(system),\n SK: createSortKey()\n };\n try {\n await entity.put({\n ...system,\n ...keys\n });\n return system;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create system record.\",\n ex.code || \"SYSTEM_CREATE_ERROR\",\n {\n system,\n keys\n }\n );\n }\n };\n\n const update = async (params: SystemStorageOperationsUpdateParams): Promise<System> => {\n const { original, system } = params;\n const keys = {\n PK: createPartitionKey(original),\n SK: createSortKey()\n };\n try {\n await entity.put({\n ...system,\n ...keys\n });\n return system;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update system record.\",\n ex.code || \"SYSTEM_UPDATE_ERROR\",\n {\n original,\n system,\n keys\n }\n );\n }\n };\n\n return {\n get,\n create,\n update\n };\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Client } from "@elastic/elasticsearch";
|
|
2
|
-
export interface
|
|
2
|
+
export interface ExecOnBeforeInstallParams {
|
|
3
3
|
elasticsearch: Client;
|
|
4
4
|
tenant: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const execOnBeforeInstall: (params:
|
|
6
|
+
export declare const execOnBeforeInstall: (params: ExecOnBeforeInstallParams) => Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["installation.ts"],"names":["execOnBeforeInstall","params","elasticsearch","index","configurations","es","body","exists","indices","create","settings","analysis","analyzer","lowercase_analyzer","type","filter","tokenizer","mappings","properties","property","fields","keyword","ignore_above"],"mappings":";;;;;;;;;AAAA;;AAOO,MAAMA,mBAAmB,GAAG,MAAOC,MAAP,IAA4D;AAC3F,QAAM;AAAEC,IAAAA;AAAF,MAAoBD,MAA1B;;AAEA,QAAM;AAAEE,IAAAA;AAAF,MAAYC,wBAAeC,EAAf,CAAkBJ,MAAlB,CAAlB;;AAEA,QAAM;AAAEK,IAAAA,IAAI,EAAEC;AAAR,MAAmB,MAAML,aAAa,CAACM,OAAd,CAAsBD,MAAtB,CAA6B;AAAEJ,IAAAA;AAAF,GAA7B,CAA/B;;AACA,MAAII,MAAJ,EAAY;AACR;AACH;;AAED,QAAML,aAAa,CAACM,OAAd,CAAsBC,MAAtB,CAA6B;AAC/BN,IAAAA,KAD+B;AAE/BG,IAAAA,IAAI,EAAE;AACF;AACAI,MAAAA,QAAQ,EAAE;AACNC,QAAAA,QAAQ,EAAE;AACNC,UAAAA,QAAQ,EAAE;AACNC,YAAAA,kBAAkB,EAAE;AAChBC,cAAAA,IAAI,EAAE,QADU;AAEhBC,cAAAA,MAAM,EAAE,CAAC,WAAD,EAAc,MAAd,CAFQ;AAGhBC,cAAAA,SAAS,EAAE;AAHK;AADd;AADJ;AADJ,OAFR;AAaFC,MAAAA,QAAQ,EAAE;AACNC,QAAAA,UAAU,EAAE;AACRC,UAAAA,QAAQ,EAAE;AACNL,YAAAA,IAAI,EAAE,MADA;AAENM,YAAAA,MAAM,EAAE;AACJC,cAAAA,OAAO,EAAE;AACLP,gBAAAA,IAAI,EAAE,SADD;AAELQ,gBAAAA,YAAY,EAAE;AAFT;AADL,aAFF;AAQNV,YAAAA,QAAQ,EAAE;AARJ;AADF;AADN;AAbR;AAFyB,GAA7B,CAAN;AA+BH,CAzCM","sourcesContent":["import configurations from \"~/operations/configurations\";\nimport { Client } from \"@elastic/elasticsearch\";\n\nexport interface ExecOnBeforeInstallParams {\n elasticsearch: Client;\n tenant: string;\n}\nexport const execOnBeforeInstall = async (params: ExecOnBeforeInstallParams): Promise<void> => {\n const { elasticsearch } = params;\n\n const { index } = configurations.es(params);\n\n const { body: exists } = await elasticsearch.indices.exists({ index });\n if (exists) {\n return;\n }\n\n await elasticsearch.indices.create({\n index,\n body: {\n // need this part for sorting to work on text fields\n settings: {\n analysis: {\n analyzer: {\n lowercase_analyzer: {\n type: \"custom\",\n filter: [\"lowercase\", \"trim\"],\n tokenizer: \"keyword\"\n }\n }\n }\n },\n mappings: {\n properties: {\n property: {\n type: \"text\",\n fields: {\n keyword: {\n type: \"keyword\",\n ignore_above: 256\n }\n },\n analyzer: \"lowercase_analyzer\"\n }\n }\n }\n }\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.
|
|
3
|
+
"version": "5.25.0-beta.2",
|
|
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.
|
|
21
|
-
"@webiny/api-elasticsearch": "5.
|
|
22
|
-
"@webiny/api-page-builder": "5.
|
|
23
|
-
"@webiny/api-upgrade": "5.
|
|
24
|
-
"@webiny/db-dynamodb": "5.
|
|
25
|
-
"@webiny/error": "5.
|
|
26
|
-
"@webiny/handler-db": "5.
|
|
27
|
-
"@webiny/plugins": "5.
|
|
28
|
-
"@webiny/utils": "5.
|
|
20
|
+
"@babel/runtime": "7.17.7",
|
|
21
|
+
"@webiny/api-elasticsearch": "5.25.0-beta.2",
|
|
22
|
+
"@webiny/api-page-builder": "5.25.0-beta.2",
|
|
23
|
+
"@webiny/api-upgrade": "5.25.0-beta.2",
|
|
24
|
+
"@webiny/db-dynamodb": "5.25.0-beta.2",
|
|
25
|
+
"@webiny/error": "5.25.0-beta.2",
|
|
26
|
+
"@webiny/handler-db": "5.25.0-beta.2",
|
|
27
|
+
"@webiny/plugins": "5.25.0-beta.2",
|
|
28
|
+
"@webiny/utils": "5.25.0-beta.2",
|
|
29
29
|
"dataloader": "2.0.0",
|
|
30
30
|
"dynamodb-toolbox": "0.3.5",
|
|
31
31
|
"elastic-ts": "0.7.0",
|
|
@@ -39,20 +39,20 @@
|
|
|
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.
|
|
43
|
-
"@webiny/api-security": "^5.
|
|
44
|
-
"@webiny/api-tenancy": "^5.
|
|
45
|
-
"@webiny/cli": "^5.
|
|
46
|
-
"@webiny/handler": "^5.
|
|
47
|
-
"@webiny/handler-aws": "^5.
|
|
48
|
-
"@webiny/handler-graphql": "^5.
|
|
49
|
-
"@webiny/project-utils": "^5.
|
|
42
|
+
"@webiny/api-dynamodb-to-elasticsearch": "^5.25.0-beta.2",
|
|
43
|
+
"@webiny/api-security": "^5.25.0-beta.2",
|
|
44
|
+
"@webiny/api-tenancy": "^5.25.0-beta.2",
|
|
45
|
+
"@webiny/cli": "^5.25.0-beta.2",
|
|
46
|
+
"@webiny/handler": "^5.25.0-beta.2",
|
|
47
|
+
"@webiny/handler-aws": "^5.25.0-beta.2",
|
|
48
|
+
"@webiny/handler-graphql": "^5.25.0-beta.2",
|
|
49
|
+
"@webiny/project-utils": "^5.25.0-beta.2",
|
|
50
50
|
"jest": "^26.6.3",
|
|
51
51
|
"jest-dynalite": "^3.2.0",
|
|
52
52
|
"jest-environment-node": "^27.0.6",
|
|
53
53
|
"rimraf": "^3.0.2",
|
|
54
54
|
"ttypescript": "^1.5.12",
|
|
55
|
-
"typescript": "
|
|
55
|
+
"typescript": "4.5.5"
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"build": "yarn webiny run build",
|
|
63
63
|
"watch": "yarn webiny run watch"
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "ed2f22976af47aea0b6b5d638f8afdc39951b014"
|
|
66
66
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["CategoryDynamoDbElasticFieldPlugin.ts"],"names":["CategoryDynamoDbElasticFieldPlugin","FieldPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,kCAAN,SAAiDC,wBAAjD,CAA6D;;;8BAAvDD,kC,UACsC,wC","sourcesContent":["import { FieldPlugin } from \"@webiny/db-dynamodb/plugins/definitions/FieldPlugin\";\n\nexport class CategoryDynamoDbElasticFieldPlugin extends FieldPlugin {\n public static override readonly type: string = \"pageBuilder.dynamodb.es.field.category\";\n}\n"]}
|
|
@@ -9,7 +9,7 @@ interface ApplyPageDataCallable<TPage> {
|
|
|
9
9
|
(params: ApplyPageDataParams<TPage>): void;
|
|
10
10
|
}
|
|
11
11
|
export declare class IndexPageDataPlugin<TPage extends Page = Page> extends Plugin {
|
|
12
|
-
static readonly type
|
|
12
|
+
static readonly type: string;
|
|
13
13
|
private readonly callable;
|
|
14
14
|
constructor(callable: ApplyPageDataCallable<TPage>);
|
|
15
15
|
apply(params: ApplyPageDataParams<TPage>): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["IndexPageDataPlugin.ts"],"names":["IndexPageDataPlugin","Plugin","constructor","callable","apply","params"],"mappings":";;;;;;;;;;;AAAA;;AAaO,MAAMA,mBAAN,SAA6DC,eAA7D,CAAoE;AAIvEC,EAAAA,WAAW,CAACC,QAAD,EAAyC;AAChD;AADgD;AAEhD,SAAKA,QAAL,GAAgBA,QAAhB;AACH;;AAEDC,EAAAA,KAAK,CAACC,MAAD,EAAqC;AACtC,QAAI,OAAO,KAAKF,QAAZ,KAAyB,UAA7B,EAAyC;AACrC;AACH;;AACD,SAAKA,QAAL,CAAcE,MAAd;AACH;;AAdsE;;;8BAA9DL,mB,UACsC,kC","sourcesContent":["import { Plugin, PluginsContainer } from \"@webiny/plugins\";\nimport { Page } from \"@webiny/api-page-builder/types\";\n\ninterface ApplyPageDataParams<TPage> {\n data: Record<string, any>;\n page: TPage;\n plugins: PluginsContainer;\n}\n\ninterface ApplyPageDataCallable<TPage> {\n (params: ApplyPageDataParams<TPage>): void;\n}\n\nexport class IndexPageDataPlugin<TPage extends Page = Page> extends Plugin {\n public static override readonly type: string = \"pb.elasticsearch.index-page-data\";\n private readonly callable: ApplyPageDataCallable<TPage>;\n\n constructor(callable: ApplyPageDataCallable<TPage>) {\n super();\n this.callable = callable;\n }\n\n apply(params: ApplyPageDataParams<TPage>) {\n if (typeof this.callable !== \"function\") {\n return;\n }\n this.callable(params);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["MenuDynamoDbElasticFieldPlugin.ts"],"names":["MenuDynamoDbElasticFieldPlugin","FieldPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,8BAAN,SAA6CC,wBAA7C,CAAyD;;;8BAAnDD,8B,UACsC,oC","sourcesContent":["import { FieldPlugin } from \"@webiny/db-dynamodb/plugins/definitions/FieldPlugin\";\n\nexport class MenuDynamoDbElasticFieldPlugin extends FieldPlugin {\n public static override readonly type: string = \"pageBuilder.dynamodb.es.field.menu\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PageElasticsearchBodyModifierPlugin.ts"],"names":["PageElasticsearchBodyModifierPlugin","ElasticsearchBodyModifierPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,mCAAN,SAAkDC,gEAAlD,CAAkF;;;8BAA5ED,mC,UACsC,8C","sourcesContent":["import { ElasticsearchBodyModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchBodyModifierPlugin\";\n\nexport class PageElasticsearchBodyModifierPlugin extends ElasticsearchBodyModifierPlugin {\n public static override readonly type: string = \"pageBuilder.elasticsearch.modifier.body.page\";\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ElasticsearchFieldPlugin
|
|
1
|
+
import { ElasticsearchFieldPlugin } from "@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin";
|
|
2
2
|
export declare class PageElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {
|
|
3
3
|
static readonly type: string;
|
|
4
|
-
constructor(params: Params);
|
|
5
4
|
}
|
|
@@ -11,12 +11,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
11
11
|
|
|
12
12
|
var _ElasticsearchFieldPlugin = require("@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin");
|
|
13
13
|
|
|
14
|
-
class PageElasticsearchFieldPlugin extends _ElasticsearchFieldPlugin.ElasticsearchFieldPlugin {
|
|
15
|
-
constructor(params) {
|
|
16
|
-
super(params);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
}
|
|
14
|
+
class PageElasticsearchFieldPlugin extends _ElasticsearchFieldPlugin.ElasticsearchFieldPlugin {}
|
|
20
15
|
|
|
21
16
|
exports.PageElasticsearchFieldPlugin = PageElasticsearchFieldPlugin;
|
|
22
17
|
(0, _defineProperty2.default)(PageElasticsearchFieldPlugin, "type", "pageBuilder.elasticsearch.fieldDefinition.page");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PageElasticsearchFieldPlugin.ts"],"names":["PageElasticsearchFieldPlugin","ElasticsearchFieldPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,4BAAN,SAA2CC,kDAA3C,CAAoE;;;8BAA9DD,4B,UACsC,gD","sourcesContent":["import { ElasticsearchFieldPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchFieldPlugin\";\n\nexport class PageElasticsearchFieldPlugin extends ElasticsearchFieldPlugin {\n public static override readonly type: string = \"pageBuilder.elasticsearch.fieldDefinition.page\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PageElasticsearchQueryModifierPlugin.ts"],"names":["PageElasticsearchQueryModifierPlugin","ElasticsearchQueryModifierPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,oCAAN,SAAmDC,kEAAnD,CAAoF;;;8BAA9ED,oC,UACsC,+C","sourcesContent":["import { ElasticsearchQueryModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchQueryModifierPlugin\";\n\nexport class PageElasticsearchQueryModifierPlugin extends ElasticsearchQueryModifierPlugin {\n public static override readonly type: string = \"pageBuilder.elasticsearch.modifier.query.page\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PageElasticsearchSortModifierPlugin.ts"],"names":["PageElasticsearchSortModifierPlugin","ElasticsearchSortModifierPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,mCAAN,SAAkDC,gEAAlD,CAAkF;;;8BAA5ED,mC,UACsC,8C","sourcesContent":["import { ElasticsearchSortModifierPlugin } from \"@webiny/api-elasticsearch/plugins/definition/ElasticsearchSortModifierPlugin\";\n\nexport class PageElasticsearchSortModifierPlugin extends ElasticsearchSortModifierPlugin {\n public static override readonly type: string = \"pageBuilder.elasticsearch.modifier.sort.page\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["PageElementDynamoDbElasticFieldPlugin.ts"],"names":["PageElementDynamoDbElasticFieldPlugin","FieldPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,qCAAN,SAAoDC,wBAApD,CAAgE;;;8BAA1DD,qC,UACsC,2C","sourcesContent":["import { FieldPlugin } from \"@webiny/db-dynamodb/plugins/definitions/FieldPlugin\";\n\nexport class PageElementDynamoDbElasticFieldPlugin extends FieldPlugin {\n public static override readonly type: string = \"pageBuilder.dynamodb.es.field.pageElement\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["SearchLatestPagesPlugin.ts"],"names":["SearchLatestPagesPlugin","SearchPagesPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,uBAAN,SAAsCC,oCAAtC,CAAwD;;;8BAAlDD,uB,UACsC,sC","sourcesContent":["import { SearchPagesPlugin } from \"./SearchPagesPlugin\";\n\nexport class SearchLatestPagesPlugin extends SearchPagesPlugin {\n public static override readonly type: string = \"pb.elasticsearch.search-latest-pages\";\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["SearchPagesPlugin.ts"],"names":["SearchPagesPlugin","Plugin","constructor","config","modifyQuery","args","modifySort"],"mappings":";;;;;;;;;;;AAAA;;AAoBO,MAAeA,iBAAf,SAAyCC,eAAzC,CAAgD;AAG5CC,EAAAA,WAAW,CAACC,MAAD,EAAiB;AAC/B;AAD+B;AAE/B,SAAKA,MAAL,GAAcA,MAAd;AACH;;AAEMC,EAAAA,WAAW,CAACC,IAAD,EAA8B;AAC5C,QAAI,OAAO,KAAKF,MAAL,CAAYC,WAAnB,KAAmC,UAAvC,EAAmD;AAC/C;AACH;;AACD,SAAKD,MAAL,CAAYC,WAAZ,CAAwBC,IAAxB;AACH;;AAEMC,EAAAA,UAAU,CAACD,IAAD,EAA6B;AAC1C,QAAI,OAAO,KAAKF,MAAL,CAAYG,UAAnB,KAAkC,UAAtC,EAAkD;AAC9C;AACH;;AACD,SAAKH,MAAL,CAAYG,UAAZ,CAAuBD,IAAvB;AACH;;AApBkD","sourcesContent":["import { Plugin, PluginsContainer } from \"@webiny/plugins\";\nimport { ElasticsearchBoolQueryConfig, Sort as esSort } from \"@webiny/api-elasticsearch/types\";\n\ninterface ModifyQueryArgs {\n query: ElasticsearchBoolQueryConfig;\n args: Record<string, any>;\n plugins: PluginsContainer;\n}\n\ninterface ModifySortArgs {\n sort: esSort;\n args: Record<string, any>;\n plugins: PluginsContainer;\n}\n\ninterface Config {\n modifyQuery?(args: ModifyQueryArgs): void;\n modifySort?(args: ModifySortArgs): void;\n}\n\nexport abstract class SearchPagesPlugin extends Plugin {\n private readonly config: Config;\n\n public constructor(config: Config) {\n super();\n this.config = config;\n }\n\n public modifyQuery(args: ModifyQueryArgs): void {\n if (typeof this.config.modifyQuery !== \"function\") {\n return;\n }\n this.config.modifyQuery(args);\n }\n\n public modifySort(args: ModifySortArgs): void {\n if (typeof this.config.modifySort !== \"function\") {\n return;\n }\n this.config.modifySort(args);\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["SearchPublishedPagesPlugin.ts"],"names":["SearchPublishedPagesPlugin","SearchPagesPlugin"],"mappings":";;;;;;;;;;;AAAA;;AAEO,MAAMA,0BAAN,SAAyCC,oCAAzC,CAA2D;;;8BAArDD,0B,UACsC,yC","sourcesContent":["import { SearchPagesPlugin } from \"./SearchPagesPlugin\";\n\nexport class SearchPublishedPagesPlugin extends SearchPagesPlugin {\n public static override readonly type: string = \"pb.elasticsearch.search-published-pages\";\n}\n"]}
|
package/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["types.ts"],"names":["ENTITIES"],"mappings":";;;;;;IAeYA,Q;;;WAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;AAAAA,EAAAA,Q;GAAAA,Q,wBAAAA,Q","sourcesContent":["import { PageBuilderStorageOperations as BasePageBuilderStorageOperations } from \"@webiny/api-page-builder/types\";\nimport { Entity, Table } from \"dynamodb-toolbox\";\nimport { DocumentClient } from \"aws-sdk/clients/dynamodb\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { DynamoDBTypes, TableConstructor } from \"dynamodb-toolbox/dist/classes/Table\";\nimport {\n EntityAttributeConfig,\n EntityCompositeAttributes\n} from \"dynamodb-toolbox/dist/classes/Entity\";\n\nexport type AttributeDefinition = DynamoDBTypes | EntityAttributeConfig | EntityCompositeAttributes;\n\nexport type Attributes = Record<string, AttributeDefinition>;\n\nexport enum ENTITIES {\n SYSTEM = \"PbSystem\",\n SETTINGS = \"PbSettings\",\n CATEGORIES = \"PbCategories\",\n MENUS = \"PbMenus\",\n PAGE_ELEMENTS = \"PbPageElements\",\n PAGES = \"PbPages\",\n PAGES_ES = \"PbPagesEs\"\n}\n\nexport interface TableModifier {\n (table: TableConstructor): TableConstructor;\n}\n\nexport interface PageBuilderStorageOperations extends BasePageBuilderStorageOperations {\n getTable: () => Table;\n getEsTable: () => Table;\n getEntities: () => Record<\n \"system\" | \"settings\" | \"categories\" | \"menus\" | \"pageElements\" | \"pages\" | \"pagesEs\",\n Entity<any>\n >;\n}\n\nexport interface StorageOperationsFactoryParams {\n documentClient: DocumentClient;\n elasticsearch: Client;\n table?: TableModifier;\n esTable?: TableModifier;\n attributes?: Record<ENTITIES, Attributes>;\n plugins?: Plugin[] | Plugin[][];\n}\n\nexport interface StorageOperationsFactory {\n (params: StorageOperationsFactoryParams): PageBuilderStorageOperations;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;eAEe,MAAM,CAAC,iBAAD,C","sourcesContent":["import upgrade5150 from \"~/upgrades/v5.15.0\";\n\nexport default () => [upgrade5150()];\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["category.ts"],"names":["upgradeCategories","context","tenant","tenancy","getCurrentTenant","id","localeCodes","i18n","getLocales","map","locale","code","categoryStorageOperations","pageBuilder","categories","storageOperations","CategoryStorageOperationsDdbEs","WebinyError","records","partitionKey","createPartitionKey","result","entity","options","gt","push","item","PK","SK","createSortKey","TYPE","createType","items","record","putBatch","table"],"mappings":";;;;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;;;;;AAQO,MAAMA,iBAAiB,GAAG,MAAOC,OAAP,IAA8B;AAC3D,QAAMC,MAAc,GAAGD,OAAO,CAACE,OAAR,CAAgBC,gBAAhB,GAAmCC,EAA1D;AACA,QAAMC,WAAqB,GAAG,MAAML,OAAO,CAACM,IAAR,CAAaC,UAAb,GAA0BC,GAA1B,CAA8BC,MAAM,IAAIA,MAAM,CAACC,IAA/C,CAApC,CAF2D,CAG3D;;AACA,QAAMC,yBAAyB,GAAGX,OAAO,CAACY,WAAR,CAAoBC,UAApB,CAC7BC,iBADL;;AAEA,MAAIH,yBAAyB,YAAYI,yDAArC,KAAwE,KAA5E,EAAmF;AAC/E,UAAM,IAAIC,cAAJ,CACF,sGADE,CAAN;AAGH;AACD;AACJ;AACA;;;AACI,QAAMC,OAA6B,GAAG,EAAtC;;AACA,OAAK,MAAMR,MAAX,IAAqBJ,WAArB,EAAkC;AAC9B,UAAMa,YAAY,GAAGP,yBAAyB,CAACQ,kBAA1B,CAA6C;AAC9DlB,MAAAA,MAD8D;AAE9DQ,MAAAA;AAF8D,KAA7C,CAArB;AAIA,UAAMW,MAAM,GAAG,MAAM,qBAAmB;AACpCC,MAAAA,MAAM,EAAEV,yBAAyB,CAACU,MADE;AAEpCH,MAAAA,YAFoC;AAGpCI,MAAAA,OAAO,EAAE;AACLC,QAAAA,EAAE,EAAE;AADC;AAH2B,KAAnB,CAArB;AAOA;AACR;AACA;;AACQN,IAAAA,OAAO,CAACO,IAAR,CACI,GAAGJ,MAAM,CAACZ,GAAP,CAAWiB,IAAI,IAAI;AAClB,6CACOA,IADP;AAEIC,QAAAA,EAAE,EAAER,YAFR;AAGIS,QAAAA,EAAE,EAAEhB,yBAAyB,CAACiB,aAA1B,CAAwCH,IAAxC,CAHR;AAIII,QAAAA,IAAI,EAAElB,yBAAyB,CAACmB,UAA1B,EAJV;AAKI7B,QAAAA,MALJ;AAMIQ,QAAAA;AANJ;AAQH,KATE,CADP;AAYH;;AACD,QAAMsB,KAAK,GAAGd,OAAO,CAACT,GAAR,CAAYwB,MAAM,IAAI;AAChC,WAAOrB,yBAAyB,CAACU,MAA1B,CAAiCY,QAAjC,CAA0CD,MAA1C,CAAP;AACH,GAFa,CAAd;AAIA,QAAM,+BAAc;AAChBE,IAAAA,KAAK,EAAEvB,yBAAyB,CAACuB,KADjB;AAEhBH,IAAAA;AAFgB,GAAd,CAAN;AAIH,CAnDM","sourcesContent":["import { PbContext } from \"@webiny/api-page-builder/graphql/types\";\n// @ts-ignore\nimport { CategoryStorageOperationsDdbEs } from \"~/operations/category/CategoryStorageOperations\";\nimport { Category } from \"@webiny/api-page-builder/types\";\nimport { queryAll } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport WebinyError from \"@webiny/error\";\n\ntype DbRecord<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport const upgradeCategories = async (context: PbContext) => {\n const tenant: string = context.tenancy.getCurrentTenant().id;\n const localeCodes: string[] = await context.i18n.getLocales().map(locale => locale.code);\n // @ts-ignore\n const categoryStorageOperations = context.pageBuilder.categories\n .storageOperations as CategoryStorageOperationsDdbEs;\n if (categoryStorageOperations instanceof CategoryStorageOperationsDdbEs === false) {\n throw new WebinyError(\n \"context.pageBuilder.categories.storageOperations must be instance of CategoryStorageOperationsDdbEs.\"\n );\n }\n /**\n * First we need all categories in all existing locales of the tenant.\n */\n const records: DbRecord<Category>[] = [];\n for (const locale of localeCodes) {\n const partitionKey = categoryStorageOperations.createPartitionKey({\n tenant,\n locale\n });\n const result = await queryAll<Category>({\n entity: categoryStorageOperations.entity,\n partitionKey,\n options: {\n gt: \" \"\n }\n });\n /**\n * Need to update existing categories with tenant and locale information.\n */\n records.push(\n ...result.map(item => {\n return {\n ...item,\n PK: partitionKey,\n SK: categoryStorageOperations.createSortKey(item),\n TYPE: categoryStorageOperations.createType(),\n tenant,\n locale\n };\n })\n );\n }\n const items = records.map(record => {\n return categoryStorageOperations.entity.putBatch(record);\n });\n\n await batchWriteAll({\n table: categoryStorageOperations.table,\n items\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["type","app","version","apply","context","ex","console","log","message"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;eAEe,MAAgC;AAC3C,SAAO;AACHA,IAAAA,IAAI,EAAE,aADH;AAEHC,IAAAA,GAAG,EAAE,cAFF;AAGHC,IAAAA,OAAO,EAAE,QAHN;AAIHC,IAAAA,KAAK,EAAE,MAAMC,OAAN,IAAiB;AACpB;AACZ;AACA;AACY,UAAI;AACA,cAAM,iCAAkBA,OAAlB,CAAN;AACH,OAFD,CAEE,OAAOC,EAAP,EAAW;AACTC,QAAAA,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;AACH;AACD;AACZ;AACA;;;AACY,UAAI;AACA,cAAM,wBAAaJ,OAAb,CAAN;AACH,OAFD,CAEE,OAAOC,EAAP,EAAW;AACTC,QAAAA,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;AACH;AACD;AACZ;AACA;;;AACY,UAAI;AACA,cAAM,sCAAoBJ,OAApB,CAAN;AACH,OAFD,CAEE,OAAOC,EAAP,EAAW;AACTC,QAAAA,OAAO,CAACC,GAAR,CAAYF,EAAE,CAACG,OAAf;AACH;AACJ;AA7BE,GAAP;AA+BH,C","sourcesContent":["import { UpgradePlugin } from \"@webiny/api-upgrade/types\";\nimport { PbContext } from \"@webiny/api-page-builder/graphql/types\";\nimport { upgradeCategories } from \"~/upgrades/v5.15.0/category\";\nimport { upgradeMenus } from \"~/upgrades/v5.15.0/menu\";\nimport { upgradePageElements } from \"~/upgrades/v5.15.0/pageElement\";\n\nexport default (): UpgradePlugin<PbContext> => {\n return {\n type: \"api-upgrade\",\n app: \"page-builder\",\n version: \"5.15.0\",\n apply: async context => {\n /**\n * Upgrade categories.\n */\n try {\n await upgradeCategories(context);\n } catch (ex) {\n console.log(ex.message);\n }\n /**\n * Upgrade menus.\n */\n try {\n await upgradeMenus(context);\n } catch (ex) {\n console.log(ex.message);\n }\n /**\n * Upgrade page elements.\n */\n try {\n await upgradePageElements(context);\n } catch (ex) {\n console.log(ex.message);\n }\n }\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["menu.ts"],"names":["upgradeMenus","context","tenant","tenancy","getCurrentTenant","id","localeCodes","i18n","getLocales","map","locale","code","menuStorageOperations","pageBuilder","menus","storageOperations","MenuStorageOperationsDdbEs","WebinyError","records","partitionKey","createPartitionKey","result","entity","options","gt","push","item","PK","SK","createSortKey","TYPE","createType","items","record","putBatch","table"],"mappings":";;;;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;;;;;AAQO,MAAMA,YAAY,GAAG,MAAOC,OAAP,IAA8B;AACtD,QAAMC,MAAc,GAAGD,OAAO,CAACE,OAAR,CAAgBC,gBAAhB,GAAmCC,EAA1D;AACA,QAAMC,WAAqB,GAAG,MAAML,OAAO,CAACM,IAAR,CAAaC,UAAb,GAA0BC,GAA1B,CAA8BC,MAAM,IAAIA,MAAM,CAACC,IAA/C,CAApC,CAFsD,CAGtD;;AACA,QAAMC,qBAAqB,GAAGX,OAAO,CAACY,WAAR,CAAoBC,KAApB,CACzBC,iBADL;;AAEA,MAAIH,qBAAqB,YAAYI,iDAAjC,KAAgE,KAApE,EAA2E;AACvE,UAAM,IAAIC,cAAJ,CACF,6FADE,CAAN;AAGH;AACD;AACJ;AACA;;;AACI,QAAMC,OAAyB,GAAG,EAAlC;;AACA,OAAK,MAAMR,MAAX,IAAqBJ,WAArB,EAAkC;AAC9B,UAAMa,YAAY,GAAGP,qBAAqB,CAACQ,kBAAtB,CAAyC;AAC1DlB,MAAAA,MAD0D;AAE1DQ,MAAAA;AAF0D,KAAzC,CAArB;AAIA,UAAMW,MAAM,GAAG,MAAM,qBAAe;AAChCC,MAAAA,MAAM,EAAEV,qBAAqB,CAACU,MADE;AAEhCH,MAAAA,YAFgC;AAGhCI,MAAAA,OAAO,EAAE;AACLC,QAAAA,EAAE,EAAE;AADC;AAHuB,KAAf,CAArB;AAOA;AACR;AACA;;AACQN,IAAAA,OAAO,CAACO,IAAR,CACI,GAAGJ,MAAM,CAACZ,GAAP,CAAWiB,IAAI,IAAI;AAClB,6CACOA,IADP;AAEIC,QAAAA,EAAE,EAAER,YAFR;AAGIS,QAAAA,EAAE,EAAEhB,qBAAqB,CAACiB,aAAtB,CAAoCH,IAApC,CAHR;AAIII,QAAAA,IAAI,EAAElB,qBAAqB,CAACmB,UAAtB,EAJV;AAKI7B,QAAAA,MALJ;AAMIQ,QAAAA;AANJ;AAQH,KATE,CADP;AAYH;;AACD,QAAMsB,KAAK,GAAGd,OAAO,CAACT,GAAR,CAAYwB,MAAM,IAAI;AAChC,WAAOrB,qBAAqB,CAACU,MAAtB,CAA6BY,QAA7B,CAAsCD,MAAtC,CAAP;AACH,GAFa,CAAd;AAIA,QAAM,+BAAc;AAChBE,IAAAA,KAAK,EAAEvB,qBAAqB,CAACuB,KADb;AAEhBH,IAAAA;AAFgB,GAAd,CAAN;AAIH,CAnDM","sourcesContent":["import { PbContext } from \"@webiny/api-page-builder/graphql/types\";\n// @ts-ignore\nimport { MenuStorageOperationsDdbEs } from \"~/operations/menu/MenuStorageOperations\";\nimport { Menu } from \"@webiny/api-page-builder/types\";\nimport { queryAll } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport WebinyError from \"@webiny/error\";\n\ntype DbRecord<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport const upgradeMenus = async (context: PbContext) => {\n const tenant: string = context.tenancy.getCurrentTenant().id;\n const localeCodes: string[] = await context.i18n.getLocales().map(locale => locale.code);\n // @ts-ignore\n const menuStorageOperations = context.pageBuilder.menus\n .storageOperations as MenuStorageOperationsDdbEs;\n if (menuStorageOperations instanceof MenuStorageOperationsDdbEs === false) {\n throw new WebinyError(\n \"context.pageBuilder.menus.storageOperations must be instance of MenuStorageOperationsDdbEs.\"\n );\n }\n /**\n * First we need all categories in all existing locales of the tenant.\n */\n const records: DbRecord<Menu>[] = [];\n for (const locale of localeCodes) {\n const partitionKey = menuStorageOperations.createPartitionKey({\n tenant,\n locale\n });\n const result = await queryAll<Menu>({\n entity: menuStorageOperations.entity,\n partitionKey,\n options: {\n gt: \" \"\n }\n });\n /**\n * Need to update existing menus with tenant and locale information.\n */\n records.push(\n ...result.map(item => {\n return {\n ...item,\n PK: partitionKey,\n SK: menuStorageOperations.createSortKey(item),\n TYPE: menuStorageOperations.createType(),\n tenant,\n locale\n };\n })\n );\n }\n const items = records.map(record => {\n return menuStorageOperations.entity.putBatch(record);\n });\n\n await batchWriteAll({\n table: menuStorageOperations.table,\n items\n });\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["pageElement.ts"],"names":["upgradePageElements","context","tenant","tenancy","getCurrentTenant","id","localeCodes","i18n","getLocales","map","locale","code","pageElementsStorageOperations","pageBuilder","pageElements","storageOperations","PageElementStorageOperationsDdbEs","WebinyError","records","partitionKey","createPartitionKey","result","entity","options","gt","push","item","PK","SK","createSortKey","TYPE","createType","items","record","putBatch","table"],"mappings":";;;;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;;;;;AAQO,MAAMA,mBAAmB,GAAG,MAAOC,OAAP,IAA8B;AAC7D,QAAMC,MAAc,GAAGD,OAAO,CAACE,OAAR,CAAgBC,gBAAhB,GAAmCC,EAA1D;AACA,QAAMC,WAAqB,GAAG,MAAML,OAAO,CAACM,IAAR,CAAaC,UAAb,GAA0BC,GAA1B,CAA8BC,MAAM,IAAIA,MAAM,CAACC,IAA/C,CAApC,CAF6D,CAG7D;;AACA,QAAMC,6BAA6B,GAAGX,OAAO,CAACY,WAAR,CAAoBC,YAApB,CACjCC,iBADL;;AAEA,MAAIH,6BAA6B,YAAYI,+DAAzC,KAA+E,KAAnF,EAA0F;AACtF,UAAM,IAAIC,cAAJ,CACF,2GADE,CAAN;AAGH;AACD;AACJ;AACA;;;AACI,QAAMC,OAAgC,GAAG,EAAzC;;AACA,OAAK,MAAMR,MAAX,IAAqBJ,WAArB,EAAkC;AAC9B,UAAMa,YAAY,GAAGP,6BAA6B,CAACQ,kBAA9B,CAAiD;AAClElB,MAAAA,MADkE;AAElEQ,MAAAA;AAFkE,KAAjD,CAArB;AAIA,UAAMW,MAAM,GAAG,MAAM,qBAAsB;AACvCC,MAAAA,MAAM,EAAEV,6BAA6B,CAACU,MADC;AAEvCH,MAAAA,YAFuC;AAGvCI,MAAAA,OAAO,EAAE;AACLC,QAAAA,EAAE,EAAE;AADC;AAH8B,KAAtB,CAArB;AAOA;AACR;AACA;;AACQN,IAAAA,OAAO,CAACO,IAAR,CACI,GAAGJ,MAAM,CAACZ,GAAP,CAAWiB,IAAI,IAAI;AAClB,6CACOA,IADP;AAEIC,QAAAA,EAAE,EAAER,YAFR;AAGIS,QAAAA,EAAE,EAAEhB,6BAA6B,CAACiB,aAA9B,CAA4CH,IAA5C,CAHR;AAIII,QAAAA,IAAI,EAAElB,6BAA6B,CAACmB,UAA9B,EAJV;AAKI7B,QAAAA,MALJ;AAMIQ,QAAAA;AANJ;AAQH,KATE,CADP;AAYH;;AACD,QAAMsB,KAAK,GAAGd,OAAO,CAACT,GAAR,CAAYwB,MAAM,IAAI;AAChC,WAAOrB,6BAA6B,CAACU,MAA9B,CAAqCY,QAArC,CAA8CD,MAA9C,CAAP;AACH,GAFa,CAAd;AAIA,QAAM,+BAAc;AAChBE,IAAAA,KAAK,EAAEvB,6BAA6B,CAACuB,KADrB;AAEhBH,IAAAA;AAFgB,GAAd,CAAN;AAIH,CAnDM","sourcesContent":["import { PbContext } from \"@webiny/api-page-builder/graphql/types\";\n// @ts-ignore\nimport { PageElementStorageOperationsDdbEs } from \"~/operations/pageElement/PageElementStorageOperations\";\nimport { PageElement } from \"@webiny/api-page-builder/types\";\nimport { queryAll } from \"@webiny/db-dynamodb/utils/query\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport WebinyError from \"@webiny/error\";\n\ntype DbRecord<T> = T & {\n PK: string;\n SK: string;\n TYPE: string;\n};\n\nexport const upgradePageElements = async (context: PbContext) => {\n const tenant: string = context.tenancy.getCurrentTenant().id;\n const localeCodes: string[] = await context.i18n.getLocales().map(locale => locale.code);\n // @ts-ignore\n const pageElementsStorageOperations = context.pageBuilder.pageElements\n .storageOperations as PageElementStorageOperationsDdbEs;\n if (pageElementsStorageOperations instanceof PageElementStorageOperationsDdbEs === false) {\n throw new WebinyError(\n \"context.pageBuilder.pageElements.storageOperations must be instance of PageElementStorageOperationsDdbEs.\"\n );\n }\n /**\n * First we need all categories in all existing locales of the tenant.\n */\n const records: DbRecord<PageElement>[] = [];\n for (const locale of localeCodes) {\n const partitionKey = pageElementsStorageOperations.createPartitionKey({\n tenant,\n locale\n });\n const result = await queryAll<PageElement>({\n entity: pageElementsStorageOperations.entity,\n partitionKey,\n options: {\n gt: \" \"\n }\n });\n /**\n * Need to update existing menus with tenant and locale information.\n */\n records.push(\n ...result.map(item => {\n return {\n ...item,\n PK: partitionKey,\n SK: pageElementsStorageOperations.createSortKey(item),\n TYPE: pageElementsStorageOperations.createType(),\n tenant,\n locale\n };\n })\n );\n }\n const items = records.map(record => {\n return pageElementsStorageOperations.entity.putBatch(record);\n });\n\n await batchWriteAll({\n table: pageElementsStorageOperations.table,\n items\n });\n};\n"]}
|