@webiny/api-page-builder-so-ddb-es 6.0.0-alpha.0 → 6.0.0-alpha.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/configurations.d.ts +2 -2
- package/configurations.js.map +1 -1
- package/definitions/blockCategoryEntity.d.ts +3 -2
- package/definitions/blockCategoryEntity.js.map +1 -1
- package/definitions/categoryEntity.d.ts +3 -2
- package/definitions/categoryEntity.js.map +1 -1
- package/definitions/menuEntity.d.ts +3 -2
- package/definitions/menuEntity.js.map +1 -1
- package/definitions/pageBlockEntity.d.ts +3 -2
- package/definitions/pageBlockEntity.js.map +1 -1
- package/definitions/pageElasticsearchEntity.d.ts +3 -2
- package/definitions/pageElasticsearchEntity.js.map +1 -1
- package/definitions/pageElementEntity.d.ts +3 -2
- package/definitions/pageElementEntity.js.map +1 -1
- package/definitions/pageEntity.d.ts +3 -2
- package/definitions/pageEntity.js.map +1 -1
- package/definitions/pageTemplateEntity.d.ts +3 -2
- package/definitions/pageTemplateEntity.js.map +1 -1
- package/definitions/settingsEntity.d.ts +2 -1
- package/definitions/settingsEntity.js.map +1 -1
- package/definitions/systemEntity.d.ts +3 -2
- package/definitions/systemEntity.js.map +1 -1
- package/definitions/table.d.ts +2 -2
- package/definitions/table.js.map +1 -1
- package/definitions/tableElasticsearch.d.ts +2 -2
- package/definitions/tableElasticsearch.js.map +1 -1
- package/elasticsearch/createElasticsearchIndex.d.ts +2 -2
- package/elasticsearch/createElasticsearchIndex.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js.map +1 -1
- package/operations/blockCategory/dataLoader.d.ts +3 -3
- package/operations/blockCategory/dataLoader.js.map +1 -1
- package/operations/blockCategory/index.d.ts +3 -3
- package/operations/blockCategory/index.js.map +1 -1
- package/operations/category/dataLoader.d.ts +3 -3
- package/operations/category/dataLoader.js.map +1 -1
- package/operations/category/index.d.ts +3 -3
- package/operations/category/index.js.map +1 -1
- package/operations/menu/index.d.ts +3 -3
- package/operations/menu/index.js.map +1 -1
- package/operations/pageBlock/compression.d.ts +1 -1
- package/operations/pageBlock/compression.js.map +1 -1
- package/operations/pageBlock/dataLoader.d.ts +3 -3
- package/operations/pageBlock/dataLoader.js.map +1 -1
- package/operations/pageBlock/index.d.ts +3 -3
- package/operations/pageBlock/index.js.map +1 -1
- package/operations/pageElement/index.d.ts +3 -3
- package/operations/pageElement/index.js.map +1 -1
- package/operations/pageTemplate/dataLoader.d.ts +3 -3
- package/operations/pageTemplate/dataLoader.js.map +1 -1
- package/operations/pageTemplate/index.d.ts +3 -3
- package/operations/pageTemplate/index.js.map +1 -1
- package/operations/pageTemplate/keys.d.ts +1 -1
- package/operations/pageTemplate/keys.js.map +1 -1
- package/operations/pages/elasticsearchQueryBody.d.ts +3 -3
- package/operations/pages/elasticsearchQueryBody.js.map +1 -1
- package/operations/pages/helpers.d.ts +2 -2
- package/operations/pages/helpers.js.map +1 -1
- package/operations/pages/index.js.map +1 -1
- package/operations/pages/logIgnoredEsResponseError.d.ts +1 -1
- package/operations/pages/logIgnoredEsResponseError.js.map +1 -1
- package/operations/pages/shouldIgnoreEsResponseError.d.ts +1 -1
- package/operations/pages/shouldIgnoreEsResponseError.js.map +1 -1
- package/operations/settings/index.d.ts +2 -2
- package/operations/settings/index.js.map +1 -1
- package/operations/system/index.d.ts +2 -2
- package/operations/system/index.js.map +1 -1
- package/package.json +29 -29
- package/plugins/definitions/IndexPageDataPlugin.d.ts +3 -2
- package/plugins/definitions/IndexPageDataPlugin.js.map +1 -1
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.d.ts +2 -1
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js.map +1 -1
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.d.ts +3 -2
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js.map +1 -1
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.d.ts +2 -1
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.js.map +1 -1
- package/plugins/definitions/SearchPagesPlugin.d.ts +3 -2
- package/plugins/definitions/SearchPagesPlugin.js.map +1 -1
- package/tasks/createIndexTaskPlugin.d.ts +1 -1
- package/tasks/createIndexTaskPlugin.js.map +1 -1
- package/types.d.ts +5 -5
- package/types.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PageTemplate } from "@webiny/api-page-builder/types";
|
|
1
|
+
import type { PageTemplate } from "@webiny/api-page-builder/types";
|
|
2
2
|
export type PrimaryPKParams = Pick<PageTemplate, "id" | "tenant" | "locale">;
|
|
3
3
|
export type GSI1Params = Pick<PageTemplate, "tenant" | "locale">;
|
|
4
4
|
export declare const createPrimaryPK: ({ id, tenant, locale }: PrimaryPKParams) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createPrimaryPK","id","tenant","locale","exports","createGSI1PK"],"sources":["keys.ts"],"sourcesContent":["import { PageTemplate } from \"@webiny/api-page-builder/types\";\n\nexport type PrimaryPKParams = Pick<PageTemplate, \"id\" | \"tenant\" | \"locale\">;\nexport type GSI1Params = Pick<PageTemplate, \"tenant\" | \"locale\">;\n\nexport const createPrimaryPK = ({ id, tenant, locale }: PrimaryPKParams): string => {\n return `T#${tenant}#L#${locale}#PB#TEMPLATE#${id}`;\n};\n\nexport const createGSI1PK = ({ tenant, locale }: GSI1Params): string => {\n return `T#${tenant}#L#${locale}#PB#TEMPLATES`;\n};\n"],"mappings":";;;;;;AAKO,MAAMA,eAAe,GAAGA,CAAC;EAAEC,EAAE;EAAEC,MAAM;EAAEC;AAAwB,CAAC,KAAa;EAChF,OAAO,KAAKD,MAAM,MAAMC,MAAM,gBAAgBF,EAAE,EAAE;AACtD,CAAC;AAACG,OAAA,CAAAJ,eAAA,GAAAA,eAAA;AAEK,MAAMK,YAAY,GAAGA,CAAC;EAAEH,MAAM;EAAEC;AAAmB,CAAC,KAAa;EACpE,OAAO,KAAKD,MAAM,MAAMC,MAAM,eAAe;AACjD,CAAC;AAACC,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["createPrimaryPK","id","tenant","locale","exports","createGSI1PK"],"sources":["keys.ts"],"sourcesContent":["import type { PageTemplate } from \"@webiny/api-page-builder/types\";\n\nexport type PrimaryPKParams = Pick<PageTemplate, \"id\" | \"tenant\" | \"locale\">;\nexport type GSI1Params = Pick<PageTemplate, \"tenant\" | \"locale\">;\n\nexport const createPrimaryPK = ({ id, tenant, locale }: PrimaryPKParams): string => {\n return `T#${tenant}#L#${locale}#PB#TEMPLATE#${id}`;\n};\n\nexport const createGSI1PK = ({ tenant, locale }: GSI1Params): string => {\n return `T#${tenant}#L#${locale}#PB#TEMPLATES`;\n};\n"],"mappings":";;;;;;AAKO,MAAMA,eAAe,GAAGA,CAAC;EAAEC,EAAE;EAAEC,MAAM;EAAEC;AAAwB,CAAC,KAAa;EAChF,OAAO,KAAKD,MAAM,MAAMC,MAAM,gBAAgBF,EAAE,EAAE;AACtD,CAAC;AAACG,OAAA,CAAAJ,eAAA,GAAAA,eAAA;AAEK,MAAMK,YAAY,GAAGA,CAAC;EAAEH,MAAM;EAAEC;AAAmB,CAAC,KAAa;EACpE,OAAO,KAAKD,MAAM,MAAMC,MAAM,eAAe;AACjD,CAAC;AAACC,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { SearchBody as esSearchBody } from "elastic-ts";
|
|
2
|
-
import { PageStorageOperationsListWhere } from "@webiny/api-page-builder/types";
|
|
1
|
+
import type { SearchBody as esSearchBody } from "elastic-ts";
|
|
2
|
+
import type { PageStorageOperationsListWhere } from "@webiny/api-page-builder/types";
|
|
3
3
|
import { PageElasticsearchFieldPlugin } from "../../plugins/definitions/PageElasticsearchFieldPlugin";
|
|
4
|
-
import { PluginsContainer } from "@webiny/plugins";
|
|
4
|
+
import type { PluginsContainer } from "@webiny/plugins";
|
|
5
5
|
interface CreateElasticsearchBodyParams {
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
where: PageStorageOperationsListWhere;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_apiElasticsearch","_PageElasticsearchFieldPlugin","_PageElasticsearchSortModifierPlugin","_PageElasticsearchQueryModifierPlugin","_PageElasticsearchBodyModifierPlugin","createInitialQueryValue","args","where","query","must","must_not","should","filter","published","push","term","latest","WebinyError","createElasticsearchQuery","params","plugins","initialWhere","fieldPlugins","operatorPlugins","getElasticsearchOperatorPluginsByLocale","locale","tags_in","tags","tags_rule","tagsRule","Array","isArray","length","terms","bool","map","tag","search","query_string","allow_leading_wildcard","fields","sharedIndex","isSharedElasticsearchIndex","tenant","applyWhere","operators","createElasticsearchQueryBody","limit","initialLimit","sort","initialSort","after","byType","PageElasticsearchFieldPlugin","type","reduce","acc","plugin","field","createLimit","createSort","queryModifiers","PageElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","PageElasticsearchSortModifierPlugin","modifySort","body","constant_score","size","search_after","decodeCursor","bodyModifiers","PageElasticsearchBodyModifierPlugin","modifyBody","exports"],"sources":["elasticsearchQueryBody.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { SearchBody as esSearchBody } from \"elastic-ts\";\nimport {\n applyWhere,\n createLimit,\n createSort,\n decodeCursor,\n getElasticsearchOperatorPluginsByLocale,\n isSharedElasticsearchIndex\n} from \"@webiny/api-elasticsearch\";\nimport { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport { PageStorageOperationsListWhere } from \"@webiny/api-page-builder/types\";\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 { 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 fieldPlugins: Record<string, PageElasticsearchFieldPlugin>;\n}\n\nconst createElasticsearchQuery = (params: CreateElasticsearchBodyParams) => {\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 = getElasticsearchOperatorPluginsByLocale(plugins, initialWhere.locale);\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 = isSharedElasticsearchIndex();\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: Omit<CreateElasticsearchBodyParams, \"fieldPlugins\">\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 sort,\n limit\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 where\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 search_after: decodeCursor(after),\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 where\n });\n }\n\n return body;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_apiElasticsearch","_PageElasticsearchFieldPlugin","_PageElasticsearchSortModifierPlugin","_PageElasticsearchQueryModifierPlugin","_PageElasticsearchBodyModifierPlugin","createInitialQueryValue","args","where","query","must","must_not","should","filter","published","push","term","latest","WebinyError","createElasticsearchQuery","params","plugins","initialWhere","fieldPlugins","operatorPlugins","getElasticsearchOperatorPluginsByLocale","locale","tags_in","tags","tags_rule","tagsRule","Array","isArray","length","terms","bool","map","tag","search","query_string","allow_leading_wildcard","fields","sharedIndex","isSharedElasticsearchIndex","tenant","applyWhere","operators","createElasticsearchQueryBody","limit","initialLimit","sort","initialSort","after","byType","PageElasticsearchFieldPlugin","type","reduce","acc","plugin","field","createLimit","createSort","queryModifiers","PageElasticsearchQueryModifierPlugin","modifyQuery","sortModifiers","PageElasticsearchSortModifierPlugin","modifySort","body","constant_score","size","search_after","decodeCursor","bodyModifiers","PageElasticsearchBodyModifierPlugin","modifyBody","exports"],"sources":["elasticsearchQueryBody.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { SearchBody as esSearchBody } from \"elastic-ts\";\nimport {\n applyWhere,\n createLimit,\n createSort,\n decodeCursor,\n getElasticsearchOperatorPluginsByLocale,\n isSharedElasticsearchIndex\n} from \"@webiny/api-elasticsearch\";\nimport type { ElasticsearchBoolQueryConfig } from \"@webiny/api-elasticsearch/types\";\nimport type { PageStorageOperationsListWhere } from \"@webiny/api-page-builder/types\";\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 type { 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 fieldPlugins: Record<string, PageElasticsearchFieldPlugin>;\n}\n\nconst createElasticsearchQuery = (params: CreateElasticsearchBodyParams) => {\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 = getElasticsearchOperatorPluginsByLocale(plugins, initialWhere.locale);\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 = isSharedElasticsearchIndex();\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: Omit<CreateElasticsearchBodyParams, \"fieldPlugins\">\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 sort,\n limit\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 where\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 search_after: decodeCursor(after),\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 where\n });\n }\n\n return body;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Page } from "@webiny/api-page-builder/types";
|
|
2
|
-
import { PluginsContainer } from "@webiny/plugins";
|
|
1
|
+
import type { Page } from "@webiny/api-page-builder/types";
|
|
2
|
+
import type { PluginsContainer } from "@webiny/plugins";
|
|
3
3
|
/**
|
|
4
4
|
* Map our system fields to the Elasticsearch data.
|
|
5
5
|
* We need to add new fields if we add them into our system.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_get","_interopRequireDefault","require","_IndexPageDataPlugin","getESPageData","page","__type","tenant","webinyVersion","id","pid","editor","locale","createdOn","savedOn","createdBy","ownedBy","category","version","title","titleLC","toLowerCase","path","status","locked","publishedOn","tags","lodashGet","snippet","images","general","exports","getESLatestPageData","plugins","input","data","latest","modifyData","getESPublishedPageData","published","params","pagePlugins","byType","IndexPageDataPlugin","type","plugin","apply"],"sources":["helpers.ts"],"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 = (\n plugins: PluginsContainer,\n page: Page,\n input: Record<string, any> = {}\n) => {\n const data = { ...getESPageData(page), latest: true };\n return modifyData({ data, page, plugins, input });\n};\n\nexport const getESPublishedPageData = (\n plugins: PluginsContainer,\n page: Page,\n input: Record<string, any> = {}\n) => {\n const data = { ...getESPageData(page), published: true };\n return modifyData({ data, page, plugins, input });\n};\n\ninterface ModifyDataParams {\n input: Record<string, any>;\n data: Record<string, any>;\n page: Page;\n plugins: PluginsContainer;\n}\n\nconst modifyData = (params: ModifyDataParams) => {\n const { data, page, plugins, input } = params;\n const pagePlugins = plugins.byType<IndexPageDataPlugin>(IndexPageDataPlugin.type);\n\n for (const plugin of pagePlugins) {\n plugin.apply({ page, data, plugins, input });\n }\n\n return data;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAIA;AACA;AACA;AACA;AACO,MAAME,aAAa,GAAIC,IAAU,IAAK;EACzC,OAAO;IACHC,MAAM,EAAE,MAAM;IACdC,MAAM,EAAEF,IAAI,CAACE,MAAM;IACnBC,aAAa,EAAEH,IAAI,CAACG,aAAa;IACjCC,EAAE,EAAEJ,IAAI,CAACI,EAAE;IACXC,GAAG,EAAEL,IAAI,CAACK,GAAG;IACbC,MAAM,EAAEN,IAAI,CAACM,MAAM;IACnBC,MAAM,EAAEP,IAAI,CAACO,MAAM;IACnBC,SAAS,EAAER,IAAI,CAACQ,SAAS;IACzBC,OAAO,EAAET,IAAI,CAACS,OAAO;IACrBC,SAAS,EAAEV,IAAI,CAACU,SAAS;IACzBC,OAAO,EAAEX,IAAI,CAACW,OAAO;IACrBC,QAAQ,EAAEZ,IAAI,CAACY,QAAQ;IACvBC,OAAO,EAAEb,IAAI,CAACa,OAAO;IACrBC,KAAK,EAAEd,IAAI,CAACc,KAAK;IACjBC,OAAO,EAAEf,IAAI,CAACc,KAAK,CAACE,WAAW,CAAC,CAAC;IACjCC,IAAI,EAAEjB,IAAI,CAACiB,IAAI;IACfC,MAAM,EAAElB,IAAI,CAACkB,MAAM;IACnBC,MAAM,EAAEnB,IAAI,CAACmB,MAAM;IACnBC,WAAW,EAAEpB,IAAI,CAACoB,WAAW;IAE7B;IACAC,IAAI,EAAE,IAAAC,YAAS,EAACtB,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE;IACpDuB,OAAO,EAAE,IAAAD,YAAS,EAACtB,IAAI,EAAE,0BAA0B,CAAC,IAAI,IAAI;IAE5D;IACAwB,MAAM,EAAE;MACJC,OAAO,EAAE,IAAAH,YAAS,EAACtB,IAAI,EAAE,wBAAwB;IACrD;EACJ,CAAC;AACL,CAAC;AAAC0B,OAAA,CAAA3B,aAAA,GAAAA,aAAA;AAEK,MAAM4B,mBAAmB,GAAGA,CAC/BC,OAAyB,EACzB5B,IAAU,EACV6B,KAA0B,GAAG,CAAC,CAAC,KAC9B;EACD,MAAMC,IAAI,GAAG;IAAE,GAAG/B,aAAa,CAACC,IAAI,CAAC;IAAE+B,MAAM,EAAE;EAAK,CAAC;EACrD,OAAOC,UAAU,CAAC;IAAEF,IAAI;IAAE9B,IAAI;IAAE4B,OAAO;IAAEC;EAAM,CAAC,CAAC;AACrD,CAAC;AAACH,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAEK,MAAMM,sBAAsB,GAAGA,CAClCL,OAAyB,EACzB5B,IAAU,EACV6B,KAA0B,GAAG,CAAC,CAAC,KAC9B;EACD,MAAMC,IAAI,GAAG;IAAE,GAAG/B,aAAa,CAACC,IAAI,CAAC;IAAEkC,SAAS,EAAE;EAAK,CAAC;EACxD,OAAOF,UAAU,CAAC;IAAEF,IAAI;IAAE9B,IAAI;IAAE4B,OAAO;IAAEC;EAAM,CAAC,CAAC;AACrD,CAAC;AAACH,OAAA,CAAAO,sBAAA,GAAAA,sBAAA;AASF,MAAMD,UAAU,GAAIG,MAAwB,IAAK;EAC7C,MAAM;IAAEL,IAAI;IAAE9B,IAAI;IAAE4B,OAAO;IAAEC;EAAM,CAAC,GAAGM,MAAM;EAC7C,MAAMC,WAAW,GAAGR,OAAO,CAACS,MAAM,CAAsBC,wCAAmB,CAACC,IAAI,CAAC;EAEjF,KAAK,MAAMC,MAAM,IAAIJ,WAAW,EAAE;IAC9BI,MAAM,CAACC,KAAK,CAAC;MAAEzC,IAAI;MAAE8B,IAAI;MAAEF,OAAO;MAAEC;IAAM,CAAC,CAAC;EAChD;EAEA,OAAOC,IAAI;AACf,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_get","_interopRequireDefault","require","_IndexPageDataPlugin","getESPageData","page","__type","tenant","webinyVersion","id","pid","editor","locale","createdOn","savedOn","createdBy","ownedBy","category","version","title","titleLC","toLowerCase","path","status","locked","publishedOn","tags","lodashGet","snippet","images","general","exports","getESLatestPageData","plugins","input","data","latest","modifyData","getESPublishedPageData","published","params","pagePlugins","byType","IndexPageDataPlugin","type","plugin","apply"],"sources":["helpers.ts"],"sourcesContent":["import lodashGet from \"lodash/get\";\nimport { IndexPageDataPlugin } from \"~/plugins/definitions/IndexPageDataPlugin\";\nimport type { Page } from \"@webiny/api-page-builder/types\";\nimport type { 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 = (\n plugins: PluginsContainer,\n page: Page,\n input: Record<string, any> = {}\n) => {\n const data = { ...getESPageData(page), latest: true };\n return modifyData({ data, page, plugins, input });\n};\n\nexport const getESPublishedPageData = (\n plugins: PluginsContainer,\n page: Page,\n input: Record<string, any> = {}\n) => {\n const data = { ...getESPageData(page), published: true };\n return modifyData({ data, page, plugins, input });\n};\n\ninterface ModifyDataParams {\n input: Record<string, any>;\n data: Record<string, any>;\n page: Page;\n plugins: PluginsContainer;\n}\n\nconst modifyData = (params: ModifyDataParams) => {\n const { data, page, plugins, input } = params;\n const pagePlugins = plugins.byType<IndexPageDataPlugin>(IndexPageDataPlugin.type);\n\n for (const plugin of pagePlugins) {\n plugin.apply({ page, data, plugins, input });\n }\n\n return data;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AAIA;AACA;AACA;AACA;AACO,MAAME,aAAa,GAAIC,IAAU,IAAK;EACzC,OAAO;IACHC,MAAM,EAAE,MAAM;IACdC,MAAM,EAAEF,IAAI,CAACE,MAAM;IACnBC,aAAa,EAAEH,IAAI,CAACG,aAAa;IACjCC,EAAE,EAAEJ,IAAI,CAACI,EAAE;IACXC,GAAG,EAAEL,IAAI,CAACK,GAAG;IACbC,MAAM,EAAEN,IAAI,CAACM,MAAM;IACnBC,MAAM,EAAEP,IAAI,CAACO,MAAM;IACnBC,SAAS,EAAER,IAAI,CAACQ,SAAS;IACzBC,OAAO,EAAET,IAAI,CAACS,OAAO;IACrBC,SAAS,EAAEV,IAAI,CAACU,SAAS;IACzBC,OAAO,EAAEX,IAAI,CAACW,OAAO;IACrBC,QAAQ,EAAEZ,IAAI,CAACY,QAAQ;IACvBC,OAAO,EAAEb,IAAI,CAACa,OAAO;IACrBC,KAAK,EAAEd,IAAI,CAACc,KAAK;IACjBC,OAAO,EAAEf,IAAI,CAACc,KAAK,CAACE,WAAW,CAAC,CAAC;IACjCC,IAAI,EAAEjB,IAAI,CAACiB,IAAI;IACfC,MAAM,EAAElB,IAAI,CAACkB,MAAM;IACnBC,MAAM,EAAEnB,IAAI,CAACmB,MAAM;IACnBC,WAAW,EAAEpB,IAAI,CAACoB,WAAW;IAE7B;IACAC,IAAI,EAAE,IAAAC,YAAS,EAACtB,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE;IACpDuB,OAAO,EAAE,IAAAD,YAAS,EAACtB,IAAI,EAAE,0BAA0B,CAAC,IAAI,IAAI;IAE5D;IACAwB,MAAM,EAAE;MACJC,OAAO,EAAE,IAAAH,YAAS,EAACtB,IAAI,EAAE,wBAAwB;IACrD;EACJ,CAAC;AACL,CAAC;AAAC0B,OAAA,CAAA3B,aAAA,GAAAA,aAAA;AAEK,MAAM4B,mBAAmB,GAAGA,CAC/BC,OAAyB,EACzB5B,IAAU,EACV6B,KAA0B,GAAG,CAAC,CAAC,KAC9B;EACD,MAAMC,IAAI,GAAG;IAAE,GAAG/B,aAAa,CAACC,IAAI,CAAC;IAAE+B,MAAM,EAAE;EAAK,CAAC;EACrD,OAAOC,UAAU,CAAC;IAAEF,IAAI;IAAE9B,IAAI;IAAE4B,OAAO;IAAEC;EAAM,CAAC,CAAC;AACrD,CAAC;AAACH,OAAA,CAAAC,mBAAA,GAAAA,mBAAA;AAEK,MAAMM,sBAAsB,GAAGA,CAClCL,OAAyB,EACzB5B,IAAU,EACV6B,KAA0B,GAAG,CAAC,CAAC,KAC9B;EACD,MAAMC,IAAI,GAAG;IAAE,GAAG/B,aAAa,CAACC,IAAI,CAAC;IAAEkC,SAAS,EAAE;EAAK,CAAC;EACxD,OAAOF,UAAU,CAAC;IAAEF,IAAI;IAAE9B,IAAI;IAAE4B,OAAO;IAAEC;EAAM,CAAC,CAAC;AACrD,CAAC;AAACH,OAAA,CAAAO,sBAAA,GAAAA,sBAAA;AASF,MAAMD,UAAU,GAAIG,MAAwB,IAAK;EAC7C,MAAM;IAAEL,IAAI;IAAE9B,IAAI;IAAE4B,OAAO;IAAEC;EAAM,CAAC,GAAGM,MAAM;EAC7C,MAAMC,WAAW,GAAGR,OAAO,CAACS,MAAM,CAAsBC,wCAAmB,CAACC,IAAI,CAAC;EAEjF,KAAK,MAAMC,MAAM,IAAIJ,WAAW,EAAE;IAC9BI,MAAM,CAACC,KAAK,CAAC;MAAEzC,IAAI;MAAE8B,IAAI;MAAEF,OAAO;MAAEC;IAAM,CAAC,CAAC;EAChD;EAEA,OAAOC,IAAI;AACf,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_omit","_interopRequireDefault","require","_error","_cleanup","_configurations","_apiElasticsearch","_elasticsearchQueryBody","_SearchLatestPagesPlugin","_SearchPublishedPagesPlugin","_dbDynamodb","_helpers","_keys","_PageDynamoDbElasticsearchFieldPlugin","_shouldIgnoreEsResponseError","_logIgnoredEsResponseError","removePageAttributes","item","omit","createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","input","versionKeys","PK","createPartitionKey","SK","createSortKey","latestKeys","createLatestSortKey","publishedKeys","createPublishedSortKey","entityBatch","createEntityWriteBatch","put","TYPE","createBasicType","createLatestType","esData","getESLatestPageData","elasticsearchEntityBatch","index","configurations","es","data","status","createPublishedType","createPublishedPathType","createPathPartitionKey","createPathSortKey","getESPublishedPageData","execute","ex","WebinyError","message","code","createFrom","latestPage","original","update","keys","getClean","id","deleteOne","publishedPage","partitionKey","delete","previousLatestPage","previousLatestRecord","queryOne","options","lt","reverse","cleanupItem","deleteAll","queryAllParams","gte","revisions","queryAll","publishedPathEntryDeleted","revision","path","publish","unpublish","get","where","pid","published","version","includes","Number","split","pop","sortKey","list","latest","after","previousCursor","limit","initialLimit","createLimit","body","createElasticsearchQueryBody","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","shouldIgnoreEsResponseError","logIgnoredEsResponseError","error","indexName","items","meta","hasMoreItems","totalCount","cursor","hits","total","map","_source","length","encodeCursor","value","listTags","tenant","locale","undefined","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith","fields","PageDynamoDbElasticsearchFieldPlugin","sortItems","exports"],"sources":["index.ts"],"sourcesContent":["import type {\n Page,\n PageStorageOperations,\n PageStorageOperationsCreateFromParams,\n PageStorageOperationsCreateParams,\n PageStorageOperationsDeleteAllParams,\n PageStorageOperationsDeleteParams,\n PageStorageOperationsGetParams,\n PageStorageOperationsListParams,\n PageStorageOperationsListResponse,\n PageStorageOperationsListRevisionsParams,\n PageStorageOperationsListTagsParams,\n PageStorageOperationsPublishParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport type { Client } from \"@elastic/elasticsearch\";\nimport type {\n ElasticsearchBoolQueryConfig,\n ElasticsearchSearchResponse\n} from \"@webiny/api-elasticsearch/types\";\nimport { configurations } from \"~/configurations\";\nimport { createLimit, encodeCursor } from \"@webiny/api-elasticsearch\";\nimport { createElasticsearchQueryBody } from \"./elasticsearchQueryBody\";\nimport { SearchLatestPagesPlugin } from \"~/plugins/definitions/SearchLatestPagesPlugin\";\nimport { SearchPublishedPagesPlugin } from \"~/plugins/definitions/SearchPublishedPagesPlugin\";\nimport {\n createEntityWriteBatch,\n getClean,\n put,\n queryAll,\n QueryAllParams,\n queryOne,\n sortItems\n} from \"@webiny/db-dynamodb\";\nimport { SearchPagesPlugin } from \"~/plugins/definitions/SearchPagesPlugin\";\nimport { getESLatestPageData, getESPublishedPageData } from \"./helpers\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport {\n createBasicType,\n createLatestSortKey,\n createLatestType,\n createPartitionKey,\n createPathPartitionKey,\n createPathSortKey,\n createPublishedPathType,\n createPublishedSortKey,\n createPublishedType,\n createSortKey\n} from \"./keys\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\nimport { shouldIgnoreEsResponseError } from \"~/operations/pages/shouldIgnoreEsResponseError\";\nimport { logIgnoredEsResponseError } from \"~/operations/pages/logIgnoredEsResponseError\";\n\n/**\n * This function removes attributes that were once present in the Page record, which we no longer need.\n */\nfunction removePageAttributes(item: Page): Page {\n return omit(item, [\"home\", \"notFound\", \"visibility\"]) as Page;\n}\n\nexport interface CreatePageStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\n\nexport const createPageStorageOperations = (\n params: CreatePageStorageOperationsParams\n): PageStorageOperations => {\n const { entity, esEntity, elasticsearch, plugins } = params;\n\n const create = async (params: PageStorageOperationsCreateParams): Promise<Page> => {\n const { page, input } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const publishedKeys = {\n ...versionKeys,\n SK: createPublishedSortKey()\n };\n\n const entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n ...versionKeys,\n TYPE: createBasicType()\n },\n {\n ...page,\n ...latestKeys,\n TYPE: createLatestType()\n }\n ]\n });\n\n const esData = getESLatestPageData(plugins, page, input);\n\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity,\n put: [\n {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n ]\n });\n\n if (page.status === \"published\") {\n entityBatch.put({\n ...page,\n ...publishedKeys,\n TYPE: createPublishedType()\n });\n\n entityBatch.put({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n });\n\n elasticsearchEntityBatch.put({\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page),\n ...publishedKeys\n });\n }\n try {\n await entityBatch.execute();\n await elasticsearchEntityBatch.execute();\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 entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n ...versionKeys\n },\n {\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n }\n ]\n });\n\n const esData = getESLatestPageData(plugins, page);\n\n try {\n await entityBatch.execute();\n\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page from existing page.\",\n ex.code || \"CREATE_PAGE_FROM_ERROR\",\n {\n versionKeys,\n latestKeys,\n latestPage,\n original,\n page\n }\n );\n }\n };\n\n const update = async (params: PageStorageOperationsUpdateParams): Promise<Page> => {\n const { original, page, input } = params;\n\n const keys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n\n const latestKeys = {\n ...keys,\n SK: createLatestSortKey()\n };\n const latestPage = await getClean<Page>({\n entity,\n keys: latestKeys\n });\n\n const entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n ...keys\n }\n ]\n });\n\n const esData = getESLatestPageData(plugins, page, input);\n\n if (latestPage && latestPage?.id === page.id) {\n /**\n * We also update the regular record.\n */\n entityBatch.put({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\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 entityBatch.execute();\n\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update existing page.\",\n ex.code || \"UPDATE_PAGE_ERROR\",\n {\n original,\n page,\n latestPage,\n latestKeys,\n keys\n }\n );\n }\n };\n\n /**\n * In case of delete, we must delete records:\n * - revision\n * - path if published\n * Update:\n * - latest\n */\n const deleteOne = async (\n params: PageStorageOperationsDeleteParams\n ): Promise<[Page, Page | null]> => {\n const { page, latestPage, publishedPage } = params;\n\n const partitionKey = createPartitionKey(page);\n\n const entityBatch = createEntityWriteBatch({\n entity,\n delete: [\n {\n PK: partitionKey,\n SK: createSortKey(page)\n }\n ]\n });\n\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity\n });\n\n if (publishedPage && publishedPage.id === page.id) {\n entityBatch.delete({\n PK: partitionKey,\n SK: createPublishedSortKey()\n });\n\n entityBatch.delete({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n });\n\n elasticsearchEntityBatch.delete({\n PK: partitionKey,\n SK: createPublishedSortKey()\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 entityBatch.put({\n ...previousLatestRecord,\n TYPE: createLatestType(),\n PK: partitionKey,\n SK: createLatestSortKey()\n });\n\n elasticsearchEntityBatch.put({\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 entityBatch.execute();\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\n try {\n await elasticsearchEntityBatch.execute();\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: Awaited<ReturnType<typeof queryAll<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\n const entityBatch = createEntityWriteBatch({\n entity\n });\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity\n });\n\n let publishedPathEntryDeleted = false;\n for (const revision of revisions) {\n if (revision.status === \"published\" && !publishedPathEntryDeleted) {\n publishedPathEntryDeleted = true;\n entityBatch.delete({\n PK: createPathPartitionKey(page),\n SK: revision.path\n });\n }\n entityBatch.delete({\n PK: revision.PK,\n SK: revision.SK\n });\n }\n elasticsearchEntityBatch.delete({\n PK: partitionKey,\n SK: createLatestSortKey()\n });\n\n /**\n * Delete published record if it is published.\n */\n if (publishedPathEntryDeleted) {\n elasticsearchEntityBatch.delete({\n PK: partitionKey,\n SK: createPublishedSortKey()\n });\n }\n\n try {\n await entityBatch.execute();\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 elasticsearchEntityBatch.execute();\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page Elasticsearch records.\",\n ex.code || \"DELETE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page];\n };\n\n const publish = async (params: PageStorageOperationsPublishParams): Promise<Page> => {\n const { page, latestPage, publishedPage } = params;\n\n page.status = \"published\";\n\n /**\n * Update the given revision of the page.\n */\n const entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n }\n ]\n });\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity\n });\n /**\n * If we are publishing the latest revision, update the latest revision\n * status in ES. We also need to update the latest page revision entry in ES.\n */\n if (latestPage.id === page.id) {\n entityBatch.put({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n });\n\n elasticsearchEntityBatch.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n });\n }\n /**\n * If we already have a published revision, and it's not the revision being published:\n * - set the existing published revision to \"unpublished\"\n */\n if (publishedPage && publishedPage.id !== page.id) {\n entityBatch.put({\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 entityBatch.delete({\n PK: createPathPartitionKey(page),\n SK: publishedPage.path\n });\n }\n }\n\n elasticsearchEntityBatch.put({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey(),\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page)\n });\n\n /**\n * Update or insert published path.\n */\n entityBatch.put({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n });\n\n /**\n * Update or insert published page.\n */\n entityBatch.put({\n ...page,\n TYPE: createPublishedType(),\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n });\n\n try {\n await entityBatch.execute();\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 try {\n await elasticsearchEntityBatch.execute();\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when publishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const unpublish = async (params: PageStorageOperationsUnpublishParams): Promise<Page> => {\n const { page, latestPage } = params;\n\n page.status = \"unpublished\";\n\n const entityBatch = createEntityWriteBatch({\n entity,\n delete: [\n {\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n },\n {\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n }\n ],\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n }\n ]\n });\n\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity,\n delete: [\n {\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n }\n ]\n });\n /*\n * If we are unpublishing the latest revision, let's also update the latest revision entry's status in ES.\n */\n if (latestPage.id === page.id) {\n entityBatch.put({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n });\n\n elasticsearchEntityBatch.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n });\n }\n\n try {\n await entityBatch.execute();\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 try {\n await elasticsearchEntityBatch.execute();\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when unpublishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const get = async (params: PageStorageOperationsGetParams): Promise<Page | null> => {\n const { where } = params;\n const { pid, id, path, published } = where;\n let { version } = where;\n /**\n * In case of having full ID and not having version we can take the version from the id.\n */\n if (id && id.includes(\"#\") && !version) {\n version = Number(id.split(\"#\").pop());\n }\n let partitionKey: string | null = null;\n let sortKey: string;\n if (path) {\n partitionKey = createPathPartitionKey(where);\n sortKey = path;\n } else if (published) {\n sortKey = createPublishedSortKey();\n } else if (version) {\n sortKey = createSortKey({\n version\n });\n } else {\n sortKey = createLatestSortKey();\n }\n /**\n * If partition key is still undefined, create one with id or pid\n */\n if (!partitionKey) {\n partitionKey = createPartitionKey({\n ...where,\n id: pid || (id as string)\n });\n }\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n try {\n return await getClean({\n entity,\n keys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page by given params.\",\n ex.code || \"GET_PAGE_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n const list = async (\n params: PageStorageOperationsListParams\n ): Promise<PageStorageOperationsListResponse> => {\n /**\n * We do not allow loading both published and latest at the same time.\n * @see PageStorageOperationsListWhere\n */\n if (params.where.published && params.where.latest) {\n throw new WebinyError(\n \"Both published and latest cannot be defined at the same time.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n const { after: previousCursor = null, limit: initialLimit } = params;\n\n const limit = createLimit(initialLimit, 50);\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n ...params.where\n },\n limit,\n after: previousCursor,\n plugins\n });\n\n let searchPlugins: SearchPagesPlugin[] = [];\n if (params.where.published) {\n searchPlugins = plugins.byType<SearchPublishedPagesPlugin>(\n SearchPublishedPagesPlugin.type\n );\n } else if (params.where.latest) {\n searchPlugins = plugins.byType<SearchLatestPagesPlugin>(SearchLatestPagesPlugin.type);\n } else {\n throw new WebinyError(\n \"Only published or latest can be listed. Missing where condition.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n for (const plugin of searchPlugins) {\n /**\n * Apply query modifications\n */\n plugin.modifyQuery({\n query: body.query as unknown as ElasticsearchBoolQueryConfig,\n args: params,\n plugins\n });\n\n /**\n * Apply sort modifications\n */\n plugin.modifySort({\n sort: body.sort,\n args: params,\n plugins\n });\n }\n\n let response: ElasticsearchSearchResponse<Page>;\n const esConfig = configurations.es(params.where);\n try {\n response = await elasticsearch.search({\n ...esConfig,\n body\n });\n } catch (ex) {\n /**\n * Do not throw the error if Elasticsearch index does not exist.\n * In some CRUDs we try to get list of pages but index was not created yet.\n */\n if (shouldIgnoreEsResponseError(ex)) {\n logIgnoredEsResponseError({\n error: ex,\n indexName: esConfig.index\n });\n return {\n items: [],\n meta: {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null\n }\n };\n }\n throw new WebinyError(\n ex.message || \"Could not load pages by given Elasticsearch body.\",\n ex.code || \"LIST_PAGES_ERROR\",\n {\n body\n }\n );\n }\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source).map(item => removePageAttributes(item));\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const cursor =\n items.length > 0 && hasMoreItems\n ? encodeCursor(hits[items.length - 1].sort) || null\n : null;\n return {\n items,\n meta: {\n hasMoreItems,\n totalCount: total.value,\n cursor\n }\n };\n };\n\n const listTags = async (params: PageStorageOperationsListTagsParams): Promise<string[]> => {\n const { where } = params;\n\n const tenant: string = where.tenant;\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n locale: where.locale,\n search: undefined,\n tenant\n },\n sort: [],\n after: null,\n limit: 100000,\n plugins\n });\n\n const esConfig = configurations.es(where);\n\n try {\n const response: ElasticsearchSearchResponse<string> = await elasticsearch.search({\n ...esConfig,\n body: {\n ...body,\n sort: undefined,\n limit: undefined,\n size: 0,\n aggs: {\n tags: {\n terms: {\n field: \"tags.keyword\",\n include: `.*${where.search}.*`,\n size: 10\n }\n }\n }\n }\n });\n\n const tags = response.body.aggregations[\"tags\"];\n if (!tags || Array.isArray(tags.buckets) === false) {\n return [];\n }\n return tags.buckets.map(item => item.key);\n } catch (ex) {\n if (shouldIgnoreEsResponseError(ex)) {\n logIgnoredEsResponseError({\n error: ex,\n indexName: esConfig.index\n });\n return [];\n }\n throw new WebinyError(\n ex.message || \"Could not list tags by given parameters.\",\n ex.code || \"LIST_TAGS_ERROR\",\n {\n body,\n where\n }\n );\n }\n };\n\n const listRevisions = async (\n params: PageStorageOperationsListRevisionsParams\n ): Promise<Page[]> => {\n const { where, sort } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n ...where,\n id: where.pid\n }),\n options: {\n beginsWith: \"REV#\",\n reverse: false\n }\n };\n\n let items: Page[] = [];\n try {\n items = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all the revisions from requested page.\",\n ex.code || \"LOAD_PAGE_REVISIONS_ERROR\",\n {\n params\n }\n );\n }\n\n const fields = plugins.byType<PageDynamoDbElasticsearchFieldPlugin>(\n PageDynamoDbElasticsearchFieldPlugin.type\n );\n\n return sortItems({\n items: items.map(item => removePageAttributes(item)),\n fields,\n sort\n });\n };\n\n return {\n create,\n createFrom,\n update,\n delete: deleteOne,\n deleteAll: deleteAll,\n publish,\n unpublish,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_omit","_interopRequireDefault","require","_error","_cleanup","_configurations","_apiElasticsearch","_elasticsearchQueryBody","_SearchLatestPagesPlugin","_SearchPublishedPagesPlugin","_dbDynamodb","_helpers","_keys","_PageDynamoDbElasticsearchFieldPlugin","_shouldIgnoreEsResponseError","_logIgnoredEsResponseError","removePageAttributes","item","omit","createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","input","versionKeys","PK","createPartitionKey","SK","createSortKey","latestKeys","createLatestSortKey","publishedKeys","createPublishedSortKey","entityBatch","createEntityWriteBatch","put","TYPE","createBasicType","createLatestType","esData","getESLatestPageData","elasticsearchEntityBatch","index","configurations","es","data","status","createPublishedType","createPublishedPathType","createPathPartitionKey","createPathSortKey","getESPublishedPageData","execute","ex","WebinyError","message","code","createFrom","latestPage","original","update","keys","getClean","id","deleteOne","publishedPage","partitionKey","delete","previousLatestPage","previousLatestRecord","queryOne","options","lt","reverse","cleanupItem","deleteAll","queryAllParams","gte","revisions","queryAll","publishedPathEntryDeleted","revision","path","publish","unpublish","get","where","pid","published","version","includes","Number","split","pop","sortKey","list","latest","after","previousCursor","limit","initialLimit","createLimit","body","createElasticsearchQueryBody","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","shouldIgnoreEsResponseError","logIgnoredEsResponseError","error","indexName","items","meta","hasMoreItems","totalCount","cursor","hits","total","map","_source","length","encodeCursor","value","listTags","tenant","locale","undefined","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith","fields","PageDynamoDbElasticsearchFieldPlugin","sortItems","exports"],"sources":["index.ts"],"sourcesContent":["import type {\n Page,\n PageStorageOperations,\n PageStorageOperationsCreateFromParams,\n PageStorageOperationsCreateParams,\n PageStorageOperationsDeleteAllParams,\n PageStorageOperationsDeleteParams,\n PageStorageOperationsGetParams,\n PageStorageOperationsListParams,\n PageStorageOperationsListResponse,\n PageStorageOperationsListRevisionsParams,\n PageStorageOperationsListTagsParams,\n PageStorageOperationsPublishParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport type { Client } from \"@elastic/elasticsearch\";\nimport type {\n ElasticsearchBoolQueryConfig,\n ElasticsearchSearchResponse\n} from \"@webiny/api-elasticsearch/types\";\nimport { configurations } from \"~/configurations\";\nimport { createLimit, encodeCursor } from \"@webiny/api-elasticsearch\";\nimport { createElasticsearchQueryBody } from \"./elasticsearchQueryBody\";\nimport { SearchLatestPagesPlugin } from \"~/plugins/definitions/SearchLatestPagesPlugin\";\nimport { SearchPublishedPagesPlugin } from \"~/plugins/definitions/SearchPublishedPagesPlugin\";\nimport type { QueryAllParams } from \"@webiny/db-dynamodb\";\nimport {\n createEntityWriteBatch,\n getClean,\n put,\n queryAll,\n queryOne,\n sortItems\n} from \"@webiny/db-dynamodb\";\nimport type { SearchPagesPlugin } from \"~/plugins/definitions/SearchPagesPlugin\";\nimport { getESLatestPageData, getESPublishedPageData } from \"./helpers\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport {\n createBasicType,\n createLatestSortKey,\n createLatestType,\n createPartitionKey,\n createPathPartitionKey,\n createPathSortKey,\n createPublishedPathType,\n createPublishedSortKey,\n createPublishedType,\n createSortKey\n} from \"./keys\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\nimport { shouldIgnoreEsResponseError } from \"~/operations/pages/shouldIgnoreEsResponseError\";\nimport { logIgnoredEsResponseError } from \"~/operations/pages/logIgnoredEsResponseError\";\n\n/**\n * This function removes attributes that were once present in the Page record, which we no longer need.\n */\nfunction removePageAttributes(item: Page): Page {\n return omit(item, [\"home\", \"notFound\", \"visibility\"]) as Page;\n}\n\nexport interface CreatePageStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\n\nexport const createPageStorageOperations = (\n params: CreatePageStorageOperationsParams\n): PageStorageOperations => {\n const { entity, esEntity, elasticsearch, plugins } = params;\n\n const create = async (params: PageStorageOperationsCreateParams): Promise<Page> => {\n const { page, input } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const publishedKeys = {\n ...versionKeys,\n SK: createPublishedSortKey()\n };\n\n const entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n ...versionKeys,\n TYPE: createBasicType()\n },\n {\n ...page,\n ...latestKeys,\n TYPE: createLatestType()\n }\n ]\n });\n\n const esData = getESLatestPageData(plugins, page, input);\n\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity,\n put: [\n {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n ]\n });\n\n if (page.status === \"published\") {\n entityBatch.put({\n ...page,\n ...publishedKeys,\n TYPE: createPublishedType()\n });\n\n entityBatch.put({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n });\n\n elasticsearchEntityBatch.put({\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page),\n ...publishedKeys\n });\n }\n try {\n await entityBatch.execute();\n await elasticsearchEntityBatch.execute();\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 entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n ...versionKeys\n },\n {\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n }\n ]\n });\n\n const esData = getESLatestPageData(plugins, page);\n\n try {\n await entityBatch.execute();\n\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page from existing page.\",\n ex.code || \"CREATE_PAGE_FROM_ERROR\",\n {\n versionKeys,\n latestKeys,\n latestPage,\n original,\n page\n }\n );\n }\n };\n\n const update = async (params: PageStorageOperationsUpdateParams): Promise<Page> => {\n const { original, page, input } = params;\n\n const keys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n\n const latestKeys = {\n ...keys,\n SK: createLatestSortKey()\n };\n const latestPage = await getClean<Page>({\n entity,\n keys: latestKeys\n });\n\n const entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n ...keys\n }\n ]\n });\n\n const esData = getESLatestPageData(plugins, page, input);\n\n if (latestPage && latestPage?.id === page.id) {\n /**\n * We also update the regular record.\n */\n entityBatch.put({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\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 entityBatch.execute();\n\n await put({\n entity: esEntity,\n item: {\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n }\n });\n\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update existing page.\",\n ex.code || \"UPDATE_PAGE_ERROR\",\n {\n original,\n page,\n latestPage,\n latestKeys,\n keys\n }\n );\n }\n };\n\n /**\n * In case of delete, we must delete records:\n * - revision\n * - path if published\n * Update:\n * - latest\n */\n const deleteOne = async (\n params: PageStorageOperationsDeleteParams\n ): Promise<[Page, Page | null]> => {\n const { page, latestPage, publishedPage } = params;\n\n const partitionKey = createPartitionKey(page);\n\n const entityBatch = createEntityWriteBatch({\n entity,\n delete: [\n {\n PK: partitionKey,\n SK: createSortKey(page)\n }\n ]\n });\n\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity\n });\n\n if (publishedPage && publishedPage.id === page.id) {\n entityBatch.delete({\n PK: partitionKey,\n SK: createPublishedSortKey()\n });\n\n entityBatch.delete({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n });\n\n elasticsearchEntityBatch.delete({\n PK: partitionKey,\n SK: createPublishedSortKey()\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 entityBatch.put({\n ...previousLatestRecord,\n TYPE: createLatestType(),\n PK: partitionKey,\n SK: createLatestSortKey()\n });\n\n elasticsearchEntityBatch.put({\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 entityBatch.execute();\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\n try {\n await elasticsearchEntityBatch.execute();\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: Awaited<ReturnType<typeof queryAll<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\n const entityBatch = createEntityWriteBatch({\n entity\n });\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity\n });\n\n let publishedPathEntryDeleted = false;\n for (const revision of revisions) {\n if (revision.status === \"published\" && !publishedPathEntryDeleted) {\n publishedPathEntryDeleted = true;\n entityBatch.delete({\n PK: createPathPartitionKey(page),\n SK: revision.path\n });\n }\n entityBatch.delete({\n PK: revision.PK,\n SK: revision.SK\n });\n }\n elasticsearchEntityBatch.delete({\n PK: partitionKey,\n SK: createLatestSortKey()\n });\n\n /**\n * Delete published record if it is published.\n */\n if (publishedPathEntryDeleted) {\n elasticsearchEntityBatch.delete({\n PK: partitionKey,\n SK: createPublishedSortKey()\n });\n }\n\n try {\n await entityBatch.execute();\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 elasticsearchEntityBatch.execute();\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page Elasticsearch records.\",\n ex.code || \"DELETE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page];\n };\n\n const publish = async (params: PageStorageOperationsPublishParams): Promise<Page> => {\n const { page, latestPage, publishedPage } = params;\n\n page.status = \"published\";\n\n /**\n * Update the given revision of the page.\n */\n const entityBatch = createEntityWriteBatch({\n entity,\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n }\n ]\n });\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity\n });\n /**\n * If we are publishing the latest revision, update the latest revision\n * status in ES. We also need to update the latest page revision entry in ES.\n */\n if (latestPage.id === page.id) {\n entityBatch.put({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n });\n\n elasticsearchEntityBatch.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n });\n }\n /**\n * If we already have a published revision, and it's not the revision being published:\n * - set the existing published revision to \"unpublished\"\n */\n if (publishedPage && publishedPage.id !== page.id) {\n entityBatch.put({\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 entityBatch.delete({\n PK: createPathPartitionKey(page),\n SK: publishedPage.path\n });\n }\n }\n\n elasticsearchEntityBatch.put({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey(),\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page)\n });\n\n /**\n * Update or insert published path.\n */\n entityBatch.put({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n });\n\n /**\n * Update or insert published page.\n */\n entityBatch.put({\n ...page,\n TYPE: createPublishedType(),\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n });\n\n try {\n await entityBatch.execute();\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 try {\n await elasticsearchEntityBatch.execute();\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when publishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const unpublish = async (params: PageStorageOperationsUnpublishParams): Promise<Page> => {\n const { page, latestPage } = params;\n\n page.status = \"unpublished\";\n\n const entityBatch = createEntityWriteBatch({\n entity,\n delete: [\n {\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n },\n {\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n }\n ],\n put: [\n {\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n }\n ]\n });\n\n const elasticsearchEntityBatch = createEntityWriteBatch({\n entity: esEntity,\n delete: [\n {\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n }\n ]\n });\n /*\n * If we are unpublishing the latest revision, let's also update the latest revision entry's status in ES.\n */\n if (latestPage.id === page.id) {\n entityBatch.put({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n });\n\n elasticsearchEntityBatch.put({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n });\n }\n\n try {\n await entityBatch.execute();\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 try {\n await elasticsearchEntityBatch.execute();\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when unpublishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const get = async (params: PageStorageOperationsGetParams): Promise<Page | null> => {\n const { where } = params;\n const { pid, id, path, published } = where;\n let { version } = where;\n /**\n * In case of having full ID and not having version we can take the version from the id.\n */\n if (id && id.includes(\"#\") && !version) {\n version = Number(id.split(\"#\").pop());\n }\n let partitionKey: string | null = null;\n let sortKey: string;\n if (path) {\n partitionKey = createPathPartitionKey(where);\n sortKey = path;\n } else if (published) {\n sortKey = createPublishedSortKey();\n } else if (version) {\n sortKey = createSortKey({\n version\n });\n } else {\n sortKey = createLatestSortKey();\n }\n /**\n * If partition key is still undefined, create one with id or pid\n */\n if (!partitionKey) {\n partitionKey = createPartitionKey({\n ...where,\n id: pid || (id as string)\n });\n }\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n try {\n return await getClean({\n entity,\n keys\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page by given params.\",\n ex.code || \"GET_PAGE_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n const list = async (\n params: PageStorageOperationsListParams\n ): Promise<PageStorageOperationsListResponse> => {\n /**\n * We do not allow loading both published and latest at the same time.\n * @see PageStorageOperationsListWhere\n */\n if (params.where.published && params.where.latest) {\n throw new WebinyError(\n \"Both published and latest cannot be defined at the same time.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n const { after: previousCursor = null, limit: initialLimit } = params;\n\n const limit = createLimit(initialLimit, 50);\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n ...params.where\n },\n limit,\n after: previousCursor,\n plugins\n });\n\n let searchPlugins: SearchPagesPlugin[] = [];\n if (params.where.published) {\n searchPlugins = plugins.byType<SearchPublishedPagesPlugin>(\n SearchPublishedPagesPlugin.type\n );\n } else if (params.where.latest) {\n searchPlugins = plugins.byType<SearchLatestPagesPlugin>(SearchLatestPagesPlugin.type);\n } else {\n throw new WebinyError(\n \"Only published or latest can be listed. Missing where condition.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n for (const plugin of searchPlugins) {\n /**\n * Apply query modifications\n */\n plugin.modifyQuery({\n query: body.query as unknown as ElasticsearchBoolQueryConfig,\n args: params,\n plugins\n });\n\n /**\n * Apply sort modifications\n */\n plugin.modifySort({\n sort: body.sort,\n args: params,\n plugins\n });\n }\n\n let response: ElasticsearchSearchResponse<Page>;\n const esConfig = configurations.es(params.where);\n try {\n response = await elasticsearch.search({\n ...esConfig,\n body\n });\n } catch (ex) {\n /**\n * Do not throw the error if Elasticsearch index does not exist.\n * In some CRUDs we try to get list of pages but index was not created yet.\n */\n if (shouldIgnoreEsResponseError(ex)) {\n logIgnoredEsResponseError({\n error: ex,\n indexName: esConfig.index\n });\n return {\n items: [],\n meta: {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null\n }\n };\n }\n throw new WebinyError(\n ex.message || \"Could not load pages by given Elasticsearch body.\",\n ex.code || \"LIST_PAGES_ERROR\",\n {\n body\n }\n );\n }\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source).map(item => removePageAttributes(item));\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const cursor =\n items.length > 0 && hasMoreItems\n ? encodeCursor(hits[items.length - 1].sort) || null\n : null;\n return {\n items,\n meta: {\n hasMoreItems,\n totalCount: total.value,\n cursor\n }\n };\n };\n\n const listTags = async (params: PageStorageOperationsListTagsParams): Promise<string[]> => {\n const { where } = params;\n\n const tenant: string = where.tenant;\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n locale: where.locale,\n search: undefined,\n tenant\n },\n sort: [],\n after: null,\n limit: 100000,\n plugins\n });\n\n const esConfig = configurations.es(where);\n\n try {\n const response: ElasticsearchSearchResponse<string> = await elasticsearch.search({\n ...esConfig,\n body: {\n ...body,\n sort: undefined,\n limit: undefined,\n size: 0,\n aggs: {\n tags: {\n terms: {\n field: \"tags.keyword\",\n include: `.*${where.search}.*`,\n size: 10\n }\n }\n }\n }\n });\n\n const tags = response.body.aggregations[\"tags\"];\n if (!tags || Array.isArray(tags.buckets) === false) {\n return [];\n }\n return tags.buckets.map(item => item.key);\n } catch (ex) {\n if (shouldIgnoreEsResponseError(ex)) {\n logIgnoredEsResponseError({\n error: ex,\n indexName: esConfig.index\n });\n return [];\n }\n throw new WebinyError(\n ex.message || \"Could not list tags by given parameters.\",\n ex.code || \"LIST_TAGS_ERROR\",\n {\n body,\n where\n }\n );\n }\n };\n\n const listRevisions = async (\n params: PageStorageOperationsListRevisionsParams\n ): Promise<Page[]> => {\n const { where, sort } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n ...where,\n id: where.pid\n }),\n options: {\n beginsWith: \"REV#\",\n reverse: false\n }\n };\n\n let items: Page[] = [];\n try {\n items = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all the revisions from requested page.\",\n ex.code || \"LOAD_PAGE_REVISIONS_ERROR\",\n {\n params\n }\n );\n }\n\n const fields = plugins.byType<PageDynamoDbElasticsearchFieldPlugin>(\n PageDynamoDbElasticsearchFieldPlugin.type\n );\n\n return sortItems({\n items: items.map(item => removePageAttributes(item)),\n fields,\n sort\n });\n };\n\n return {\n create,\n createFrom,\n update,\n delete: deleteOne,\n deleteAll: deleteAll,\n publish,\n unpublish,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["logIgnoredEsResponseError","params","error","indexName","process","env","DEBUG","console","log","message","usedIndexName","code","data","stack","exports"],"sources":["logIgnoredEsResponseError.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\n\ninterface LogIgnoredElasticsearchExceptionParams {\n error: WebinyError;\n indexName: string;\n}\n\nexport const logIgnoredEsResponseError = (params: LogIgnoredElasticsearchExceptionParams) => {\n const { error, indexName } = params;\n if (process.env.DEBUG !== \"true\") {\n return;\n }\n console.log(`Ignoring Elasticsearch response error: ${error.message}`, {\n usedIndexName: indexName,\n error: {\n ...error,\n message: error.message,\n code: error.code,\n data: error.data,\n stack: error.stack\n }\n });\n};\n"],"mappings":";;;;;;AAOO,MAAMA,yBAAyB,GAAIC,MAA8C,IAAK;EACzF,MAAM;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGF,MAAM;EACnC,IAAIG,OAAO,CAACC,GAAG,CAACC,KAAK,KAAK,MAAM,EAAE;IAC9B;EACJ;EACAC,OAAO,CAACC,GAAG,CAAC,0CAA0CN,KAAK,CAACO,OAAO,EAAE,EAAE;IACnEC,aAAa,EAAEP,SAAS;IACxBD,KAAK,EAAE;MACH,GAAGA,KAAK;MACRO,OAAO,EAAEP,KAAK,CAACO,OAAO;MACtBE,IAAI,EAAET,KAAK,CAACS,IAAI;MAChBC,IAAI,EAAEV,KAAK,CAACU,IAAI;MAChBC,KAAK,EAAEX,KAAK,CAACW;IACjB;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAd,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["logIgnoredEsResponseError","params","error","indexName","process","env","DEBUG","console","log","message","usedIndexName","code","data","stack","exports"],"sources":["logIgnoredEsResponseError.ts"],"sourcesContent":["import type WebinyError from \"@webiny/error\";\n\ninterface LogIgnoredElasticsearchExceptionParams {\n error: WebinyError;\n indexName: string;\n}\n\nexport const logIgnoredEsResponseError = (params: LogIgnoredElasticsearchExceptionParams) => {\n const { error, indexName } = params;\n if (process.env.DEBUG !== \"true\") {\n return;\n }\n console.log(`Ignoring Elasticsearch response error: ${error.message}`, {\n usedIndexName: indexName,\n error: {\n ...error,\n message: error.message,\n code: error.code,\n data: error.data,\n stack: error.stack\n }\n });\n};\n"],"mappings":";;;;;;AAOO,MAAMA,yBAAyB,GAAIC,MAA8C,IAAK;EACzF,MAAM;IAAEC,KAAK;IAAEC;EAAU,CAAC,GAAGF,MAAM;EACnC,IAAIG,OAAO,CAACC,GAAG,CAACC,KAAK,KAAK,MAAM,EAAE;IAC9B;EACJ;EACAC,OAAO,CAACC,GAAG,CAAC,0CAA0CN,KAAK,CAACO,OAAO,EAAE,EAAE;IACnEC,aAAa,EAAEP,SAAS;IACxBD,KAAK,EAAE;MACH,GAAGA,KAAK;MACRO,OAAO,EAAEP,KAAK,CAACO,OAAO;MACtBE,IAAI,EAAET,KAAK,CAACS,IAAI;MAChBC,IAAI,EAAEV,KAAK,CAACU,IAAI;MAChBC,KAAK,EAAEX,KAAK,CAACW;IACjB;EACJ,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAd,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import WebinyError from "@webiny/error";
|
|
1
|
+
import type WebinyError from "@webiny/error";
|
|
2
2
|
export declare const shouldIgnoreEsResponseError: (error: WebinyError) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["IGNORED_ES_SEARCH_EXCEPTIONS","shouldIgnoreEsResponseError","error","includes","message","exports"],"sources":["shouldIgnoreEsResponseError.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\n\nconst IGNORED_ES_SEARCH_EXCEPTIONS = [\n \"index_not_found_exception\",\n \"search_phase_execution_exception\"\n];\n\nexport const shouldIgnoreEsResponseError = (error: WebinyError) => {\n return IGNORED_ES_SEARCH_EXCEPTIONS.includes(error.message);\n};\n"],"mappings":";;;;;;AAEA,MAAMA,4BAA4B,GAAG,CACjC,2BAA2B,EAC3B,kCAAkC,CACrC;AAEM,MAAMC,2BAA2B,GAAIC,KAAkB,IAAK;EAC/D,OAAOF,4BAA4B,CAACG,QAAQ,CAACD,KAAK,CAACE,OAAO,CAAC;AAC/D,CAAC;AAACC,OAAA,CAAAJ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["IGNORED_ES_SEARCH_EXCEPTIONS","shouldIgnoreEsResponseError","error","includes","message","exports"],"sources":["shouldIgnoreEsResponseError.ts"],"sourcesContent":["import type WebinyError from \"@webiny/error\";\n\nconst IGNORED_ES_SEARCH_EXCEPTIONS = [\n \"index_not_found_exception\",\n \"search_phase_execution_exception\"\n];\n\nexport const shouldIgnoreEsResponseError = (error: WebinyError) => {\n return IGNORED_ES_SEARCH_EXCEPTIONS.includes(error.message);\n};\n"],"mappings":";;;;;;AAEA,MAAMA,4BAA4B,GAAG,CACjC,2BAA2B,EAC3B,kCAAkC,CACrC;AAEM,MAAMC,2BAA2B,GAAIC,KAAkB,IAAK;EAC/D,OAAOF,4BAA4B,CAACG,QAAQ,CAACD,KAAK,CAACE,OAAO,CAAC;AAC/D,CAAC;AAACC,OAAA,CAAAJ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SettingsStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
-
import { Entity } from "@webiny/db-dynamodb/toolbox";
|
|
1
|
+
import type { SettingsStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
+
import type { Entity } from "@webiny/db-dynamodb/toolbox";
|
|
3
3
|
export interface CreateSettingsStorageOperationsParams {
|
|
4
4
|
entity: Entity;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_get","require","_error","_interopRequireDefault","_dbDynamodb","createPartitionKey","params","tenant","locale","parts","push","join","createType","createSettingsStorageOperations","entity","getDefaults","keys","PK","SK","result","getClean","websiteUrl","data","deliveryUrl","websitePreviewUrl","appUrl","ex","WebinyError","message","code","get","where","create","settings","put","item","TYPE","update","original","createCacheKey","exports"],"sources":["index.ts"],"sourcesContent":["import {\n DefaultSettings,\n DefaultSettingsCrudOptions,\n Settings,\n SettingsStorageOperations,\n SettingsStorageOperationsCreateParams,\n SettingsStorageOperationsGetParams,\n SettingsStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { getClean } from \"@webiny/db-dynamodb/utils/get\";\nimport WebinyError from \"@webiny/error\";\nimport { put } from \"@webiny/db-dynamodb\";\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\nconst createType = (): string => {\n return \"pb.settings\";\n};\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity;\n}\n\nexport interface DbDefaultSettings {\n data: {\n appUrl: string;\n deliveryUrl: string;\n };\n}\n\nexport const createSettingsStorageOperations = ({\n entity\n}: CreateSettingsStorageOperationsParams): SettingsStorageOperations => {\n const getDefaults = async (): Promise<DefaultSettings | null> => {\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: \"default\"\n };\n\n try {\n const result = await getClean<DbDefaultSettings>({\n entity,\n keys\n });\n if (!result) {\n return null;\n }\n\n return {\n websiteUrl: result.data.deliveryUrl,\n websitePreviewUrl: result.data.appUrl\n };\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load default settings record.\",\n ex.code || \"DEFAULT_SETTINGS_GET_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const get = async (params: SettingsStorageOperationsGetParams) => {\n const { where } = params;\n\n const keys = {\n PK: createPartitionKey(where),\n SK: \"A\"\n };\n try {\n const result = await getClean<{ data: Settings }>({\n entity,\n keys\n });\n return result?.data || null;\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: \"A\"\n };\n try {\n await put({\n entity,\n item: {\n TYPE: createType(),\n data: settings,\n ...keys\n }\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: \"A\"\n };\n try {\n await put({\n entity,\n item: {\n data: settings,\n TYPE: createType(),\n ...keys\n }\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 getDefaults,\n create,\n update,\n createCacheKey\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_get","require","_error","_interopRequireDefault","_dbDynamodb","createPartitionKey","params","tenant","locale","parts","push","join","createType","createSettingsStorageOperations","entity","getDefaults","keys","PK","SK","result","getClean","websiteUrl","data","deliveryUrl","websitePreviewUrl","appUrl","ex","WebinyError","message","code","get","where","create","settings","put","item","TYPE","update","original","createCacheKey","exports"],"sources":["index.ts"],"sourcesContent":["import type {\n DefaultSettings,\n DefaultSettingsCrudOptions,\n Settings,\n SettingsStorageOperations,\n SettingsStorageOperationsCreateParams,\n SettingsStorageOperationsGetParams,\n SettingsStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { getClean } from \"@webiny/db-dynamodb/utils/get\";\nimport WebinyError from \"@webiny/error\";\nimport { put } from \"@webiny/db-dynamodb\";\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\nconst createType = (): string => {\n return \"pb.settings\";\n};\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity;\n}\n\nexport interface DbDefaultSettings {\n data: {\n appUrl: string;\n deliveryUrl: string;\n };\n}\n\nexport const createSettingsStorageOperations = ({\n entity\n}: CreateSettingsStorageOperationsParams): SettingsStorageOperations => {\n const getDefaults = async (): Promise<DefaultSettings | null> => {\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: \"default\"\n };\n\n try {\n const result = await getClean<DbDefaultSettings>({\n entity,\n keys\n });\n if (!result) {\n return null;\n }\n\n return {\n websiteUrl: result.data.deliveryUrl,\n websitePreviewUrl: result.data.appUrl\n };\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load default settings record.\",\n ex.code || \"DEFAULT_SETTINGS_GET_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const get = async (params: SettingsStorageOperationsGetParams) => {\n const { where } = params;\n\n const keys = {\n PK: createPartitionKey(where),\n SK: \"A\"\n };\n try {\n const result = await getClean<{ data: Settings }>({\n entity,\n keys\n });\n return result?.data || null;\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: \"A\"\n };\n try {\n await put({\n entity,\n item: {\n TYPE: createType(),\n data: settings,\n ...keys\n }\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: \"A\"\n };\n try {\n await put({\n entity,\n item: {\n data: settings,\n TYPE: createType(),\n ...keys\n }\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 getDefaults,\n create,\n update,\n createCacheKey\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SystemStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
-
import { Entity } from "@webiny/db-dynamodb/toolbox";
|
|
1
|
+
import type { SystemStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
+
import type { Entity } from "@webiny/db-dynamodb/toolbox";
|
|
3
3
|
export interface CreateSystemStorageOperationsParams {
|
|
4
4
|
entity: Entity<any>;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_dbDynamodb","createPartitionKey","tenant","createSortKey","createSystemStorageOperations","entity","get","params","keys","PK","SK","getClean","ex","WebinyError","message","code","create","system","put","item","update","original","exports"],"sources":["index.ts"],"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 { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { getClean, put } from \"@webiny/db-dynamodb\";\n\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 return await getClean<System>({\n entity,\n keys\n });\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 put({\n entity,\n item: {\n ...system,\n ...keys\n }\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 put({\n entity,\n item: {\n ...system,\n ...keys\n }\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"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AASA,IAAAC,WAAA,GAAAD,OAAA;AAKA,MAAME,kBAAkB,GAAGA,CAAC;EAAEC;AAA2B,CAAC,KAAa;EACnE,OAAO,KAAKA,MAAM,SAAS;AAC/B,CAAC;AAED,MAAMC,aAAa,GAAGA,CAAA,KAAc;EAChC,OAAO,IAAI;AACf,CAAC;AAKM,MAAMC,6BAA6B,GAAGA,CAAC;EAC1CC;AACiC,CAAC,KAA8B;EAChE,MAAMC,GAAG,GAAG,MAAOC,MAAwC,IAA6B;IACpF,MAAM;MAAEL;IAAO,CAAC,GAAGK,MAAM;IACzB,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAAC;QAAEC;MAAO,CAAC,CAAC;MAClCQ,EAAE,EAAEP,aAAa,CAAC;IACtB,CAAC;IACD,IAAI;MACA,OAAO,MAAM,IAAAQ,oBAAQ,EAAS;QAC1BN,MAAM;QACNG;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,+BAA+B,EAC7CF,EAAE,CAACG,IAAI,IAAI,kBAAkB,EAC7B;QACIP;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,MAAMQ,MAAM,GAAG,MAAOT,MAA2C,IAAsB;IACnF,MAAM;MAAEU;IAAO,CAAC,GAAGV,MAAM;IACzB,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAACgB,MAAM,CAAC;MAC9BP,EAAE,EAAEP,aAAa,CAAC;IACtB,CAAC;IACD,IAAI;MACA,MAAM,IAAAe,eAAG,EAAC;QACNb,MAAM;QACNc,IAAI,EAAE;UACF,GAAGF,MAAM;UACT,GAAGT;QACP;MACJ,CAAC,CAAC;MACF,OAAOS,MAAM;IACjB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,iCAAiC,EAC/CF,EAAE,CAACG,IAAI,IAAI,qBAAqB,EAChC;QACIE,MAAM;QACNT;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,MAAMY,MAAM,GAAG,MAAOb,MAA2C,IAAsB;IACnF,MAAM;MAAEc,QAAQ;MAAEJ;IAAO,CAAC,GAAGV,MAAM;IACnC,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAACoB,QAAQ,CAAC;MAChCX,EAAE,EAAEP,aAAa,CAAC;IACtB,CAAC;IACD,IAAI;MACA,MAAM,IAAAe,eAAG,EAAC;QACNb,MAAM;QACNc,IAAI,EAAE;UACF,GAAGF,MAAM;UACT,GAAGT;QACP;MACJ,CAAC,CAAC;MACF,OAAOS,MAAM;IACjB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,iCAAiC,EAC/CF,EAAE,CAACG,IAAI,IAAI,qBAAqB,EAChC;QACIM,QAAQ;QACRJ,MAAM;QACNT;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,OAAO;IACHF,GAAG;IACHU,MAAM;IACNI;EACJ,CAAC;AACL,CAAC;AAACE,OAAA,CAAAlB,6BAAA,GAAAA,6BAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_dbDynamodb","createPartitionKey","tenant","createSortKey","createSystemStorageOperations","entity","get","params","keys","PK","SK","getClean","ex","WebinyError","message","code","create","system","put","item","update","original","exports"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n System,\n SystemStorageOperations,\n SystemStorageOperationsCreateParams,\n SystemStorageOperationsGetParams,\n SystemStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport type { Entity } from \"@webiny/db-dynamodb/toolbox\";\nimport { getClean, put } from \"@webiny/db-dynamodb\";\n\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 return await getClean<System>({\n entity,\n keys\n });\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 put({\n entity,\n item: {\n ...system,\n ...keys\n }\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 put({\n entity,\n item: {\n ...system,\n ...keys\n }\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"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AASA,IAAAC,WAAA,GAAAD,OAAA;AAKA,MAAME,kBAAkB,GAAGA,CAAC;EAAEC;AAA2B,CAAC,KAAa;EACnE,OAAO,KAAKA,MAAM,SAAS;AAC/B,CAAC;AAED,MAAMC,aAAa,GAAGA,CAAA,KAAc;EAChC,OAAO,IAAI;AACf,CAAC;AAKM,MAAMC,6BAA6B,GAAGA,CAAC;EAC1CC;AACiC,CAAC,KAA8B;EAChE,MAAMC,GAAG,GAAG,MAAOC,MAAwC,IAA6B;IACpF,MAAM;MAAEL;IAAO,CAAC,GAAGK,MAAM;IACzB,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAAC;QAAEC;MAAO,CAAC,CAAC;MAClCQ,EAAE,EAAEP,aAAa,CAAC;IACtB,CAAC;IACD,IAAI;MACA,OAAO,MAAM,IAAAQ,oBAAQ,EAAS;QAC1BN,MAAM;QACNG;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,+BAA+B,EAC7CF,EAAE,CAACG,IAAI,IAAI,kBAAkB,EAC7B;QACIP;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,MAAMQ,MAAM,GAAG,MAAOT,MAA2C,IAAsB;IACnF,MAAM;MAAEU;IAAO,CAAC,GAAGV,MAAM;IACzB,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAACgB,MAAM,CAAC;MAC9BP,EAAE,EAAEP,aAAa,CAAC;IACtB,CAAC;IACD,IAAI;MACA,MAAM,IAAAe,eAAG,EAAC;QACNb,MAAM;QACNc,IAAI,EAAE;UACF,GAAGF,MAAM;UACT,GAAGT;QACP;MACJ,CAAC,CAAC;MACF,OAAOS,MAAM;IACjB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,iCAAiC,EAC/CF,EAAE,CAACG,IAAI,IAAI,qBAAqB,EAChC;QACIE,MAAM;QACNT;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,MAAMY,MAAM,GAAG,MAAOb,MAA2C,IAAsB;IACnF,MAAM;MAAEc,QAAQ;MAAEJ;IAAO,CAAC,GAAGV,MAAM;IACnC,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAACoB,QAAQ,CAAC;MAChCX,EAAE,EAAEP,aAAa,CAAC;IACtB,CAAC;IACD,IAAI;MACA,MAAM,IAAAe,eAAG,EAAC;QACNb,MAAM;QACNc,IAAI,EAAE;UACF,GAAGF,MAAM;UACT,GAAGT;QACP;MACJ,CAAC,CAAC;MACF,OAAOS,MAAM;IACjB,CAAC,CAAC,OAAOL,EAAE,EAAE;MACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,iCAAiC,EAC/CF,EAAE,CAACG,IAAI,IAAI,qBAAqB,EAChC;QACIM,QAAQ;QACRJ,MAAM;QACNT;MACJ,CACJ,CAAC;IACL;EACJ,CAAC;EAED,OAAO;IACHF,GAAG;IACHU,MAAM;IACNI;EACJ,CAAC;AACL,CAAC;AAACE,OAAA,CAAAlB,6BAAA,GAAAA,6BAAA","ignoreList":[]}
|