@webiny/api-page-builder-so-ddb-es 0.0.0-ee-vpcs.549378cf03
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/LICENSE +21 -0
- package/README.md +30 -0
- package/configurations.d.ts +9 -0
- package/configurations.js +49 -0
- package/configurations.js.map +1 -0
- package/definitions/blockCategoryEntity.d.ts +9 -0
- package/definitions/blockCategoryEntity.js +61 -0
- package/definitions/blockCategoryEntity.js.map +1 -0
- package/definitions/categoryEntity.d.ts +9 -0
- package/definitions/categoryEntity.js +61 -0
- package/definitions/categoryEntity.js.map +1 -0
- package/definitions/menuEntity.d.ts +9 -0
- package/definitions/menuEntity.js +61 -0
- package/definitions/menuEntity.js.map +1 -0
- package/definitions/pageBlockEntity.d.ts +9 -0
- package/definitions/pageBlockEntity.js +64 -0
- package/definitions/pageBlockEntity.js.map +1 -0
- package/definitions/pageElasticsearchEntity.d.ts +9 -0
- package/definitions/pageElasticsearchEntity.js +40 -0
- package/definitions/pageElasticsearchEntity.js.map +1 -0
- package/definitions/pageElementEntity.d.ts +9 -0
- package/definitions/pageElementEntity.js +67 -0
- package/definitions/pageElementEntity.js.map +1 -0
- package/definitions/pageEntity.d.ts +9 -0
- package/definitions/pageEntity.js +97 -0
- package/definitions/pageEntity.js.map +1 -0
- package/definitions/settingsEntity.d.ts +9 -0
- package/definitions/settingsEntity.js +77 -0
- package/definitions/settingsEntity.js.map +1 -0
- package/definitions/systemEntity.d.ts +9 -0
- package/definitions/systemEntity.js +40 -0
- package/definitions/systemEntity.js.map +1 -0
- package/definitions/table.d.ts +9 -0
- package/definitions/table.js +24 -0
- package/definitions/table.js.map +1 -0
- package/definitions/tableElasticsearch.d.ts +9 -0
- package/definitions/tableElasticsearch.js +24 -0
- package/definitions/tableElasticsearch.js.map +1 -0
- package/elasticsearch/createElasticsearchIndex.d.ts +9 -0
- package/elasticsearch/createElasticsearchIndex.js +60 -0
- package/elasticsearch/createElasticsearchIndex.js.map +1 -0
- package/elasticsearch/indices/base.d.ts +2 -0
- package/elasticsearch/indices/base.js +15 -0
- package/elasticsearch/indices/base.js.map +1 -0
- package/elasticsearch/indices/index.d.ts +1 -0
- package/elasticsearch/indices/index.js +16 -0
- package/elasticsearch/indices/index.js.map +1 -0
- package/elasticsearch/indices/japanese.d.ts +2 -0
- package/elasticsearch/indices/japanese.js +16 -0
- package/elasticsearch/indices/japanese.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +233 -0
- package/index.js.map +1 -0
- package/operations/blockCategory/dataLoader.d.ts +16 -0
- package/operations/blockCategory/dataLoader.js +79 -0
- package/operations/blockCategory/dataLoader.js.map +1 -0
- package/operations/blockCategory/fields.d.ts +2 -0
- package/operations/blockCategory/fields.js +28 -0
- package/operations/blockCategory/fields.js.map +1 -0
- package/operations/blockCategory/index.d.ts +8 -0
- package/operations/blockCategory/index.js +208 -0
- package/operations/blockCategory/index.js.map +1 -0
- package/operations/blockCategory/keys.d.ts +9 -0
- package/operations/blockCategory/keys.js +25 -0
- package/operations/blockCategory/keys.js.map +1 -0
- package/operations/category/dataLoader.d.ts +16 -0
- package/operations/category/dataLoader.js +79 -0
- package/operations/category/dataLoader.js.map +1 -0
- package/operations/category/fields.d.ts +2 -0
- package/operations/category/fields.js +28 -0
- package/operations/category/fields.js.map +1 -0
- package/operations/category/index.d.ts +8 -0
- package/operations/category/index.js +208 -0
- package/operations/category/index.js.map +1 -0
- package/operations/category/keys.d.ts +9 -0
- package/operations/category/keys.js +25 -0
- package/operations/category/keys.js.map +1 -0
- package/operations/menu/fields.d.ts +2 -0
- package/operations/menu/fields.js +27 -0
- package/operations/menu/fields.js.map +1 -0
- package/operations/menu/index.d.ts +8 -0
- package/operations/menu/index.js +217 -0
- package/operations/menu/index.js.map +1 -0
- package/operations/pageBlock/dataLoader.d.ts +16 -0
- package/operations/pageBlock/dataLoader.js +79 -0
- package/operations/pageBlock/dataLoader.js.map +1 -0
- package/operations/pageBlock/fields.d.ts +2 -0
- package/operations/pageBlock/fields.js +25 -0
- package/operations/pageBlock/fields.js.map +1 -0
- package/operations/pageBlock/index.d.ts +8 -0
- package/operations/pageBlock/index.js +208 -0
- package/operations/pageBlock/index.js.map +1 -0
- package/operations/pageBlock/keys.d.ts +9 -0
- package/operations/pageBlock/keys.js +25 -0
- package/operations/pageBlock/keys.js.map +1 -0
- package/operations/pageElement/fields.d.ts +2 -0
- package/operations/pageElement/fields.js +19 -0
- package/operations/pageElement/fields.js.map +1 -0
- package/operations/pageElement/index.d.ts +8 -0
- package/operations/pageElement/index.js +207 -0
- package/operations/pageElement/index.js.map +1 -0
- package/operations/pages/elasticsearchQueryBody.d.ts +12 -0
- package/operations/pages/elasticsearchQueryBody.js +237 -0
- package/operations/pages/elasticsearchQueryBody.js.map +1 -0
- package/operations/pages/fields.d.ts +4 -0
- package/operations/pages/fields.js +54 -0
- package/operations/pages/fields.js.map +1 -0
- package/operations/pages/helpers.d.ts +35 -0
- package/operations/pages/helpers.js +83 -0
- package/operations/pages/helpers.js.map +1 -0
- package/operations/pages/index.d.ts +11 -0
- package/operations/pages/index.js +829 -0
- package/operations/pages/index.js.map +1 -0
- package/operations/pages/keys.d.ts +24 -0
- package/operations/pages/keys.js +79 -0
- package/operations/pages/keys.js.map +1 -0
- package/operations/settings/index.d.ts +6 -0
- package/operations/settings/index.js +178 -0
- package/operations/settings/index.js.map +1 -0
- package/operations/system/index.d.ts +6 -0
- package/operations/system/index.js +104 -0
- package/operations/system/index.js.map +1 -0
- package/package.json +65 -0
- package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/BlockCategoryDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/CategoryDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/IndexPageDataPlugin.d.ts +17 -0
- package/plugins/definitions/IndexPageDataPlugin.js +32 -0
- package/plugins/definitions/IndexPageDataPlugin.js.map +1 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/MenuDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageBlockDynamoDbFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageBlockDynamoDbFieldPlugin.js +17 -0
- package/plugins/definitions/PageBlockDynamoDbFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.js +17 -0
- package/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchBodyModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchFieldPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchIndexPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchIndexPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchIndexPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchQueryModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.d.ts +4 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.js +17 -0
- package/plugins/definitions/PageElasticsearchSortModifierPlugin.js.map +1 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.d.ts +4 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js +17 -0
- package/plugins/definitions/PageElementDynamoDbElasticFieldPlugin.js.map +1 -0
- package/plugins/definitions/SearchLatestPagesPlugin.d.ts +4 -0
- package/plugins/definitions/SearchLatestPagesPlugin.js +17 -0
- package/plugins/definitions/SearchLatestPagesPlugin.js.map +1 -0
- package/plugins/definitions/SearchPagesPlugin.d.ts +23 -0
- package/plugins/definitions/SearchPagesPlugin.js +39 -0
- package/plugins/definitions/SearchPagesPlugin.js.map +1 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.d.ts +4 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.js +17 -0
- package/plugins/definitions/SearchPublishedPagesPlugin.js.map +1 -0
- package/types.d.ts +39 -0
- package/types.js +20 -0
- package/types.js.map +1 -0
- package/upgrades/index.d.ts +2 -0
- package/upgrades/index.js +14 -0
- package/upgrades/index.js.map +1 -0
- package/upgrades/v5.15.0/category.d.ts +2 -0
- package/upgrades/v5.15.0/category.js +73 -0
- package/upgrades/v5.15.0/category.js.map +1 -0
- package/upgrades/v5.15.0/index.d.ts +4 -0
- package/upgrades/v5.15.0/index.js +52 -0
- package/upgrades/v5.15.0/index.js.map +1 -0
- package/upgrades/v5.15.0/menu.d.ts +2 -0
- package/upgrades/v5.15.0/menu.js +73 -0
- package/upgrades/v5.15.0/menu.js.map +1 -0
- package/upgrades/v5.15.0/pageElement.d.ts +2 -0
- package/upgrades/v5.15.0/pageElement.js +73 -0
- package/upgrades/v5.15.0/pageElement.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["removePageAttributes","item","omit","createPageStorageOperations","params","entity","esEntity","elasticsearch","plugins","create","page","versionKeys","PK","createPartitionKey","SK","createSortKey","latestKeys","createLatestSortKey","items","putBatch","TYPE","createBasicType","createLatestType","esData","getESLatestPageData","batchWriteAll","table","put","index","configurations","es","data","ex","WebinyError","message","code","createFrom","latestPage","original","update","keys","latestPageResult","get","cleanupItem","Item","id","push","deleteOne","publishedPage","partitionKey","deleteBatch","esItems","createPublishedSortKey","createPathPartitionKey","createPathSortKey","previousLatestPage","previousLatestRecord","queryOne","options","lt","reverse","length","deleteAll","queryAllParams","gte","revisions","queryAll","publishedPathEntryDeleted","revision","status","path","publish","getESPublishedPageData","createPublishedPathType","createPublishedType","unpublish","where","pid","published","version","includes","Number","split","pop","sortKey","result","list","latest","after","previousCursor","limit","initialLimit","createLimit","body","createElasticsearchQueryBody","searchPlugins","byType","SearchPublishedPagesPlugin","type","SearchLatestPagesPlugin","plugin","modifyQuery","query","args","modifySort","sort","response","esConfig","search","meta","hasMoreItems","totalCount","cursor","hits","total","map","_source","encodeCursor","value","listTags","tenant","locale","undefined","size","aggs","tags","terms","field","include","aggregations","Array","isArray","buckets","key","listRevisions","beginsWith","fields","PageDynamoDbElasticsearchFieldPlugin","sortItems","delete"],"sources":["index.ts"],"sourcesContent":["import {\n Page,\n PageStorageOperations,\n PageStorageOperationsCreateFromParams,\n PageStorageOperationsCreateParams,\n PageStorageOperationsDeleteAllParams,\n PageStorageOperationsDeleteParams,\n PageStorageOperationsGetParams,\n PageStorageOperationsListParams,\n PageStorageOperationsListResponse,\n PageStorageOperationsListRevisionsParams,\n PageStorageOperationsListTagsParams,\n PageStorageOperationsPublishParams,\n PageStorageOperationsUnpublishParams,\n PageStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport omit from \"lodash/omit\";\nimport WebinyError from \"@webiny/error\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Client } from \"@elastic/elasticsearch\";\nimport {\n ElasticsearchBoolQueryConfig,\n ElasticsearchSearchResponse\n} from \"@webiny/api-elasticsearch/types\";\nimport { configurations } from \"~/configurations\";\nimport { encodeCursor, createLimit } from \"@webiny/api-elasticsearch\";\nimport { createElasticsearchQueryBody } from \"./elasticsearchQueryBody\";\nimport { SearchLatestPagesPlugin } from \"~/plugins/definitions/SearchLatestPagesPlugin\";\nimport { SearchPublishedPagesPlugin } from \"~/plugins/definitions/SearchPublishedPagesPlugin\";\nimport { DbItem, queryAll, QueryAllParams, queryOne } from \"@webiny/db-dynamodb/utils/query\";\nimport { SearchPagesPlugin } from \"~/plugins/definitions/SearchPagesPlugin\";\nimport { batchWriteAll } from \"@webiny/db-dynamodb/utils/batchWrite\";\nimport { getESLatestPageData, getESPublishedPageData } from \"./helpers\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport {\n createBasicType,\n createLatestSortKey,\n createLatestType,\n createPartitionKey,\n createPathPartitionKey,\n createPathSortKey,\n createPublishedPathType,\n createPublishedSortKey,\n createPublishedType,\n createSortKey\n} from \"./keys\";\nimport { sortItems } from \"@webiny/db-dynamodb/utils/sort\";\nimport { PageDynamoDbElasticsearchFieldPlugin } from \"~/plugins/definitions/PageDynamoDbElasticsearchFieldPlugin\";\n\n/**\n * This function removes attributes that were once present in the Page record, which we no longer need.\n */\nfunction removePageAttributes(item: Page): Page {\n return omit(item, [\"home\", \"notFound\", \"visibility\"]) as Page;\n}\n\nexport interface CreatePageStorageOperationsParams {\n entity: Entity<any>;\n esEntity: Entity<any>;\n elasticsearch: Client;\n plugins: PluginsContainer;\n}\nexport const createPageStorageOperations = (\n params: CreatePageStorageOperationsParams\n): PageStorageOperations => {\n const { entity, esEntity, elasticsearch, plugins } = params;\n\n const create = async (params: PageStorageOperationsCreateParams): Promise<Page> => {\n const { page } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...page,\n ...versionKeys,\n TYPE: createBasicType()\n }),\n entity.putBatch({\n ...page,\n ...latestKeys,\n TYPE: createLatestType()\n })\n ];\n const esData = getESLatestPageData(plugins, page);\n try {\n await batchWriteAll({\n table: entity.table,\n items: items\n });\n await esEntity.put({\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page.\",\n ex.code || \"CREATE_PAGE_ERROR\",\n {\n versionKeys,\n latestKeys,\n page\n }\n );\n }\n };\n\n const createFrom = async (params: PageStorageOperationsCreateFromParams): Promise<Page> => {\n const { page, latestPage, original } = params;\n\n const versionKeys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n const latestKeys = {\n ...versionKeys,\n SK: createLatestSortKey()\n };\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n ...versionKeys\n }),\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n })\n ];\n\n const esData = getESLatestPageData(plugins, page);\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n\n await esEntity.put({\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n });\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create new page from existing page.\",\n ex.code || \"CREATE_PAGE_FROM_ERROR\",\n {\n versionKeys,\n latestKeys,\n latestPage,\n original,\n page\n }\n );\n }\n };\n\n const update = async (params: PageStorageOperationsUpdateParams): Promise<Page> => {\n const { original, page } = params;\n\n const keys = {\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n };\n\n const latestKeys = {\n ...keys,\n SK: createLatestSortKey()\n };\n const latestPageResult = await entity.get(latestKeys);\n const latestPage = cleanupItem(entity, latestPageResult ? latestPageResult.Item : null);\n\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n ...keys\n })\n ];\n\n const esData = getESLatestPageData(plugins, page);\n\n if (latestPage && latestPage.id === page.id) {\n /**\n * We also update the regular record.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n ...latestKeys\n })\n );\n }\n /**\n * Unfortunately we cannot push regular and es record in the batch write because they are two separate tables.\n */\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n\n await esEntity.put({\n index: configurations.es(page).index,\n data: esData,\n ...latestKeys\n });\n\n return page;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update existing page.\",\n ex.code || \"UPDATE_PAGE_ERROR\",\n {\n original,\n page,\n latestPage,\n latestKeys,\n keys\n }\n );\n }\n };\n\n /**\n * In case of delete, we must delete records:\n * - revision\n * - path if published\n * Update:\n * - latest\n */\n const deleteOne = async (\n params: PageStorageOperationsDeleteParams\n ): Promise<[Page, Page | null]> => {\n const { page, latestPage, publishedPage } = params;\n\n const partitionKey = createPartitionKey(page);\n\n const items = [\n entity.deleteBatch({\n PK: partitionKey,\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n if (publishedPage && publishedPage.id === page.id) {\n items.push(\n entity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n })\n );\n esItems.push(\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n let previousLatestPage: Page | null = null;\n if (latestPage && latestPage.id === page.id) {\n const previousLatestRecord = await queryOne<Page>({\n entity,\n partitionKey,\n options: {\n lt: createSortKey(latestPage),\n reverse: true\n }\n });\n if (previousLatestRecord) {\n items.push(\n entity.putBatch({\n ...previousLatestRecord,\n TYPE: createLatestType(),\n PK: partitionKey,\n SK: createLatestSortKey()\n })\n );\n esItems.push(\n esEntity.putBatch({\n PK: partitionKey,\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, previousLatestRecord)\n })\n );\n previousLatestPage = cleanupItem(entity, previousLatestRecord);\n }\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch write all the page records.\",\n ex.code || \"BATCH_WRITE_RECORDS_ERROR\"\n );\n }\n if (esItems.length === 0) {\n return [page, previousLatestPage];\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not batch write all the page Elasticsearch records.\",\n ex.code || \"BATCH_WRITE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page, previousLatestPage];\n };\n\n /**\n * In case of deleteAll, we must delete records:\n * - latest\n * - published\n * - path if published\n * - revision\n * - es latest\n * - es published\n */\n const deleteAll = async (params: PageStorageOperationsDeleteAllParams): Promise<[Page]> => {\n const { page } = params;\n\n const partitionKey = createPartitionKey(page);\n const queryAllParams = {\n entity,\n partitionKey,\n options: {\n gte: \" \"\n }\n };\n let revisions: DbItem<Page>[];\n try {\n revisions = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not query for all revisions of the page.\",\n ex.code || \"LIST_REVISIONS_ERROR\",\n {\n params: queryAllParams\n }\n );\n }\n\n /**\n * We need to go through all possible entries and delete them.\n * Also, delete the published entry path record.\n */\n const items = [];\n let publishedPathEntryDeleted = false;\n for (const revision of revisions) {\n if (revision.status === \"published\" && !publishedPathEntryDeleted) {\n publishedPathEntryDeleted = true;\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: revision.path\n })\n );\n }\n items.push(\n entity.deleteBatch({\n PK: revision.PK,\n SK: revision.SK\n })\n );\n }\n const esItems = [\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createLatestSortKey()\n })\n ];\n /**\n * Delete published record if it is published.\n */\n if (publishedPathEntryDeleted) {\n esItems.push(\n esEntity.deleteBatch({\n PK: partitionKey,\n SK: createPublishedSortKey()\n })\n );\n }\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page records.\",\n ex.code || \"DELETE_RECORDS_ERROR\"\n );\n }\n try {\n await batchWriteAll({\n table: entity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete all the page Elasticsearch records.\",\n ex.code || \"DELETE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return [page];\n };\n\n const publish = async (params: PageStorageOperationsPublishParams): Promise<Page> => {\n const { page, latestPage, publishedPage } = params;\n\n /**\n * Update the given revision of the page.\n */\n const items = [\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n /**\n * If we are publishing the latest revision, let's also update the latest revision entry's\n * status in ES. Also, if we are publishing the latest revision, we need to update the latest\n * page revision entry in ES.\n */\n if (latestPage.id === page.id) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n })\n );\n }\n /**\n * If we have already published revision of this page:\n * - set existing published page revision to unpublished\n * - remove old published path if paths are different\n */\n if (publishedPage) {\n items.push(\n entity.putBatch({\n ...publishedPage,\n status: \"unpublished\",\n PK: createPartitionKey(publishedPage),\n SK: createSortKey(publishedPage)\n })\n );\n /**\n * Remove old published path if required.\n */\n if (publishedPage.path !== page.path) {\n items.push(\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: publishedPage.path\n })\n );\n }\n }\n\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey(),\n index: configurations.es(page).index,\n data: getESPublishedPageData(plugins, page)\n })\n );\n\n /**\n * Update or insert published path.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createPublishedPathType(),\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n })\n );\n /**\n * Update or insert published page.\n */\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createPublishedType(),\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n })\n );\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update all the page records when publishing.\",\n ex.code || \"UPDATE_RECORDS_ERROR\"\n );\n }\n /**\n * No point in continuing if there are no items in Elasticsearch data\n */\n if (esItems.length === 0) {\n return page;\n }\n try {\n await batchWriteAll({\n table: esEntity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when publishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const unpublish = async (params: PageStorageOperationsUnpublishParams): Promise<Page> => {\n const { page, latestPage } = params;\n\n const items = [\n entity.deleteBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n }),\n entity.deleteBatch({\n PK: createPathPartitionKey(page),\n SK: createPathSortKey(page)\n }),\n entity.putBatch({\n ...page,\n TYPE: createBasicType(),\n PK: createPartitionKey(page),\n SK: createSortKey(page)\n })\n ];\n const esItems = [];\n /*\n * If we are unpublishing the latest revision, let's also update the latest revision entry's status in ES.\n */\n if (latestPage.id === page.id) {\n items.push(\n entity.putBatch({\n ...page,\n TYPE: createLatestType(),\n PK: createPartitionKey(page),\n SK: createLatestSortKey()\n })\n );\n esItems.push(\n esEntity.putBatch({\n PK: createPartitionKey(page),\n SK: createLatestSortKey(),\n index: configurations.es(page).index,\n data: getESLatestPageData(plugins, page)\n })\n );\n }\n\n esItems.push(\n esEntity.deleteBatch({\n PK: createPartitionKey(page),\n SK: createPublishedSortKey()\n })\n );\n\n try {\n await batchWriteAll({\n table: entity.table,\n items\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update all the page records when unpublishing.\",\n ex.code || \"UPDATE_RECORDS_ERROR\"\n );\n }\n /**\n * No need to go further if no Elasticsearch items to be applied.\n */\n if (esItems.length === 0) {\n return page;\n }\n try {\n await batchWriteAll({\n table: esEntity.table,\n items: esItems\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message ||\n \"Could not update all the page Elasticsearch records when unpublishing.\",\n ex.code || \"UPDATE_ELASTICSEARCH_RECORDS_ERROR\"\n );\n }\n return page;\n };\n\n const get = async (params: PageStorageOperationsGetParams): Promise<Page | null> => {\n const { where } = params;\n const { pid, id, path, published } = where;\n let { version } = where;\n /**\n * In case of having full ID and not having version we can take the version from the id.\n */\n if (id && id.includes(\"#\") && !version) {\n version = Number(id.split(\"#\").pop());\n }\n let partitionKey: string | null = null;\n let sortKey: string;\n if (path) {\n partitionKey = createPathPartitionKey(where);\n sortKey = path;\n } else if (published) {\n sortKey = createPublishedSortKey();\n } else if (version) {\n sortKey = createSortKey({\n version\n });\n } else {\n sortKey = createLatestSortKey();\n }\n /**\n * If partition key is still undefined, create one with id or pid\n */\n if (!partitionKey) {\n partitionKey = createPartitionKey({\n ...where,\n id: pid || (id as string)\n });\n }\n const keys = {\n PK: partitionKey,\n SK: sortKey\n };\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load page by given params.\",\n ex.code || \"GET_PAGE_ERROR\",\n {\n where,\n keys\n }\n );\n }\n };\n\n const list = async (\n params: PageStorageOperationsListParams\n ): Promise<PageStorageOperationsListResponse> => {\n /**\n * We do not allow loading both published and latest at the same time.\n * @see PageStorageOperationsListWhere\n */\n if (params.where.published && params.where.latest) {\n throw new WebinyError(\n \"Both published and latest cannot be defined at the same time.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n const { after: previousCursor = null, limit: initialLimit } = params;\n\n const limit = createLimit(initialLimit, 50);\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n ...params.where\n },\n limit,\n after: previousCursor,\n plugins\n });\n\n let searchPlugins: SearchPagesPlugin[] = [];\n if (params.where.published) {\n searchPlugins = plugins.byType<SearchPublishedPagesPlugin>(\n SearchPublishedPagesPlugin.type\n );\n } else if (params.where.latest) {\n searchPlugins = plugins.byType<SearchLatestPagesPlugin>(SearchLatestPagesPlugin.type);\n } else {\n throw new WebinyError(\n \"Only published or latest can be listed. Missing where condition.\",\n \"MALFORMED_WHERE_ERROR\",\n {\n where: params.where\n }\n );\n }\n\n for (const plugin of searchPlugins) {\n /**\n * Apply query modifications\n */\n plugin.modifyQuery({\n query: body.query as unknown as ElasticsearchBoolQueryConfig,\n args: params,\n plugins\n });\n\n /**\n * Apply sort modifications\n */\n plugin.modifySort({\n sort: body.sort,\n args: params,\n plugins\n });\n }\n\n let response: ElasticsearchSearchResponse<Page>;\n const esConfig = configurations.es(params.where);\n try {\n response = await elasticsearch.search({\n ...esConfig,\n body\n });\n } catch (ex) {\n /**\n * Do not throw the error if Elasticsearch index does not exist.\n * In some CRUDs we try to get list of pages but index was not created yet.\n */\n if (ex.message === \"index_not_found_exception\") {\n return {\n items: [],\n meta: {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null\n }\n };\n }\n throw new WebinyError(\n ex.message || \"Could not load pages by given Elasticsearch body.\",\n ex.code || \"LIST_PAGES_ERROR\",\n {\n body\n }\n );\n }\n const { hits, total } = response.body.hits;\n const items = hits.map(item => item._source).map(item => removePageAttributes(item));\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n /**\n * Remove the last item from results, we don't want to include it.\n */\n items.pop();\n }\n /**\n * Cursor is the `sort` value of the last item in the array.\n * https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#search-after\n */\n const cursor =\n items.length > 0 && hasMoreItems\n ? encodeCursor(hits[items.length - 1].sort) || null\n : null;\n return {\n items,\n meta: {\n hasMoreItems,\n totalCount: total.value,\n cursor\n }\n };\n };\n\n const listTags = async (params: PageStorageOperationsListTagsParams): Promise<string[]> => {\n const { where } = params;\n\n const tenant: string = where.tenant;\n const body = createElasticsearchQueryBody({\n ...params,\n where: {\n locale: where.locale,\n search: undefined,\n tenant\n },\n sort: [],\n after: null,\n limit: 100000,\n plugins\n });\n\n const esConfig = configurations.es(where);\n\n try {\n const response: ElasticsearchSearchResponse<string> = await elasticsearch.search({\n ...esConfig,\n body: {\n ...body,\n sort: undefined,\n limit: undefined,\n size: 0,\n aggs: {\n tags: {\n terms: {\n field: \"tags.keyword\",\n include: `.*${where.search}.*`,\n size: 10\n }\n }\n }\n }\n });\n\n const tags = response.body.aggregations[\"tags\"];\n if (!tags || Array.isArray(tags.buckets) === false) {\n return [];\n }\n return tags.buckets.map(item => item.key);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list tags by given parameters.\",\n ex.code || \"LIST_TAGS_ERROR\",\n {\n body,\n where\n }\n );\n }\n };\n\n const listRevisions = async (\n params: PageStorageOperationsListRevisionsParams\n ): Promise<Page[]> => {\n const { where, sort } = params;\n\n const queryAllParams: QueryAllParams = {\n entity,\n partitionKey: createPartitionKey({\n ...where,\n id: where.pid\n }),\n options: {\n beginsWith: \"REV#\",\n reverse: false\n }\n };\n\n let items: Page[] = [];\n try {\n items = await queryAll<Page>(queryAllParams);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all the revisions from requested page.\",\n ex.code || \"LOAD_PAGE_REVISIONS_ERROR\",\n {\n params\n }\n );\n }\n\n const fields = plugins.byType<PageDynamoDbElasticsearchFieldPlugin>(\n PageDynamoDbElasticsearchFieldPlugin.type\n );\n\n return sortItems({\n items: items.map(item => removePageAttributes(item)),\n fields,\n sort\n });\n };\n\n return {\n create,\n createFrom,\n update,\n delete: deleteOne,\n deleteAll: deleteAll,\n publish,\n unpublish,\n get,\n list,\n listRevisions,\n listTags\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
interface BasePartitionKeyParams {
|
|
2
|
+
tenant: string;
|
|
3
|
+
locale: string;
|
|
4
|
+
}
|
|
5
|
+
export interface PartitionKeyParams extends BasePartitionKeyParams {
|
|
6
|
+
id: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const createPartitionKey: (params: PartitionKeyParams) => string;
|
|
9
|
+
export interface SortKeyParams {
|
|
10
|
+
version: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const createSortKey: (params: SortKeyParams) => string;
|
|
13
|
+
export declare const createPathPartitionKey: (params: BasePartitionKeyParams) => string;
|
|
14
|
+
export interface PathSortKeyParams {
|
|
15
|
+
path: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const createPathSortKey: (params: PathSortKeyParams) => string;
|
|
18
|
+
export declare const createPublishedSortKey: () => string;
|
|
19
|
+
export declare const createLatestSortKey: () => string;
|
|
20
|
+
export declare const createBasicType: () => string;
|
|
21
|
+
export declare const createLatestType: () => string;
|
|
22
|
+
export declare const createPublishedType: () => string;
|
|
23
|
+
export declare const createPublishedPathType: () => string;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createSortKey = exports.createPublishedType = exports.createPublishedSortKey = exports.createPublishedPathType = exports.createPathSortKey = exports.createPathPartitionKey = exports.createPartitionKey = exports.createLatestType = exports.createLatestSortKey = exports.createBasicType = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("@webiny/utils");
|
|
9
|
+
|
|
10
|
+
const createBasePartitionKey = params => {
|
|
11
|
+
const {
|
|
12
|
+
tenant,
|
|
13
|
+
locale
|
|
14
|
+
} = params;
|
|
15
|
+
return `T#${tenant}#L#${locale}#PB#`;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const createPartitionKey = params => {
|
|
19
|
+
const {
|
|
20
|
+
id
|
|
21
|
+
} = (0, _utils.parseIdentifier)(params.id);
|
|
22
|
+
return `${createBasePartitionKey(params)}P#${id}`;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
exports.createPartitionKey = createPartitionKey;
|
|
26
|
+
|
|
27
|
+
const createSortKey = params => {
|
|
28
|
+
return `REV#${(0, _utils.zeroPad)(params.version)}`;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
exports.createSortKey = createSortKey;
|
|
32
|
+
|
|
33
|
+
const createPathPartitionKey = params => {
|
|
34
|
+
return `${createBasePartitionKey(params)}PATH`;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
exports.createPathPartitionKey = createPathPartitionKey;
|
|
38
|
+
|
|
39
|
+
const createPathSortKey = params => {
|
|
40
|
+
return params.path;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports.createPathSortKey = createPathSortKey;
|
|
44
|
+
|
|
45
|
+
const createPublishedSortKey = () => {
|
|
46
|
+
return "P";
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.createPublishedSortKey = createPublishedSortKey;
|
|
50
|
+
|
|
51
|
+
const createLatestSortKey = () => {
|
|
52
|
+
return "L";
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.createLatestSortKey = createLatestSortKey;
|
|
56
|
+
|
|
57
|
+
const createBasicType = () => {
|
|
58
|
+
return "pb.page";
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
exports.createBasicType = createBasicType;
|
|
62
|
+
|
|
63
|
+
const createLatestType = () => {
|
|
64
|
+
return "pb.page.l";
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
exports.createLatestType = createLatestType;
|
|
68
|
+
|
|
69
|
+
const createPublishedType = () => {
|
|
70
|
+
return "pb.page.p";
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
exports.createPublishedType = createPublishedType;
|
|
74
|
+
|
|
75
|
+
const createPublishedPathType = () => {
|
|
76
|
+
return "pb.page.p.path";
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
exports.createPublishedPathType = createPublishedPathType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createBasePartitionKey","params","tenant","locale","createPartitionKey","id","parseIdentifier","createSortKey","zeroPad","version","createPathPartitionKey","createPathSortKey","path","createPublishedSortKey","createLatestSortKey","createBasicType","createLatestType","createPublishedType","createPublishedPathType"],"sources":["keys.ts"],"sourcesContent":["import { parseIdentifier, zeroPad } from \"@webiny/utils\";\n\ninterface BasePartitionKeyParams {\n tenant: string;\n locale: string;\n}\n\nconst createBasePartitionKey = (params: BasePartitionKeyParams): string => {\n const { tenant, locale } = params;\n return `T#${tenant}#L#${locale}#PB#`;\n};\n\nexport interface PartitionKeyParams extends BasePartitionKeyParams {\n id: string;\n}\n\nexport const createPartitionKey = (params: PartitionKeyParams): string => {\n const { id } = parseIdentifier(params.id);\n return `${createBasePartitionKey(params)}P#${id}`;\n};\n\nexport interface SortKeyParams {\n version: number;\n}\n\nexport const createSortKey = (params: SortKeyParams): string => {\n return `REV#${zeroPad(params.version)}`;\n};\n\nexport const createPathPartitionKey = (params: BasePartitionKeyParams): string => {\n return `${createBasePartitionKey(params)}PATH`;\n};\n\nexport interface PathSortKeyParams {\n path: string;\n}\n\nexport const createPathSortKey = (params: PathSortKeyParams): string => {\n return params.path;\n};\n\nexport const createPublishedSortKey = (): string => {\n return \"P\";\n};\n\nexport const createLatestSortKey = (): string => {\n return \"L\";\n};\n\nexport const createBasicType = (): string => {\n return \"pb.page\";\n};\n\nexport const createLatestType = (): string => {\n return \"pb.page.l\";\n};\n\nexport const createPublishedType = (): string => {\n return \"pb.page.p\";\n};\n\nexport const createPublishedPathType = (): string => {\n return \"pb.page.p.path\";\n};\n"],"mappings":";;;;;;;AAAA;;AAOA,MAAMA,sBAAsB,GAAIC,MAAD,IAA4C;EACvE,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAqBF,MAA3B;EACA,OAAQ,KAAIC,MAAO,MAAKC,MAAO,MAA/B;AACH,CAHD;;AASO,MAAMC,kBAAkB,GAAIH,MAAD,IAAwC;EACtE,MAAM;IAAEI;EAAF,IAAS,IAAAC,sBAAA,EAAgBL,MAAM,CAACI,EAAvB,CAAf;EACA,OAAQ,GAAEL,sBAAsB,CAACC,MAAD,CAAS,KAAII,EAAG,EAAhD;AACH,CAHM;;;;AASA,MAAME,aAAa,GAAIN,MAAD,IAAmC;EAC5D,OAAQ,OAAM,IAAAO,cAAA,EAAQP,MAAM,CAACQ,OAAf,CAAwB,EAAtC;AACH,CAFM;;;;AAIA,MAAMC,sBAAsB,GAAIT,MAAD,IAA4C;EAC9E,OAAQ,GAAED,sBAAsB,CAACC,MAAD,CAAS,MAAzC;AACH,CAFM;;;;AAQA,MAAMU,iBAAiB,GAAIV,MAAD,IAAuC;EACpE,OAAOA,MAAM,CAACW,IAAd;AACH,CAFM;;;;AAIA,MAAMC,sBAAsB,GAAG,MAAc;EAChD,OAAO,GAAP;AACH,CAFM;;;;AAIA,MAAMC,mBAAmB,GAAG,MAAc;EAC7C,OAAO,GAAP;AACH,CAFM;;;;AAIA,MAAMC,eAAe,GAAG,MAAc;EACzC,OAAO,SAAP;AACH,CAFM;;;;AAIA,MAAMC,gBAAgB,GAAG,MAAc;EAC1C,OAAO,WAAP;AACH,CAFM;;;;AAIA,MAAMC,mBAAmB,GAAG,MAAc;EAC7C,OAAO,WAAP;AACH,CAFM;;;;AAIA,MAAMC,uBAAuB,GAAG,MAAc;EACjD,OAAO,gBAAP;AACH,CAFM"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SettingsStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
+
import { Entity } from "dynamodb-toolbox";
|
|
3
|
+
export interface CreateSettingsStorageOperationsParams {
|
|
4
|
+
entity: Entity<any>;
|
|
5
|
+
}
|
|
6
|
+
export declare const createSettingsStorageOperations: ({ entity }: CreateSettingsStorageOperationsParams) => SettingsStorageOperations;
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createSettingsStorageOperations = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
13
|
+
|
|
14
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
15
|
+
|
|
16
|
+
const createPartitionKey = params => {
|
|
17
|
+
const {
|
|
18
|
+
tenant,
|
|
19
|
+
locale
|
|
20
|
+
} = params;
|
|
21
|
+
const parts = [];
|
|
22
|
+
|
|
23
|
+
if (tenant !== false) {
|
|
24
|
+
parts.push(`T#${tenant}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (locale !== false) {
|
|
28
|
+
parts.push(`L#${locale}`);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
parts.push("PB#SETTINGS");
|
|
32
|
+
return parts.join("#");
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* We expect any object that has type property in it.
|
|
36
|
+
* This way we can either receive a settings object or where conditions
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
const createSortKey = params => {
|
|
41
|
+
const {
|
|
42
|
+
type
|
|
43
|
+
} = params;
|
|
44
|
+
|
|
45
|
+
switch (type) {
|
|
46
|
+
case "default":
|
|
47
|
+
return type;
|
|
48
|
+
|
|
49
|
+
default:
|
|
50
|
+
throw new _error.default("Unsupported type for the sort key.", "UNSUPPORTED_TYPE", {
|
|
51
|
+
type
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const createType = () => {
|
|
57
|
+
return "pb.settings";
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const createSettingsStorageOperations = ({
|
|
61
|
+
entity
|
|
62
|
+
}) => {
|
|
63
|
+
const getDefaults = async () => {
|
|
64
|
+
const keys = {
|
|
65
|
+
PK: "PS#SETTINGS",
|
|
66
|
+
SK: "default"
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
const result = await entity.get(keys);
|
|
71
|
+
|
|
72
|
+
if (!result || !result.Item) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const {
|
|
77
|
+
appUrl,
|
|
78
|
+
deliveryUrl
|
|
79
|
+
} = result.Item.data;
|
|
80
|
+
return {
|
|
81
|
+
websiteUrl: deliveryUrl,
|
|
82
|
+
websitePreviewUrl: appUrl
|
|
83
|
+
};
|
|
84
|
+
} catch (ex) {
|
|
85
|
+
throw new _error.default(ex.message || "Could not load default settings record.", ex.code || "DEFAULT_SETTINGS_GET_ERROR", {
|
|
86
|
+
keys
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const get = async params => {
|
|
92
|
+
const {
|
|
93
|
+
where
|
|
94
|
+
} = params;
|
|
95
|
+
const keys = {
|
|
96
|
+
PK: createPartitionKey(where),
|
|
97
|
+
SK: createSortKey(where)
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
try {
|
|
101
|
+
const result = await entity.get(keys);
|
|
102
|
+
|
|
103
|
+
if (!result || !result.Item) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return (0, _cleanup.cleanupItem)(entity, result.Item);
|
|
108
|
+
} catch (ex) {
|
|
109
|
+
throw new _error.default(ex.message || "Could not load settings record.", ex.code || "SETTINGS_GET_ERROR", {
|
|
110
|
+
keys
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const create = async params => {
|
|
116
|
+
const {
|
|
117
|
+
settings
|
|
118
|
+
} = params;
|
|
119
|
+
const keys = {
|
|
120
|
+
PK: createPartitionKey(settings),
|
|
121
|
+
SK: createSortKey(settings)
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
|
|
126
|
+
TYPE: createType()
|
|
127
|
+
}, keys));
|
|
128
|
+
return settings;
|
|
129
|
+
} catch (ex) {
|
|
130
|
+
throw new _error.default(ex.message || "Could not create settings record.", ex.code || "SETTINGS_CREATE_ERROR", {
|
|
131
|
+
settings,
|
|
132
|
+
keys
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
const update = async params => {
|
|
138
|
+
const {
|
|
139
|
+
original,
|
|
140
|
+
settings
|
|
141
|
+
} = params;
|
|
142
|
+
const keys = {
|
|
143
|
+
PK: createPartitionKey(settings),
|
|
144
|
+
SK: createSortKey(settings)
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings), {}, {
|
|
149
|
+
TYPE: createType()
|
|
150
|
+
}, keys));
|
|
151
|
+
return settings;
|
|
152
|
+
} catch (ex) {
|
|
153
|
+
throw new _error.default(ex.message || "Could not update settings record.", ex.code || "SETTINGS_UPDATE_ERROR", {
|
|
154
|
+
original,
|
|
155
|
+
settings,
|
|
156
|
+
keys
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* We can simply return the partition key for this storage operations.
|
|
162
|
+
*/
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
const createCacheKey = params => {
|
|
166
|
+
return createPartitionKey(params);
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
return {
|
|
170
|
+
get,
|
|
171
|
+
getDefaults,
|
|
172
|
+
create,
|
|
173
|
+
update,
|
|
174
|
+
createCacheKey
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
exports.createSettingsStorageOperations = createSettingsStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPartitionKey","params","tenant","locale","parts","push","join","createSortKey","type","WebinyError","createType","createSettingsStorageOperations","entity","getDefaults","keys","PK","SK","result","get","Item","appUrl","deliveryUrl","data","websiteUrl","websitePreviewUrl","ex","message","code","where","cleanupItem","create","settings","put","TYPE","update","original","createCacheKey"],"sources":["index.ts"],"sourcesContent":["import {\n DefaultSettings,\n DefaultSettingsCrudOptions,\n SettingsStorageOperations,\n SettingsStorageOperationsCreateParams,\n SettingsStorageOperationsGetParams,\n SettingsStorageOperationsUpdateParams\n} from \"@webiny/api-page-builder/types\";\nimport { Entity } from \"dynamodb-toolbox\";\nimport { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport WebinyError from \"@webiny/error\";\n\n/**\n * Because it is a possibility that tenant and locale are set as false (for the global settings) we must take\n * it in consideration and create the partition key for the global settings.\n */\ninterface PartitionKeyParams {\n tenant: string | boolean | undefined;\n locale: string | boolean | undefined;\n}\n\nconst createPartitionKey = (params: PartitionKeyParams): string => {\n const { tenant, locale } = params;\n const parts: string[] = [];\n if (tenant !== false) {\n parts.push(`T#${tenant}`);\n }\n if (locale !== false) {\n parts.push(`L#${locale}`);\n }\n parts.push(\"PB#SETTINGS\");\n\n return parts.join(\"#\");\n};\n\n/**\n * We expect any object that has type property in it.\n * This way we can either receive a settings object or where conditions\n */\ninterface SortKeyParams {\n type: string;\n}\nconst createSortKey = (params: SortKeyParams): string => {\n const { type } = params;\n switch (type) {\n case \"default\":\n return type;\n default:\n throw new WebinyError(\"Unsupported type for the sort key.\", \"UNSUPPORTED_TYPE\", {\n type\n });\n }\n};\n\nconst createType = (): string => {\n return \"pb.settings\";\n};\n\nexport interface CreateSettingsStorageOperationsParams {\n entity: Entity<any>;\n}\n\nexport const createSettingsStorageOperations = ({\n entity\n}: CreateSettingsStorageOperationsParams): SettingsStorageOperations => {\n const getDefaults = async (): Promise<DefaultSettings | null> => {\n const keys = {\n PK: \"PS#SETTINGS\",\n SK: \"default\"\n };\n\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n\n const { appUrl, deliveryUrl } = result.Item.data;\n\n return { websiteUrl: deliveryUrl, websitePreviewUrl: appUrl };\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: createSortKey(where)\n };\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load settings record.\",\n ex.code || \"SETTINGS_GET_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const create = async (params: SettingsStorageOperationsCreateParams) => {\n const { settings } = params;\n const keys = {\n PK: createPartitionKey(settings),\n SK: createSortKey(settings)\n };\n try {\n await entity.put({\n ...settings,\n TYPE: createType(),\n ...keys\n });\n\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create settings record.\",\n ex.code || \"SETTINGS_CREATE_ERROR\",\n {\n settings,\n keys\n }\n );\n }\n };\n\n const update = async (params: SettingsStorageOperationsUpdateParams) => {\n const { original, settings } = params;\n const keys = {\n PK: createPartitionKey(settings),\n SK: createSortKey(settings)\n };\n try {\n await entity.put({\n ...settings,\n TYPE: createType(),\n ...keys\n });\n\n return settings;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update settings record.\",\n ex.code || \"SETTINGS_UPDATE_ERROR\",\n {\n original,\n settings,\n keys\n }\n );\n }\n };\n /**\n * We can simply return the partition key for this storage operations.\n */\n const createCacheKey = (params: DefaultSettingsCrudOptions): string => {\n return createPartitionKey(params);\n };\n\n return {\n get,\n getDefaults,\n create,\n update,\n createCacheKey\n };\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SystemStorageOperations } from "@webiny/api-page-builder/types";
|
|
2
|
+
import { Entity } from "dynamodb-toolbox";
|
|
3
|
+
export interface CreateSystemStorageOperationsParams {
|
|
4
|
+
entity: Entity<any>;
|
|
5
|
+
}
|
|
6
|
+
export declare const createSystemStorageOperations: ({ entity }: CreateSystemStorageOperationsParams) => SystemStorageOperations;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createSystemStorageOperations = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
+
|
|
14
|
+
var _cleanup = require("@webiny/db-dynamodb/utils/cleanup");
|
|
15
|
+
|
|
16
|
+
const createPartitionKey = ({
|
|
17
|
+
tenant
|
|
18
|
+
}) => {
|
|
19
|
+
return `T#${tenant}#SYSTEM`;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const createSortKey = () => {
|
|
23
|
+
return "PB";
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const createSystemStorageOperations = ({
|
|
27
|
+
entity
|
|
28
|
+
}) => {
|
|
29
|
+
const get = async params => {
|
|
30
|
+
const {
|
|
31
|
+
tenant
|
|
32
|
+
} = params;
|
|
33
|
+
const keys = {
|
|
34
|
+
PK: createPartitionKey({
|
|
35
|
+
tenant
|
|
36
|
+
}),
|
|
37
|
+
SK: createSortKey()
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
try {
|
|
41
|
+
const result = await entity.get(keys);
|
|
42
|
+
|
|
43
|
+
if (!result || !result.Item) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return (0, _cleanup.cleanupItem)(entity, result.Item);
|
|
48
|
+
} catch (ex) {
|
|
49
|
+
throw new _error.default(ex.message || "Could not load system record.", ex.code || "SYSTEM_GET_ERROR", {
|
|
50
|
+
keys
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const create = async params => {
|
|
56
|
+
const {
|
|
57
|
+
system
|
|
58
|
+
} = params;
|
|
59
|
+
const keys = {
|
|
60
|
+
PK: createPartitionKey(system),
|
|
61
|
+
SK: createSortKey()
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, system), keys));
|
|
66
|
+
return system;
|
|
67
|
+
} catch (ex) {
|
|
68
|
+
throw new _error.default(ex.message || "Could not create system record.", ex.code || "SYSTEM_CREATE_ERROR", {
|
|
69
|
+
system,
|
|
70
|
+
keys
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const update = async params => {
|
|
76
|
+
const {
|
|
77
|
+
original,
|
|
78
|
+
system
|
|
79
|
+
} = params;
|
|
80
|
+
const keys = {
|
|
81
|
+
PK: createPartitionKey(original),
|
|
82
|
+
SK: createSortKey()
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
await entity.put((0, _objectSpread2.default)((0, _objectSpread2.default)({}, system), keys));
|
|
87
|
+
return system;
|
|
88
|
+
} catch (ex) {
|
|
89
|
+
throw new _error.default(ex.message || "Could not update system record.", ex.code || "SYSTEM_UPDATE_ERROR", {
|
|
90
|
+
original,
|
|
91
|
+
system,
|
|
92
|
+
keys
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
get,
|
|
99
|
+
create,
|
|
100
|
+
update
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
exports.createSystemStorageOperations = createSystemStorageOperations;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPartitionKey","tenant","createSortKey","createSystemStorageOperations","entity","get","params","keys","PK","SK","result","Item","cleanupItem","ex","WebinyError","message","code","create","system","put","update","original"],"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 { cleanupItem } from \"@webiny/db-dynamodb/utils/cleanup\";\nimport { Entity } from \"dynamodb-toolbox\";\ninterface PartitionKeyParams {\n tenant: string;\n}\nconst createPartitionKey = ({ tenant }: PartitionKeyParams): string => {\n return `T#${tenant}#SYSTEM`;\n};\n\nconst createSortKey = (): string => {\n return \"PB\";\n};\n\nexport interface CreateSystemStorageOperationsParams {\n entity: Entity<any>;\n}\nexport const createSystemStorageOperations = ({\n entity\n}: CreateSystemStorageOperationsParams): SystemStorageOperations => {\n const get = async (params: SystemStorageOperationsGetParams): Promise<System | null> => {\n const { tenant } = params;\n const keys = {\n PK: createPartitionKey({ tenant }),\n SK: createSortKey()\n };\n try {\n const result = await entity.get(keys);\n if (!result || !result.Item) {\n return null;\n }\n return cleanupItem(entity, result.Item);\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load system record.\",\n ex.code || \"SYSTEM_GET_ERROR\",\n {\n keys\n }\n );\n }\n };\n\n const create = async (params: SystemStorageOperationsCreateParams): Promise<System> => {\n const { system } = params;\n const keys = {\n PK: createPartitionKey(system),\n SK: createSortKey()\n };\n try {\n await entity.put({\n ...system,\n ...keys\n });\n return system;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create system record.\",\n ex.code || \"SYSTEM_CREATE_ERROR\",\n {\n system,\n keys\n }\n );\n }\n };\n\n const update = async (params: SystemStorageOperationsUpdateParams): Promise<System> => {\n const { original, system } = params;\n const keys = {\n PK: createPartitionKey(original),\n SK: createSortKey()\n };\n try {\n await entity.put({\n ...system,\n ...keys\n });\n return system;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update system record.\",\n ex.code || \"SYSTEM_UPDATE_ERROR\",\n {\n original,\n system,\n keys\n }\n );\n }\n };\n\n return {\n get,\n create,\n update\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAQA;;AAKA,MAAMA,kBAAkB,GAAG,CAAC;EAAEC;AAAF,CAAD,KAA4C;EACnE,OAAQ,KAAIA,MAAO,SAAnB;AACH,CAFD;;AAIA,MAAMC,aAAa,GAAG,MAAc;EAChC,OAAO,IAAP;AACH,CAFD;;AAOO,MAAMC,6BAA6B,GAAG,CAAC;EAC1CC;AAD0C,CAAD,KAEuB;EAChE,MAAMC,GAAG,GAAG,MAAOC,MAAP,IAA4E;IACpF,MAAM;MAAEL;IAAF,IAAaK,MAAnB;IACA,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAAC;QAAEC;MAAF,CAAD,CADb;MAETQ,EAAE,EAAEP,aAAa;IAFR,CAAb;;IAIA,IAAI;MACA,MAAMQ,MAAM,GAAG,MAAMN,MAAM,CAACC,GAAP,CAAWE,IAAX,CAArB;;MACA,IAAI,CAACG,MAAD,IAAW,CAACA,MAAM,CAACC,IAAvB,EAA6B;QACzB,OAAO,IAAP;MACH;;MACD,OAAO,IAAAC,oBAAA,EAAYR,MAAZ,EAAoBM,MAAM,CAACC,IAA3B,CAAP;IACH,CAND,CAME,OAAOE,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,+BADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,kBAFT,EAGF;QACIT;MADJ,CAHE,CAAN;IAOH;EACJ,CArBD;;EAuBA,MAAMU,MAAM,GAAG,MAAOX,MAAP,IAAwE;IACnF,MAAM;MAAEY;IAAF,IAAaZ,MAAnB;IACA,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAACkB,MAAD,CADb;MAETT,EAAE,EAAEP,aAAa;IAFR,CAAb;;IAIA,IAAI;MACA,MAAME,MAAM,CAACe,GAAP,6DACCD,MADD,GAECX,IAFD,EAAN;MAIA,OAAOW,MAAP;IACH,CAND,CAME,OAAOL,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;QACIE,MADJ;QAEIX;MAFJ,CAHE,CAAN;IAQH;EACJ,CAtBD;;EAwBA,MAAMa,MAAM,GAAG,MAAOd,MAAP,IAAwE;IACnF,MAAM;MAAEe,QAAF;MAAYH;IAAZ,IAAuBZ,MAA7B;IACA,MAAMC,IAAI,GAAG;MACTC,EAAE,EAAER,kBAAkB,CAACqB,QAAD,CADb;MAETZ,EAAE,EAAEP,aAAa;IAFR,CAAb;;IAIA,IAAI;MACA,MAAME,MAAM,CAACe,GAAP,6DACCD,MADD,GAECX,IAFD,EAAN;MAIA,OAAOW,MAAP;IACH,CAND,CAME,OAAOL,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,iCADZ,EAEFF,EAAE,CAACG,IAAH,IAAW,qBAFT,EAGF;QACIK,QADJ;QAEIH,MAFJ;QAGIX;MAHJ,CAHE,CAAN;IASH;EACJ,CAvBD;;EAyBA,OAAO;IACHF,GADG;IAEHY,MAFG;IAGHG;EAHG,CAAP;AAKH,CAhFM"}
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@webiny/api-page-builder-so-ddb-es",
|
|
3
|
+
"version": "0.0.0-ee-vpcs.549378cf03",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"@webiny/api-page-builder",
|
|
7
|
+
"storage-operations",
|
|
8
|
+
"dynamodb",
|
|
9
|
+
"pb:ddb-es"
|
|
10
|
+
],
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/webiny/webiny-js.git",
|
|
14
|
+
"directory": "packages/api-page-builder-so-ddb-es"
|
|
15
|
+
},
|
|
16
|
+
"author": "Webiny Ltd",
|
|
17
|
+
"description": "The DynamoDB + Elasticsearch storage operations Webiny Page Builder API.",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@babel/runtime": "7.19.0",
|
|
21
|
+
"@webiny/api-elasticsearch": "0.0.0-ee-vpcs.549378cf03",
|
|
22
|
+
"@webiny/api-page-builder": "0.0.0-ee-vpcs.549378cf03",
|
|
23
|
+
"@webiny/api-upgrade": "0.0.0-ee-vpcs.549378cf03",
|
|
24
|
+
"@webiny/db-dynamodb": "0.0.0-ee-vpcs.549378cf03",
|
|
25
|
+
"@webiny/error": "0.0.0-ee-vpcs.549378cf03",
|
|
26
|
+
"@webiny/handler-db": "0.0.0-ee-vpcs.549378cf03",
|
|
27
|
+
"@webiny/plugins": "0.0.0-ee-vpcs.549378cf03",
|
|
28
|
+
"@webiny/utils": "0.0.0-ee-vpcs.549378cf03",
|
|
29
|
+
"dataloader": "2.1.0",
|
|
30
|
+
"dynamodb-toolbox": "0.3.5",
|
|
31
|
+
"elastic-ts": "0.8.0",
|
|
32
|
+
"lodash": "4.17.21"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@babel/cli": "^7.19.3",
|
|
36
|
+
"@babel/core": "^7.19.3",
|
|
37
|
+
"@babel/preset-env": "^7.19.4",
|
|
38
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
39
|
+
"@elastic/elasticsearch": "7.12.0",
|
|
40
|
+
"@elastic/elasticsearch-mock": "0.3.0",
|
|
41
|
+
"@webiny/api": "^0.0.0-ee-vpcs.549378cf03",
|
|
42
|
+
"@webiny/api-dynamodb-to-elasticsearch": "^0.0.0-ee-vpcs.549378cf03",
|
|
43
|
+
"@webiny/api-security": "^0.0.0-ee-vpcs.549378cf03",
|
|
44
|
+
"@webiny/api-tenancy": "^0.0.0-ee-vpcs.549378cf03",
|
|
45
|
+
"@webiny/cli": "^0.0.0-ee-vpcs.549378cf03",
|
|
46
|
+
"@webiny/handler-aws": "^0.0.0-ee-vpcs.549378cf03",
|
|
47
|
+
"@webiny/handler-graphql": "^0.0.0-ee-vpcs.549378cf03",
|
|
48
|
+
"@webiny/project-utils": "^0.0.0-ee-vpcs.549378cf03",
|
|
49
|
+
"jest": "^28.1.0",
|
|
50
|
+
"jest-dynalite": "^3.2.0",
|
|
51
|
+
"jest-environment-node": "^27.0.6",
|
|
52
|
+
"rimraf": "^3.0.2",
|
|
53
|
+
"ttypescript": "^1.5.12",
|
|
54
|
+
"typescript": "4.7.4"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public",
|
|
58
|
+
"directory": "dist"
|
|
59
|
+
},
|
|
60
|
+
"scripts": {
|
|
61
|
+
"build": "yarn webiny run build",
|
|
62
|
+
"watch": "yarn webiny run watch"
|
|
63
|
+
},
|
|
64
|
+
"gitHead": "549378cf03fcd27845fc3fa23d1dc6b32896f630"
|
|
65
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.BlockCategoryDynamoDbElasticFieldPlugin = void 0;
|
|
9
|
+
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
12
|
+
var _FieldPlugin = require("@webiny/db-dynamodb/plugins/definitions/FieldPlugin");
|
|
13
|
+
|
|
14
|
+
class BlockCategoryDynamoDbElasticFieldPlugin extends _FieldPlugin.FieldPlugin {}
|
|
15
|
+
|
|
16
|
+
exports.BlockCategoryDynamoDbElasticFieldPlugin = BlockCategoryDynamoDbElasticFieldPlugin;
|
|
17
|
+
(0, _defineProperty2.default)(BlockCategoryDynamoDbElasticFieldPlugin, "type", "pageBuilder.dynamodb.es.field.blockCategory");
|