@webiny/api-headless-cms 6.4.5 → 6.6.0-alpha.0
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/HeadlessCmsContextualSchema.d.ts +16 -0
- package/HeadlessCmsContextualSchema.js +32 -0
- package/HeadlessCmsContextualSchema.js.map +1 -0
- package/HeadlessCmsEndpointConfig.d.ts +10 -0
- package/HeadlessCmsEndpointConfig.js +5 -0
- package/HeadlessCmsEndpointConfig.js.map +1 -0
- package/HeadlessCmsFeature.d.ts +10 -0
- package/HeadlessCmsFeature.js +192 -0
- package/HeadlessCmsFeature.js.map +1 -0
- package/createCmsRoute.d.ts +21 -0
- package/createCmsRoute.js +49 -0
- package/createCmsRoute.js.map +1 -0
- package/crud/contentEntry/entryDataValidation.d.ts +1 -1
- package/crud/contentEntry/entryDataValidation.js +2 -15
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/references/validateEntries.d.ts +1 -1
- package/crud/contentEntry/references/validateEntries.js +17 -7
- package/crud/contentEntry/references/validateEntries.js.map +1 -1
- package/crud/contentEntry.crud.js +22 -20
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel.crud.js +8 -6
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup.crud.js +7 -5
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/domain/contentModel/schemas.d.ts +6 -6
- package/domain/contentModel/schemas.js +1 -1
- package/domain/contentModel/schemas.js.map +1 -1
- package/domain/contentModel/validation/modelFields.js +21 -15
- package/domain/contentModel/validation/modelFields.js.map +1 -1
- package/export/abstractions.d.ts +9 -0
- package/export/abstractions.js +6 -0
- package/export/abstractions.js.map +1 -0
- package/export/crud/exporting.js +8 -2
- package/export/crud/exporting.js.map +1 -1
- package/export/crud/importing.js +13 -4
- package/export/crud/importing.js.map +1 -1
- package/export/crud/imports/importGroups.js +23 -23
- package/export/crud/imports/importGroups.js.map +1 -1
- package/export/crud/imports/importModels.js +25 -22
- package/export/crud/imports/importModels.js.map +1 -1
- package/export/graphql/index.d.ts +2 -3
- package/export/graphql/index.js +6 -10
- package/export/graphql/index.js.map +1 -1
- package/exports/api/cms/storage.d.ts +0 -1
- package/exports/api/cms/storage.js +0 -1
- package/features/contentEntry/CreateEntry/CreateEntryRepository.d.ts +6 -4
- package/features/contentEntry/CreateEntry/CreateEntryRepository.js +7 -8
- package/features/contentEntry/CreateEntry/CreateEntryRepository.js.map +1 -1
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -1
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +2 -3
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.d.ts +6 -4
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js +7 -8
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js.map +1 -1
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -1
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +2 -3
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntry/DeleteEntryRepository.d.ts +6 -4
- package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js +7 -8
- package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js.map +1 -1
- package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +3 -1
- package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +2 -3
- package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.d.ts +6 -4
- package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js +7 -8
- package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js.map +1 -1
- package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +3 -1
- package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -3
- package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.d.ts +3 -3
- package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js +5 -5
- package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js.map +1 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.d.ts +6 -4
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js +7 -8
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js.map +1 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +3 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +2 -3
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.d.ts +6 -4
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js +7 -8
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js.map +1 -1
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +3 -1
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +2 -3
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
- package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.d.ts +6 -4
- package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js +7 -8
- package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js.map +1 -1
- package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.d.ts +3 -1
- package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js +2 -3
- package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js.map +1 -1
- package/features/contentEntry/GetEntry/GetEntryUseCase.d.ts +3 -1
- package/features/contentEntry/GetEntry/GetEntryUseCase.js +2 -3
- package/features/contentEntry/GetEntry/GetEntryUseCase.js.map +1 -1
- package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js +2 -3
- package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js.map +1 -1
- package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.d.ts +6 -4
- package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js +7 -8
- package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js.map +1 -1
- package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.d.ts +3 -1
- package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js +2 -3
- package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js.map +1 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.d.ts +3 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js +2 -3
- package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js.map +1 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.d.ts +6 -4
- package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js +7 -8
- package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js.map +1 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js +2 -3
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js.map +1 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.d.ts +3 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js +1 -3
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js.map +1 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js +2 -3
- package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js.map +1 -1
- package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.d.ts +3 -1
- package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js +2 -3
- package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js.map +1 -1
- package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.d.ts +6 -4
- package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js +7 -8
- package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js.map +1 -1
- package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js +2 -3
- package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js.map +1 -1
- package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.d.ts +6 -4
- package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js +7 -8
- package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js.map +1 -1
- package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.d.ts +3 -1
- package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js +2 -3
- package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js.map +1 -1
- package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.d.ts +6 -4
- package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js +7 -8
- package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js.map +1 -1
- package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js +2 -3
- package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js.map +1 -1
- package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.d.ts +6 -4
- package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js +7 -8
- package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js.map +1 -1
- package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js +1 -3
- package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js.map +1 -1
- package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.d.ts +6 -4
- package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js +7 -8
- package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js.map +1 -1
- package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.d.ts +3 -1
- package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js +2 -3
- package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js.map +1 -1
- package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js +1 -3
- package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js.map +1 -1
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.d.ts +6 -4
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js +7 -8
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js.map +1 -1
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +6 -2
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +8 -6
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
- package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.d.ts +3 -1
- package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js +1 -3
- package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js.map +1 -1
- package/features/contentEntry/ListEntries/ListEntriesRepository.d.ts +6 -4
- package/features/contentEntry/ListEntries/ListEntriesRepository.js +7 -8
- package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
- package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +3 -1
- package/features/contentEntry/ListEntries/ListEntriesUseCase.js +2 -3
- package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
- package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.d.ts +3 -1
- package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js +1 -3
- package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js.map +1 -1
- package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.d.ts +3 -1
- package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js +1 -3
- package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js.map +1 -1
- package/features/contentEntry/MoveEntry/MoveEntryRepository.d.ts +6 -4
- package/features/contentEntry/MoveEntry/MoveEntryRepository.js +7 -8
- package/features/contentEntry/MoveEntry/MoveEntryRepository.js.map +1 -1
- package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +3 -1
- package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +2 -3
- package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
- package/features/contentEntry/PublishEntry/PublishEntryRepository.d.ts +6 -4
- package/features/contentEntry/PublishEntry/PublishEntryRepository.js +7 -8
- package/features/contentEntry/PublishEntry/PublishEntryRepository.js.map +1 -1
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +3 -1
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -3
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/RepublishEntry/RepublishEntryRepository.d.ts +8 -4
- package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js +11 -9
- package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js.map +1 -1
- package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +3 -1
- package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -3
- package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.d.ts +6 -4
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js +7 -8
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js.map +1 -1
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +3 -1
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -3
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
- package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.d.ts +6 -4
- package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js +7 -8
- package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js.map +1 -1
- package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +3 -1
- package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -3
- package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/UpdateEntry/UpdateEntryRepository.d.ts +6 -4
- package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js +7 -8
- package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js.map +1 -1
- package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -1
- package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +2 -3
- package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
- package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +3 -1
- package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +2 -3
- package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -1
- package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.d.ts +3 -1
- package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js +2 -3
- package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js.map +1 -1
- package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js +2 -4
- package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.d.ts +4 -4
- package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js +4 -8
- package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js +1 -3
- package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js +1 -3
- package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js +1 -3
- package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js.map +1 -1
- package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.d.ts +3 -1
- package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js +2 -4
- package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js.map +1 -1
- package/features/contentModel/ContentModelFeature.js +2 -0
- package/features/contentModel/ContentModelFeature.js.map +1 -1
- package/features/contentModel/CreateModel/CreateModelRepository.d.ts +4 -3
- package/features/contentModel/CreateModel/CreateModelRepository.js +6 -5
- package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +4 -3
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +6 -5
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
- package/features/contentModel/DeleteModel/DeleteModelRepository.d.ts +3 -3
- package/features/contentModel/DeleteModel/DeleteModelRepository.js +5 -5
- package/features/contentModel/DeleteModel/DeleteModelRepository.js.map +1 -1
- package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.d.ts +1 -0
- package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js +11 -8
- package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js.map +1 -1
- package/features/contentModel/UpdateModel/UpdateModelRepository.d.ts +6 -3
- package/features/contentModel/UpdateModel/UpdateModelRepository.js +11 -7
- package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
- package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.d.ts +16 -0
- package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js +51 -0
- package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js.map +1 -0
- package/features/contentModel/ValuesSelectionGenerator/abstractions.d.ts +8 -0
- package/features/contentModel/ValuesSelectionGenerator/abstractions.js +5 -0
- package/features/contentModel/ValuesSelectionGenerator/abstractions.js.map +1 -0
- package/features/contentModel/ValuesSelectionGenerator/feature.d.ts +4 -0
- package/features/contentModel/ValuesSelectionGenerator/feature.js +11 -0
- package/features/contentModel/ValuesSelectionGenerator/feature.js.map +1 -0
- package/features/contentModel/ValuesSelectionGenerator/index.d.ts +1 -0
- package/features/contentModel/ValuesSelectionGenerator/index.js +1 -0
- package/features/contentModel/shared/ModelsFetcher.d.ts +3 -3
- package/features/contentModel/shared/ModelsFetcher.js +5 -5
- package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
- package/features/contentModel/shared/PluginModelsProvider.d.ts +5 -4
- package/features/contentModel/shared/PluginModelsProvider.js +11 -8
- package/features/contentModel/shared/PluginModelsProvider.js.map +1 -1
- package/features/contentModel/shared/abstractions.d.ts +10 -0
- package/features/contentModel/shared/abstractions.js +2 -1
- package/features/contentModel/shared/abstractions.js.map +1 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +8 -4
- package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +13 -11
- package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +3 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +2 -3
- package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.d.ts +8 -4
- package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js +11 -9
- package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js.map +1 -1
- package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +3 -1
- package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +2 -3
- package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +6 -4
- package/features/contentModelGroup/GetGroup/GetGroupRepository.js +9 -9
- package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
- package/features/contentModelGroup/GetGroup/GetGroupUseCase.d.ts +3 -1
- package/features/contentModelGroup/GetGroup/GetGroupUseCase.js +2 -3
- package/features/contentModelGroup/GetGroup/GetGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +6 -4
- package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +9 -9
- package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
- package/features/contentModelGroup/ListGroups/ListGroupsUseCase.d.ts +3 -1
- package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js +2 -3
- package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js.map +1 -1
- package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.d.ts +6 -4
- package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js +7 -8
- package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js.map +1 -1
- package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +3 -1
- package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +2 -3
- package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +6 -4
- package/features/contentModelGroup/shared/PluginGroupsProvider.js +13 -11
- package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
- package/features/contentModelGroup/shared/abstractions.d.ts +10 -0
- package/features/contentModelGroup/shared/abstractions.js +2 -1
- package/features/contentModelGroup/shared/abstractions.js.map +1 -1
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +2 -2
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -1
- package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -1
- package/features/graphql/fields/base/RefToGraphQL.d.ts +1 -1
- package/features/graphql/fields/base/RefToGraphQL.js +3 -1
- package/features/graphql/fields/base/RefToGraphQL.js.map +1 -1
- package/features/graphql/fields/base/richText/richTextResolver.d.ts +1 -1
- package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -1
- package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +1 -3
- package/features/modelBuilder/fields/BaseFieldBuilder.js +0 -4
- package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -1
- package/features/modelBuilder/fields/DataFieldBuilder.d.ts +12 -18
- package/features/modelBuilder/fields/DataFieldBuilder.js +1 -2
- package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -1
- package/features/modelBuilder/fields/DynamicZoneFieldType.js +3 -8
- package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
- package/features/modelBuilder/fields/TextFieldType.d.ts +3 -1
- package/features/modelBuilder/fields/TextFieldType.js +1 -3
- package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
- package/features/modelBuilder/fields/UiAlertFieldType.js +1 -2
- package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -1
- package/features/modelBuilder/fields/UiSeparatorFieldType.js +1 -2
- package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -1
- package/features/modelBuilder/fields/UiTabsFieldType.d.ts +1 -2
- package/features/modelBuilder/fields/UiTabsFieldType.js +3 -6
- package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -1
- package/features/shared/abstractions.d.ts +11 -15
- package/features/shared/abstractions.js +3 -3
- package/features/shared/abstractions.js.map +1 -1
- package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/CreateEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/ListEntriesStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/MoveEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/MoveToBinStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/PublishEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js +5 -0
- package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/group/CreateGroupStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/group/CreateGroupStorageOperation.js +5 -0
- package/features/shared/storageOperations/group/CreateGroupStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/group/DeleteGroupStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js +5 -0
- package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/group/GetGroupStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/group/GetGroupStorageOperation.js +5 -0
- package/features/shared/storageOperations/group/GetGroupStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/group/ListGroupsStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/group/ListGroupsStorageOperation.js +5 -0
- package/features/shared/storageOperations/group/ListGroupsStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/group/UpdateGroupStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js +5 -0
- package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/index.d.ts +32 -0
- package/features/shared/storageOperations/index.js +32 -0
- package/features/shared/storageOperations/model/CreateModelStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/model/CreateModelStorageOperation.js +5 -0
- package/features/shared/storageOperations/model/CreateModelStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/model/DeleteModelStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/model/DeleteModelStorageOperation.js +5 -0
- package/features/shared/storageOperations/model/DeleteModelStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/model/GetModelStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/model/GetModelStorageOperation.js +5 -0
- package/features/shared/storageOperations/model/GetModelStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/model/ListModelsStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/model/ListModelsStorageOperation.js +5 -0
- package/features/shared/storageOperations/model/ListModelsStorageOperation.js.map +1 -0
- package/features/shared/storageOperations/model/UpdateModelStorageOperation.d.ts +8 -0
- package/features/shared/storageOperations/model/UpdateModelStorageOperation.js +5 -0
- package/features/shared/storageOperations/model/UpdateModelStorageOperation.js.map +1 -0
- package/fieldConverters/abstractions.d.ts +14 -0
- package/fieldConverters/abstractions.js +13 -0
- package/fieldConverters/abstractions.js.map +1 -0
- package/fieldConverters/index.d.ts +1 -1
- package/graphql/CmsGraphQLSchemaFactory.d.ts +8 -0
- package/graphql/CmsGraphQLSchemaFactory.js +5 -0
- package/graphql/CmsGraphQLSchemaFactory.js.map +1 -0
- package/graphql/CmsSchemaExecutor.d.ts +10 -0
- package/graphql/CmsSchemaExecutor.js +5 -0
- package/graphql/CmsSchemaExecutor.js.map +1 -0
- package/graphql/buildSchemaPlugins.d.ts +2 -1
- package/graphql/buildSchemaPlugins.js +1 -3
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/checkEndpointAccess.js +5 -2
- package/graphql/checkEndpointAccess.js.map +1 -1
- package/graphql/createExecutableSchema.d.ts +1 -1
- package/graphql/createExecutableSchema.js +1 -1
- package/graphql/createExecutableSchema.js.map +1 -1
- package/graphql/generateSchema.d.ts +2 -1
- package/graphql/generateSchema.js +14 -5
- package/graphql/generateSchema.js.map +1 -1
- package/graphql/getSchema.js +7 -2
- package/graphql/getSchema.js.map +1 -1
- package/graphql/scalars/RevisionIdScalarPlugin.d.ts +1 -1
- package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +1 -6
- package/graphql/schema/baseContentSchema.js +5 -8
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +2 -2
- package/graphql/schema/baseSchema.js +6 -41
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/cms/CmsBaseErrorTypeFactory.d.ts +14 -0
- package/graphql/schema/cms/CmsBaseErrorTypeFactory.js +21 -0
- package/graphql/schema/cms/CmsBaseErrorTypeFactory.js.map +1 -0
- package/graphql/schema/cms/createEntryResolver.js +2 -2
- package/graphql/schema/cms/createEntryResolver.js.map +1 -1
- package/graphql/schema/cms/deleteEntryResolver.js +2 -2
- package/graphql/schema/cms/deleteEntryResolver.js.map +1 -1
- package/graphql/schema/cms/getEntryResolver.js +2 -2
- package/graphql/schema/cms/getEntryResolver.js.map +1 -1
- package/graphql/schema/cms/helpers/getModel.d.ts +0 -3
- package/graphql/schema/cms/helpers/getModel.js +5 -3
- package/graphql/schema/cms/helpers/getModel.js.map +1 -1
- package/graphql/schema/cms/helpers/transformWhereToNested.js +17 -39
- package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -1
- package/graphql/schema/cms/listEntriesResolver.js +2 -2
- package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
- package/graphql/schema/cms/publishEntryResolver.js +2 -2
- package/graphql/schema/cms/publishEntryResolver.js.map +1 -1
- package/graphql/schema/cms/resolvers/createEntry.d.ts +2 -2
- package/graphql/schema/cms/resolvers/createEntry.js +1 -1
- package/graphql/schema/cms/resolvers/createEntry.js.map +1 -1
- package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +2 -2
- package/graphql/schema/cms/resolvers/deleteEntryRevision.js +1 -1
- package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -1
- package/graphql/schema/cms/resolvers/getEntry.d.ts +2 -2
- package/graphql/schema/cms/resolvers/getEntry.js +1 -1
- package/graphql/schema/cms/resolvers/getEntry.js.map +1 -1
- package/graphql/schema/cms/resolvers/listEntries.d.ts +2 -2
- package/graphql/schema/cms/resolvers/listEntries.js +1 -1
- package/graphql/schema/cms/resolvers/listEntries.js.map +1 -1
- package/graphql/schema/cms/resolvers/mutationCms.d.ts +2 -2
- package/graphql/schema/cms/resolvers/mutationCms.js +1 -1
- package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -1
- package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +2 -2
- package/graphql/schema/cms/resolvers/publishEntryRevision.js +1 -1
- package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -1
- package/graphql/schema/cms/resolvers/queryCms.d.ts +2 -2
- package/graphql/schema/cms/resolvers/queryCms.js +1 -1
- package/graphql/schema/cms/resolvers/queryCms.js.map +1 -1
- package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +2 -2
- package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +1 -1
- package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -1
- package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +2 -2
- package/graphql/schema/cms/resolvers/updateEntryRevision.js +1 -1
- package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -1
- package/graphql/schema/cms/typeDefs/mutation.d.ts +2 -2
- package/graphql/schema/cms/typeDefs/mutation.js +1 -1
- package/graphql/schema/cms/typeDefs/mutation.js.map +1 -1
- package/graphql/schema/cms/typeDefs/query.d.ts +2 -2
- package/graphql/schema/cms/typeDefs/query.js +1 -1
- package/graphql/schema/cms/typeDefs/query.js.map +1 -1
- package/graphql/schema/cms/typeDefs/responses.d.ts +2 -2
- package/graphql/schema/cms/typeDefs/responses.js +1 -1
- package/graphql/schema/cms/typeDefs/responses.js.map +1 -1
- package/graphql/schema/cms/unpublishEntryResolver.js +2 -2
- package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -1
- package/graphql/schema/cms/updateEntryResolver.js +2 -2
- package/graphql/schema/cms/updateEntryResolver.js.map +1 -1
- package/graphql/schema/contentEntries.js +43 -32
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +39 -18
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +37 -16
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -2
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +5 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +5 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +9 -4
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +5 -3
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +11 -6
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +5 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +5 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +5 -3
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +5 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveListDeleted.js +5 -3
- package/graphql/schema/resolvers/manage/resolveListDeleted.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveMove.js +4 -2
- package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +5 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +5 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js +5 -3
- package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +5 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +5 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js +5 -3
- package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveValidate.js +5 -3
- package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +6 -3
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +5 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +5 -2
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +5 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/singular/resolveGet.js +1 -1
- package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/singular/resolveUpdate.js +1 -1
- package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +2 -1
- package/graphql/schema/schemaPlugins.js +2 -4
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/index.d.ts +7 -6
- package/index.js +4 -22
- package/legacy/abstractions.js.map +1 -1
- package/package.json +22 -27
- package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.d.ts +2 -2
- package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js +1 -1
- package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js.map +1 -1
- package/plugins/index.d.ts +0 -1
- package/plugins/index.js +0 -1
- package/types/fields/dynamicZoneField.d.ts +2 -2
- package/types/modelField.d.ts +1 -1
- package/types/types.d.ts +10 -183
- package/types/types.js.map +1 -1
- package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.d.ts +28 -0
- package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js +324 -0
- package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js.map +1 -0
- package/utils/contentModelToJsonSchema/index.d.ts +2 -0
- package/utils/contentModelToJsonSchema/index.js +1 -0
- package/utils/contentModelToJsonSchema/types.d.ts +24 -0
- package/utils/contentModelToJsonSchema/types.js +0 -0
- package/utils/converters/ConverterCollection.d.ts +2 -2
- package/utils/converters/ConverterCollection.js +1 -3
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -2
- package/utils/converters/valueKeyFromStorageConverter.js +2 -2
- package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +4 -2
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/converters/valueKeyToStorageConverter.d.ts +2 -2
- package/utils/converters/valueKeyToStorageConverter.js +2 -2
- package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +2 -2
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/isHeadlessCmsReady.d.ts +1 -1
- package/utils/isHeadlessCmsReady.js +3 -2
- package/utils/isHeadlessCmsReady.js.map +1 -1
- package/abstractions/entryHooks/OnEntryBeforeCreate.d.ts +0 -8
- package/abstractions/entryHooks/OnEntryBeforeCreate.js +0 -5
- package/abstractions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
- package/abstractions/entryHooks/index.d.ts +0 -1
- package/abstractions/entryHooks/index.js +0 -1
- package/abstractions/index.d.ts +0 -1
- package/abstractions/index.js +0 -1
- package/context.d.ts +0 -3
- package/context.js +0 -131
- package/context.js.map +0 -1
- package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +0 -4
- package/extensions/entryHooks/OnEntryBeforeCreate.js +0 -21
- package/extensions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
- package/extensions/entryHooks/index.d.ts +0 -1
- package/extensions/entryHooks/index.js +0 -1
- package/extensions/index.d.ts +0 -5
- package/extensions/index.js +0 -7
- package/extensions/index.js.map +0 -1
- package/graphql/graphQLHandlerFactory.d.ts +0 -5
- package/graphql/graphQLHandlerFactory.js +0 -22
- package/graphql/graphQLHandlerFactory.js.map +0 -1
- package/graphql/handleRequest.d.ts +0 -11
- package/graphql/handleRequest.js +0 -62
- package/graphql/handleRequest.js.map +0 -1
- package/graphql/index.d.ts +0 -4
- package/graphql/index.js +0 -11
- package/graphql/index.js.map +0 -1
- package/graphql/schema/cms/index.d.ts +0 -2
- package/graphql/schema/cms/index.js +0 -24
- package/graphql/schema/cms/index.js.map +0 -1
- package/index.js.map +0 -1
- package/parameters/context.d.ts +0 -2
- package/parameters/context.js +0 -7
- package/parameters/context.js.map +0 -1
- package/parameters/header.d.ts +0 -2
- package/parameters/header.js +0 -13
- package/parameters/header.js.map +0 -1
- package/parameters/index.d.ts +0 -3
- package/parameters/index.js +0 -3
- package/parameters/path.d.ts +0 -2
- package/parameters/path.js +0 -12
- package/parameters/path.js.map +0 -1
- package/plugins/CmsParametersPlugin.d.ts +0 -18
- package/plugins/CmsParametersPlugin.js +0 -16
- package/plugins/CmsParametersPlugin.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { DeleteModelUseCase } from "./abstractions.js";
|
|
3
|
-
import { CmsContext } from "../../shared/abstractions.js";
|
|
3
|
+
import { CmsContext, HeadlessCms } from "../../shared/abstractions.js";
|
|
4
4
|
import { CMS_MODEL_SINGLETON_TAG } from "../../../constants.js";
|
|
5
5
|
import { ModelCannotDeleteHasEntriesError, ModelCannotDeleteHasEntriesInTrashError, ModelPersistenceError, ModelValidationError } from "../../../domain/contentModel/errors.js";
|
|
6
6
|
class DeleteModelWithEntryCleanupImpl {
|
|
@@ -8,8 +8,11 @@ class DeleteModelWithEntryCleanupImpl {
|
|
|
8
8
|
this.cmsContext = cmsContext;
|
|
9
9
|
this.decoratee = decoratee;
|
|
10
10
|
}
|
|
11
|
+
get cms() {
|
|
12
|
+
return this.cmsContext.container.resolve(HeadlessCms);
|
|
13
|
+
}
|
|
11
14
|
async execute(modelId) {
|
|
12
|
-
const model = await this.
|
|
15
|
+
const model = await this.cms.getModel(modelId);
|
|
13
16
|
const tags = Array.isArray(model.tags) ? model.tags : [];
|
|
14
17
|
if (tags.includes(CMS_MODEL_SINGLETON_TAG)) {
|
|
15
18
|
try {
|
|
@@ -24,26 +27,26 @@ class DeleteModelWithEntryCleanupImpl {
|
|
|
24
27
|
return this.decoratee.execute(modelId);
|
|
25
28
|
}
|
|
26
29
|
async deleteSingletonEntries(model) {
|
|
27
|
-
const [latestEntries] = await this.
|
|
30
|
+
const [latestEntries] = await this.cms.listLatestEntries(model, {
|
|
28
31
|
limit: 10000
|
|
29
32
|
});
|
|
30
|
-
for (const item of latestEntries)await this.
|
|
33
|
+
for (const item of latestEntries)await this.cms.deleteEntry(model, item.id, {
|
|
31
34
|
permanently: true
|
|
32
35
|
});
|
|
33
|
-
const [deletedEntries] = await this.
|
|
36
|
+
const [deletedEntries] = await this.cms.listDeletedEntries(model, {
|
|
34
37
|
limit: 10000
|
|
35
38
|
});
|
|
36
|
-
for (const item of deletedEntries)await this.
|
|
39
|
+
for (const item of deletedEntries)await this.cms.deleteEntry(model, item.id, {
|
|
37
40
|
permanently: true
|
|
38
41
|
});
|
|
39
42
|
}
|
|
40
43
|
async canDelete(model) {
|
|
41
44
|
try {
|
|
42
|
-
const [latestEntries] = await this.
|
|
45
|
+
const [latestEntries] = await this.cms.listLatestEntries(model, {
|
|
43
46
|
limit: 1
|
|
44
47
|
});
|
|
45
48
|
if (latestEntries.length > 0) return Result.fail(new ModelCannotDeleteHasEntriesError(model.modelId));
|
|
46
|
-
const [deletedEntries] = await this.
|
|
49
|
+
const [deletedEntries] = await this.cms.listDeletedEntries(model, {
|
|
47
50
|
limit: 1
|
|
48
51
|
});
|
|
49
52
|
if (deletedEntries.length > 0) return Result.fail(new ModelCannotDeleteHasEntriesInTrashError(model.modelId));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js","sources":["../../../../src/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteModelUseCase } from \"./abstractions.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"~/constants.js\";\nimport {\n ModelCannotDeleteHasEntriesError,\n ModelCannotDeleteHasEntriesInTrashError,\n ModelPersistenceError,\n ModelValidationError\n} from \"~/domain/contentModel/errors.js\";\nimport { CmsModel } from \"~/types/model.js\";\n\n/**\n * DeleteModelWithEntryCleanup - Decorator that handles entry cleanup/validation before deletion.\n *\n * Responsibilities:\n * 1. For singleton models: Delete all entries (latest + deleted)\n * 2. For regular models: Check if there are any entries - if yes, throw error\n * 3. Only proceed to the base use case if validations pass\n */\nclass DeleteModelWithEntryCleanupImpl implements DeleteModelUseCase.Interface {\n public constructor(\n private cmsContext: CmsContext.Interface,\n private decoratee: DeleteModelUseCase.Interface\n ) {}\n\n async execute(modelId: string): Promise<Result<void, DeleteModelUseCase.Error>> {\n // First, get the model through the decorated use case's flow (up to before deletion)\n // We need to perform validation before the actual deletion happens\n\n // Get the model from context to check entries\n const model = await this.
|
|
1
|
+
{"version":3,"file":"features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js","sources":["../../../../src/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteModelUseCase } from \"./abstractions.js\";\nimport { CmsContext, HeadlessCms } from \"~/features/shared/abstractions.js\";\nimport { CMS_MODEL_SINGLETON_TAG } from \"~/constants.js\";\nimport {\n ModelCannotDeleteHasEntriesError,\n ModelCannotDeleteHasEntriesInTrashError,\n ModelPersistenceError,\n ModelValidationError\n} from \"~/domain/contentModel/errors.js\";\nimport { CmsModel } from \"~/types/model.js\";\n\n/**\n * DeleteModelWithEntryCleanup - Decorator that handles entry cleanup/validation before deletion.\n *\n * Responsibilities:\n * 1. For singleton models: Delete all entries (latest + deleted)\n * 2. For regular models: Check if there are any entries - if yes, throw error\n * 3. Only proceed to the base use case if validations pass\n */\nclass DeleteModelWithEntryCleanupImpl implements DeleteModelUseCase.Interface {\n public constructor(\n private cmsContext: CmsContext.Interface,\n private decoratee: DeleteModelUseCase.Interface\n ) {}\n\n private get cms(): HeadlessCms.Interface {\n return this.cmsContext.container.resolve(HeadlessCms);\n }\n\n async execute(modelId: string): Promise<Result<void, DeleteModelUseCase.Error>> {\n // First, get the model through the decorated use case's flow (up to before deletion)\n // We need to perform validation before the actual deletion happens\n\n // Get the model from context to check entries\n const model = await this.cms.getModel(modelId);\n\n const tags = Array.isArray(model.tags) ? model.tags : [];\n\n // Handle singleton models: delete all entries\n if (tags.includes(CMS_MODEL_SINGLETON_TAG)) {\n try {\n await this.deleteSingletonEntries(model);\n } catch (error) {\n return Result.fail(\n new ModelValidationError(\n `Failed to delete singleton entries: ${(error as Error).message}`\n )\n );\n }\n\n // Proceed with the actual deletion\n return this.decoratee.execute(modelId);\n }\n\n // Regular models\n const canDelete = await this.canDelete(model);\n if (canDelete.isFail()) {\n return Result.fail(canDelete.error);\n }\n\n // Proceed with the actual deletion\n return this.decoratee.execute(modelId);\n }\n\n private async deleteSingletonEntries(model: any): Promise<void> {\n // Delete all latest entries\n const [latestEntries] = await this.cms.listLatestEntries(model, {\n limit: 10000\n });\n\n for (const item of latestEntries) {\n await this.cms.deleteEntry(model, item.id, {\n permanently: true\n });\n }\n\n // Delete all deleted entries (trash)\n const [deletedEntries] = await this.cms.listDeletedEntries(model, {\n limit: 10000\n });\n\n for (const item of deletedEntries) {\n await this.cms.deleteEntry(model, item.id, {\n permanently: true\n });\n }\n }\n\n private async canDelete(\n model: CmsModel\n ): Promise<\n Result<\n boolean,\n | ModelCannotDeleteHasEntriesError\n | ModelCannotDeleteHasEntriesInTrashError\n | ModelPersistenceError\n >\n > {\n try {\n // Check for latest entries\n const [latestEntries] = await this.cms.listLatestEntries(model, {\n limit: 1\n });\n\n if (latestEntries.length > 0) {\n return Result.fail(new ModelCannotDeleteHasEntriesError(model.modelId));\n }\n\n // Check for deleted entries (trash)\n const [deletedEntries] = await this.cms.listDeletedEntries(model, {\n limit: 1\n });\n\n if (deletedEntries.length > 0) {\n return Result.fail(new ModelCannotDeleteHasEntriesInTrashError(model.modelId));\n }\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error));\n }\n\n return Result.ok(true);\n }\n}\n\nexport const DeleteModelWithEntryCleanup = DeleteModelUseCase.createDecorator({\n decorator: DeleteModelWithEntryCleanupImpl,\n dependencies: [CmsContext]\n});\n"],"names":["DeleteModelWithEntryCleanupImpl","cmsContext","decoratee","HeadlessCms","modelId","model","tags","Array","CMS_MODEL_SINGLETON_TAG","error","Result","ModelValidationError","canDelete","latestEntries","item","deletedEntries","ModelCannotDeleteHasEntriesError","ModelCannotDeleteHasEntriesInTrashError","ModelPersistenceError","DeleteModelWithEntryCleanup","DeleteModelUseCase","CmsContext"],"mappings":";;;;;AAoBA,MAAMA;IACF,YACYC,UAAgC,EAChCC,SAAuC,CACjD;aAFUD,UAAU,GAAVA;aACAC,SAAS,GAATA;IACT;IAEH,IAAY,MAA6B;QACrC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAACC;IAC7C;IAEA,MAAM,QAAQC,OAAe,EAAmD;QAK5E,MAAMC,QAAQ,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAACD;QAEtC,MAAME,OAAOC,MAAM,OAAO,CAACF,MAAM,IAAI,IAAIA,MAAM,IAAI,GAAG,EAAE;QAGxD,IAAIC,KAAK,QAAQ,CAACE,0BAA0B;YACxC,IAAI;gBACA,MAAM,IAAI,CAAC,sBAAsB,CAACH;YACtC,EAAE,OAAOI,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBACA,CAAC,oCAAoC,EAAGF,MAAgB,OAAO,EAAE;YAG7E;YAGA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAACL;QAClC;QAGA,MAAMQ,YAAY,MAAM,IAAI,CAAC,SAAS,CAACP;QACvC,IAAIO,UAAU,MAAM,IAChB,OAAOF,OAAO,IAAI,CAACE,UAAU,KAAK;QAItC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAACR;IAClC;IAEA,MAAc,uBAAuBC,KAAU,EAAiB;QAE5D,MAAM,CAACQ,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAACR,OAAO;YAC5D,OAAO;QACX;QAEA,KAAK,MAAMS,QAAQD,cACf,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAACR,OAAOS,KAAK,EAAE,EAAE;YACvC,aAAa;QACjB;QAIJ,MAAM,CAACC,eAAe,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAACV,OAAO;YAC9D,OAAO;QACX;QAEA,KAAK,MAAMS,QAAQC,eACf,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAACV,OAAOS,KAAK,EAAE,EAAE;YACvC,aAAa;QACjB;IAER;IAEA,MAAc,UACVT,KAAe,EAQjB;QACE,IAAI;YAEA,MAAM,CAACQ,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAACR,OAAO;gBAC5D,OAAO;YACX;YAEA,IAAIQ,cAAc,MAAM,GAAG,GACvB,OAAOH,OAAO,IAAI,CAAC,IAAIM,iCAAiCX,MAAM,OAAO;YAIzE,MAAM,CAACU,eAAe,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAACV,OAAO;gBAC9D,OAAO;YACX;YAEA,IAAIU,eAAe,MAAM,GAAG,GACxB,OAAOL,OAAO,IAAI,CAAC,IAAIO,wCAAwCZ,MAAM,OAAO;QAEpF,EAAE,OAAOI,OAAO;YACZ,OAAOC,OAAO,IAAI,CAAC,IAAIQ,sBAAsBT;QACjD;QAEA,OAAOC,OAAO,EAAE,CAAC;IACrB;AACJ;AAEO,MAAMS,8BAA8BC,mBAAmB,eAAe,CAAC;IAC1E,WAAWpB;IACX,cAAc;QAACqB;KAAW;AAC9B"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { UpdateModelRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
3
|
import { ModelCache, ModelsFetcher } from "../../../features/contentModel/shared/abstractions.js";
|
|
4
|
-
import { CmsContext
|
|
4
|
+
import { CmsContext } from "../../../features/shared/abstractions.js";
|
|
5
|
+
import { UpdateModelStorageOperation } from "../../../features/shared/storageOperations/model/UpdateModelStorageOperation.js";
|
|
6
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
|
|
5
7
|
import type { CmsModel } from "../../../types/index.js";
|
|
6
8
|
import { ModelFieldCompression } from "../../../features/contentModel/ModelFieldCompression/index.js";
|
|
7
9
|
/**
|
|
@@ -18,10 +20,11 @@ import { ModelFieldCompression } from "../../../features/contentModel/ModelField
|
|
|
18
20
|
declare class UpdateModelRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
19
21
|
private readonly modelCache;
|
|
20
22
|
private readonly modelsFetcher;
|
|
21
|
-
private readonly
|
|
23
|
+
private readonly updateModel;
|
|
22
24
|
private readonly cmsContext;
|
|
23
25
|
private readonly modelFieldCompression;
|
|
24
|
-
|
|
26
|
+
private readonly identityContext;
|
|
27
|
+
constructor(modelCache: ModelCache.Interface, modelsFetcher: ModelsFetcher.Interface, updateModel: UpdateModelStorageOperation.Interface, cmsContext: CmsContext.Interface, modelFieldCompression: ModelFieldCompression.Interface, identityContext: IdentityContext.Interface);
|
|
25
28
|
execute(model: CmsModel, original: CmsModel): Promise<Result<void, RepositoryAbstraction.Error>>;
|
|
26
29
|
}
|
|
27
30
|
export declare const UpdateModelRepository: typeof UpdateModelRepositoryImpl & {
|
|
@@ -2,19 +2,22 @@ import { Result } from "@webiny/feature/api";
|
|
|
2
2
|
import { UpdateModelRepository } from "./abstractions.js";
|
|
3
3
|
import { ModelCache, ModelsFetcher } from "../shared/abstractions.js";
|
|
4
4
|
import { ModelCannotUpdateCodeModelError, ModelPersistenceError, ModelValidationError } from "../../../domain/contentModel/errors.js";
|
|
5
|
-
import { CmsContext
|
|
5
|
+
import { CmsContext } from "../../shared/abstractions.js";
|
|
6
|
+
import { UpdateModelStorageOperation } from "../../shared/storageOperations/model/UpdateModelStorageOperation.js";
|
|
7
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
|
|
6
8
|
import { validateEndingAllowed } from "../../../crud/contentModel/validate/endingAllowed.js";
|
|
7
9
|
import { validateSingularApiName } from "../../../domain/contentModel/validation/singularApiName.js";
|
|
8
10
|
import { validatePluralApiName } from "../../../domain/contentModel/validation/pluralApiName.js";
|
|
9
11
|
import { validateModelFields } from "../../../domain/contentModel/validation/modelFields.js";
|
|
10
12
|
import { ModelFieldCompression } from "../ModelFieldCompression/index.js";
|
|
11
13
|
class UpdateModelRepositoryImpl {
|
|
12
|
-
constructor(modelCache, modelsFetcher,
|
|
14
|
+
constructor(modelCache, modelsFetcher, updateModel, cmsContext, modelFieldCompression, identityContext){
|
|
13
15
|
this.modelCache = modelCache;
|
|
14
16
|
this.modelsFetcher = modelsFetcher;
|
|
15
|
-
this.
|
|
17
|
+
this.updateModel = updateModel;
|
|
16
18
|
this.cmsContext = cmsContext;
|
|
17
19
|
this.modelFieldCompression = modelFieldCompression;
|
|
20
|
+
this.identityContext = identityContext;
|
|
18
21
|
}
|
|
19
22
|
async execute(model, original) {
|
|
20
23
|
try {
|
|
@@ -28,7 +31,7 @@ class UpdateModelRepositoryImpl {
|
|
|
28
31
|
data: error.data
|
|
29
32
|
}));
|
|
30
33
|
}
|
|
31
|
-
const modelsResult = await this.
|
|
34
|
+
const modelsResult = await this.identityContext.withoutAuthorization(async ()=>await this.modelsFetcher.fetchAll());
|
|
32
35
|
if (modelsResult.isFail()) return Result.fail(new ModelPersistenceError(modelsResult.error));
|
|
33
36
|
const allModels = modelsResult.value;
|
|
34
37
|
const models = allModels.filter((m)=>m.modelId !== model.modelId);
|
|
@@ -59,7 +62,7 @@ class UpdateModelRepositoryImpl {
|
|
|
59
62
|
}));
|
|
60
63
|
}
|
|
61
64
|
const fields = await this.modelFieldCompression.compress(model.fields);
|
|
62
|
-
await this.
|
|
65
|
+
await this.updateModel.execute({
|
|
63
66
|
model: {
|
|
64
67
|
...model,
|
|
65
68
|
fields
|
|
@@ -77,9 +80,10 @@ const UpdateModelRepository_UpdateModelRepository = UpdateModelRepository.create
|
|
|
77
80
|
dependencies: [
|
|
78
81
|
ModelCache,
|
|
79
82
|
ModelsFetcher,
|
|
80
|
-
|
|
83
|
+
UpdateModelStorageOperation,
|
|
81
84
|
CmsContext,
|
|
82
|
-
ModelFieldCompression
|
|
85
|
+
ModelFieldCompression,
|
|
86
|
+
IdentityContext
|
|
83
87
|
]
|
|
84
88
|
});
|
|
85
89
|
export { UpdateModelRepository_UpdateModelRepository as UpdateModelRepository };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/contentModel/UpdateModel/UpdateModelRepository.js","sources":["../../../../src/features/contentModel/UpdateModel/UpdateModelRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateModelRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ModelCache, ModelsFetcher } from \"~/features/contentModel/shared/abstractions.js\";\nimport {\n ModelCannotUpdateCodeModelError,\n ModelPersistenceError,\n ModelValidationError\n} from \"~/domain/contentModel/errors.js\";\nimport { CmsContext
|
|
1
|
+
{"version":3,"file":"features/contentModel/UpdateModel/UpdateModelRepository.js","sources":["../../../../src/features/contentModel/UpdateModel/UpdateModelRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateModelRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ModelCache, ModelsFetcher } from \"~/features/contentModel/shared/abstractions.js\";\nimport {\n ModelCannotUpdateCodeModelError,\n ModelPersistenceError,\n ModelValidationError\n} from \"~/domain/contentModel/errors.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport { UpdateModelStorageOperation } from \"~/features/shared/storageOperations/model/UpdateModelStorageOperation.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed.js\";\nimport { validateSingularApiName } from \"~/domain/contentModel/validation/singularApiName.js\";\nimport { validatePluralApiName } from \"~/domain/contentModel/validation/pluralApiName.js\";\nimport { validateModelFields } from \"~/domain/contentModel/validation/modelFields.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ModelFieldCompression } from \"~/features/contentModel/ModelFieldCompression/index.js\";\n\n/**\n * UpdateModelRepository - Validates domain rules and persists model updates.\n *\n * Responsibilities:\n * - Validate API name endings\n * - Validate singularApiName uniqueness (excluding current model)\n * - Validate pluralApiName uniqueness (excluding current model)\n * - Validate model fields\n * - Persist to storage\n * - Clear ModelCache after successful update\n */\nclass UpdateModelRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private readonly modelCache: ModelCache.Interface,\n private readonly modelsFetcher: ModelsFetcher.Interface,\n private readonly updateModel: UpdateModelStorageOperation.Interface,\n private readonly cmsContext: CmsContext.Interface,\n private readonly modelFieldCompression: ModelFieldCompression.Interface,\n private readonly identityContext: IdentityContext.Interface\n ) {}\n\n async execute(\n model: CmsModel,\n original: CmsModel\n ): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n // Validate API name endings\n try {\n validateEndingAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n // Get all models for validation (excluding the current model)\n const modelsResult = await this.identityContext.withoutAuthorization(async () => {\n return await this.modelsFetcher.fetchAll();\n });\n\n if (modelsResult.isFail()) {\n return Result.fail(new ModelPersistenceError(modelsResult.error));\n }\n\n const allModels = modelsResult.value;\n const models = allModels.filter(m => m.modelId !== model.modelId);\n\n // Check if this is a plugin model\n const existingModelResult = await this.modelsFetcher.fetchById(model.modelId);\n if (existingModelResult.isFail()) {\n return Result.fail(new ModelPersistenceError(existingModelResult.error));\n }\n\n if (existingModelResult.value.isPlugin) {\n return Result.fail(new ModelCannotUpdateCodeModelError(model.modelId));\n }\n\n // Validate uniqueness\n try {\n for (const existingModel of models) {\n validateSingularApiName({\n existingModel,\n model\n });\n validatePluralApiName({\n existingModel,\n model\n });\n }\n\n // Validate model fields\n await validateModelFields({\n models,\n model,\n original,\n context: this.cmsContext\n });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n const fields = await this.modelFieldCompression.compress(model.fields);\n\n // Persist to storage\n await this.updateModel.execute({\n model: {\n ...model,\n fields\n }\n });\n\n // Clear cache\n this.modelCache.clear();\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n}\n\nexport const UpdateModelRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateModelRepositoryImpl,\n dependencies: [\n ModelCache,\n ModelsFetcher,\n UpdateModelStorageOperation,\n CmsContext,\n ModelFieldCompression,\n IdentityContext\n ]\n});\n"],"names":["UpdateModelRepositoryImpl","modelCache","modelsFetcher","updateModel","cmsContext","modelFieldCompression","identityContext","model","original","validateEndingAllowed","error","Result","ModelValidationError","modelsResult","ModelPersistenceError","allModels","models","m","existingModelResult","ModelCannotUpdateCodeModelError","existingModel","validateSingularApiName","validatePluralApiName","validateModelFields","fields","UpdateModelRepository","RepositoryAbstraction","ModelCache","ModelsFetcher","UpdateModelStorageOperation","CmsContext","ModelFieldCompression","IdentityContext"],"mappings":";;;;;;;;;;;;AA6BA,MAAMA;IACF,YACqBC,UAAgC,EAChCC,aAAsC,EACtCC,WAAkD,EAClDC,UAAgC,EAChCC,qBAAsD,EACtDC,eAA0C,CAC7D;aANmBL,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,WAAW,GAAXA;aACAC,UAAU,GAAVA;aACAC,qBAAqB,GAArBA;aACAC,eAAe,GAAfA;IAClB;IAEH,MAAM,QACFC,KAAe,EACfC,QAAkB,EACgC;QAClD,IAAI;YAEA,IAAI;gBACAC,sBAAsB;oBAAEF;gBAAM;YAClC,EAAE,OAAOG,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBAAqB;oBAAE,SAASF,MAAM,OAAO;oBAAE,MAAMA,MAAM,IAAI;gBAAC;YAE5E;YAGA,MAAMG,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,UAC1D,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ;YAG5C,IAAIA,aAAa,MAAM,IACnB,OAAOF,OAAO,IAAI,CAAC,IAAIG,sBAAsBD,aAAa,KAAK;YAGnE,MAAME,YAAYF,aAAa,KAAK;YACpC,MAAMG,SAASD,UAAU,MAAM,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKV,MAAM,OAAO;YAGhE,MAAMW,sBAAsB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAACX,MAAM,OAAO;YAC5E,IAAIW,oBAAoB,MAAM,IAC1B,OAAOP,OAAO,IAAI,CAAC,IAAIG,sBAAsBI,oBAAoB,KAAK;YAG1E,IAAIA,oBAAoB,KAAK,CAAC,QAAQ,EAClC,OAAOP,OAAO,IAAI,CAAC,IAAIQ,gCAAgCZ,MAAM,OAAO;YAIxE,IAAI;gBACA,KAAK,MAAMa,iBAAiBJ,OAAQ;oBAChCK,wBAAwB;wBACpBD;wBACAb;oBACJ;oBACAe,sBAAsB;wBAClBF;wBACAb;oBACJ;gBACJ;gBAGA,MAAMgB,oBAAoB;oBACtBP;oBACAT;oBACAC;oBACA,SAAS,IAAI,CAAC,UAAU;gBAC5B;YACJ,EAAE,OAAOE,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBAAqB;oBAAE,SAASF,MAAM,OAAO;oBAAE,MAAMA,MAAM,IAAI;gBAAC;YAE5E;YAEA,MAAMc,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAACjB,MAAM,MAAM;YAGrE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B,OAAO;oBACH,GAAGA,KAAK;oBACRiB;gBACJ;YACJ;YAGA,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOb,OAAO,EAAE;QACpB,EAAE,OAAOD,OAAO;YACZ,OAAOC,OAAO,IAAI,CAAC,IAAIG,sBAAsBJ;QACjD;IACJ;AACJ;AAEO,MAAMe,8CAAwBC,sBAAAA,oBAA0C,CAAC;IAC5E,gBAAgB1B;IAChB,cAAc;QACV2B;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type IValuesSelectionGenerator } from "./abstractions.js";
|
|
2
|
+
import { ModelToAstConverter } from "../ModelToAstConverter/abstractions.js";
|
|
3
|
+
import type { CmsModel } from "../../../types/index.js";
|
|
4
|
+
declare class ValuesSelectionGeneratorImpl implements IValuesSelectionGenerator {
|
|
5
|
+
private readonly modelToAst;
|
|
6
|
+
constructor(modelToAst: ModelToAstConverter.Interface);
|
|
7
|
+
generate(model: CmsModel): string;
|
|
8
|
+
private walkRoot;
|
|
9
|
+
private walkNode;
|
|
10
|
+
private walkFieldNode;
|
|
11
|
+
private walkCollectionNode;
|
|
12
|
+
}
|
|
13
|
+
export declare const ValuesSelectionGenerator: typeof ValuesSelectionGeneratorImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<IValuesSelectionGenerator>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ValuesSelectionGenerator } from "./abstractions.js";
|
|
2
|
+
import { ModelToAstConverter } from "../ModelToAstConverter/abstractions.js";
|
|
3
|
+
import { createTypeName } from "../../../utils/createTypeName.js";
|
|
4
|
+
const REF_SELECTION = "{ id modelId }";
|
|
5
|
+
class ValuesSelectionGeneratorImpl {
|
|
6
|
+
constructor(modelToAst){
|
|
7
|
+
this.modelToAst = modelToAst;
|
|
8
|
+
}
|
|
9
|
+
generate(model) {
|
|
10
|
+
const ast = this.modelToAst.toAst(model);
|
|
11
|
+
const selection = this.walkRoot(ast, model.singularApiName);
|
|
12
|
+
return selection || "_empty";
|
|
13
|
+
}
|
|
14
|
+
walkRoot(ast, typePrefix) {
|
|
15
|
+
return ast.children.map((node)=>this.walkNode(node, typePrefix)).filter(Boolean).join("\n");
|
|
16
|
+
}
|
|
17
|
+
walkNode(node, typePrefix) {
|
|
18
|
+
if ("field" === node.type) return this.walkFieldNode(node, typePrefix);
|
|
19
|
+
if ("collection" === node.type) return this.walkCollectionNode(node, typePrefix);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
walkFieldNode(node, typePrefix) {
|
|
23
|
+
const { field, children } = node;
|
|
24
|
+
if ("ref" === field.type) return `${field.fieldId} ${REF_SELECTION}`;
|
|
25
|
+
if (0 === children.length) {
|
|
26
|
+
if ("object" === field.type || "dynamicZone" === field.type) return null;
|
|
27
|
+
return field.fieldId;
|
|
28
|
+
}
|
|
29
|
+
const nestedPrefix = `${typePrefix}_${createTypeName(field.fieldId)}`;
|
|
30
|
+
const childSelection = children.map((child)=>this.walkNode(child, nestedPrefix)).filter(Boolean).join("\n");
|
|
31
|
+
if (!childSelection) return null;
|
|
32
|
+
return `${field.fieldId} { ${childSelection} }`;
|
|
33
|
+
}
|
|
34
|
+
walkCollectionNode(node, typePrefix) {
|
|
35
|
+
const { collection, children } = node;
|
|
36
|
+
const gqlTypeName = collection.gqlTypeName;
|
|
37
|
+
if (!gqlTypeName) return null;
|
|
38
|
+
const templateType = `${typePrefix}_${gqlTypeName}`;
|
|
39
|
+
const childSelection = children.map((child)=>this.walkNode(child, templateType)).filter(Boolean).join("\n");
|
|
40
|
+
return `...on ${templateType} { ${childSelection} _templateId __typename }`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const ValuesSelectionGenerator_ValuesSelectionGenerator = ValuesSelectionGenerator.createImplementation({
|
|
44
|
+
implementation: ValuesSelectionGeneratorImpl,
|
|
45
|
+
dependencies: [
|
|
46
|
+
ModelToAstConverter
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
export { ValuesSelectionGenerator_ValuesSelectionGenerator as ValuesSelectionGenerator };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=ValuesSelectionGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js","sources":["../../../../src/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.ts"],"sourcesContent":["import {\n ValuesSelectionGenerator as Abstraction,\n type IValuesSelectionGenerator\n} from \"./abstractions.js\";\nimport { ModelToAstConverter } from \"../ModelToAstConverter/abstractions.js\";\nimport type {\n CmsModel,\n CmsModelAst,\n CmsModelFieldAstNode,\n CmsModelFieldAstNodeCollection,\n CmsModelFieldAstNodeField\n} from \"~/types/index.js\";\nimport { createTypeName } from \"~/utils/createTypeName.js\";\n\nconst REF_SELECTION = \"{ id modelId }\";\n\nclass ValuesSelectionGeneratorImpl implements IValuesSelectionGenerator {\n constructor(private readonly modelToAst: ModelToAstConverter.Interface) {}\n\n generate(model: CmsModel): string {\n const ast = this.modelToAst.toAst(model);\n const selection = this.walkRoot(ast, model.singularApiName);\n return selection || \"_empty\";\n }\n\n private walkRoot(ast: CmsModelAst, typePrefix: string): string {\n return ast.children\n .map(node => this.walkNode(node, typePrefix))\n .filter(Boolean)\n .join(\"\\n\");\n }\n\n private walkNode(node: CmsModelFieldAstNode, typePrefix: string): string | null {\n if (node.type === \"field\") {\n return this.walkFieldNode(node, typePrefix);\n }\n if (node.type === \"collection\") {\n return this.walkCollectionNode(node, typePrefix);\n }\n return null;\n }\n\n private walkFieldNode(node: CmsModelFieldAstNodeField, typePrefix: string): string | null {\n const { field, children } = node;\n\n if (field.type === \"ref\") {\n return `${field.fieldId} ${REF_SELECTION}`;\n }\n\n if (children.length === 0) {\n if (field.type === \"object\" || field.type === \"dynamicZone\") {\n return null;\n }\n return field.fieldId;\n }\n\n const nestedPrefix = `${typePrefix}_${createTypeName(field.fieldId)}`;\n const childSelection = children\n .map(child => this.walkNode(child, nestedPrefix))\n .filter(Boolean)\n .join(\"\\n\");\n\n if (!childSelection) {\n return null;\n }\n\n return `${field.fieldId} { ${childSelection} }`;\n }\n\n private walkCollectionNode(\n node: CmsModelFieldAstNodeCollection,\n typePrefix: string\n ): string | null {\n const { collection, children } = node;\n const gqlTypeName = collection.gqlTypeName;\n\n if (!gqlTypeName) {\n return null;\n }\n\n const templateType = `${typePrefix}_${gqlTypeName}`;\n const childSelection = children\n .map(child => this.walkNode(child, templateType))\n .filter(Boolean)\n .join(\"\\n\");\n\n return `...on ${templateType} { ${childSelection} _templateId __typename }`;\n }\n}\n\nexport const ValuesSelectionGenerator = Abstraction.createImplementation({\n implementation: ValuesSelectionGeneratorImpl,\n dependencies: [ModelToAstConverter]\n});\n"],"names":["REF_SELECTION","ValuesSelectionGeneratorImpl","modelToAst","model","ast","selection","typePrefix","node","Boolean","field","children","nestedPrefix","createTypeName","childSelection","child","collection","gqlTypeName","templateType","ValuesSelectionGenerator","Abstraction","ModelToAstConverter"],"mappings":";;;AAcA,MAAMA,gBAAgB;AAEtB,MAAMC;IACF,YAA6BC,UAAyC,CAAE;aAA3CA,UAAU,GAAVA;IAA4C;IAEzE,SAASC,KAAe,EAAU;QAC9B,MAAMC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAACD;QAClC,MAAME,YAAY,IAAI,CAAC,QAAQ,CAACD,KAAKD,MAAM,eAAe;QAC1D,OAAOE,aAAa;IACxB;IAEQ,SAASD,GAAgB,EAAEE,UAAkB,EAAU;QAC3D,OAAOF,IAAI,QAAQ,CACd,GAAG,CAACG,CAAAA,OAAQ,IAAI,CAAC,QAAQ,CAACA,MAAMD,aAChC,MAAM,CAACE,SACP,IAAI,CAAC;IACd;IAEQ,SAASD,IAA0B,EAAED,UAAkB,EAAiB;QAC5E,IAAIC,AAAc,YAAdA,KAAK,IAAI,EACT,OAAO,IAAI,CAAC,aAAa,CAACA,MAAMD;QAEpC,IAAIC,AAAc,iBAAdA,KAAK,IAAI,EACT,OAAO,IAAI,CAAC,kBAAkB,CAACA,MAAMD;QAEzC,OAAO;IACX;IAEQ,cAAcC,IAA+B,EAAED,UAAkB,EAAiB;QACtF,MAAM,EAAEG,KAAK,EAAEC,QAAQ,EAAE,GAAGH;QAE5B,IAAIE,AAAe,UAAfA,MAAM,IAAI,EACV,OAAO,GAAGA,MAAM,OAAO,CAAC,CAAC,EAAET,eAAe;QAG9C,IAAIU,AAAoB,MAApBA,SAAS,MAAM,EAAQ;YACvB,IAAID,AAAe,aAAfA,MAAM,IAAI,IAAiBA,AAAe,kBAAfA,MAAM,IAAI,EACrC,OAAO;YAEX,OAAOA,MAAM,OAAO;QACxB;QAEA,MAAME,eAAe,GAAGL,WAAW,CAAC,EAAEM,eAAeH,MAAM,OAAO,GAAG;QACrE,MAAMI,iBAAiBH,SAClB,GAAG,CAACI,CAAAA,QAAS,IAAI,CAAC,QAAQ,CAACA,OAAOH,eAClC,MAAM,CAACH,SACP,IAAI,CAAC;QAEV,IAAI,CAACK,gBACD,OAAO;QAGX,OAAO,GAAGJ,MAAM,OAAO,CAAC,GAAG,EAAEI,eAAe,EAAE,CAAC;IACnD;IAEQ,mBACJN,IAAoC,EACpCD,UAAkB,EACL;QACb,MAAM,EAAES,UAAU,EAAEL,QAAQ,EAAE,GAAGH;QACjC,MAAMS,cAAcD,WAAW,WAAW;QAE1C,IAAI,CAACC,aACD,OAAO;QAGX,MAAMC,eAAe,GAAGX,WAAW,CAAC,EAAEU,aAAa;QACnD,MAAMH,iBAAiBH,SAClB,GAAG,CAACI,CAAAA,QAAS,IAAI,CAAC,QAAQ,CAACA,OAAOG,eAClC,MAAM,CAACT,SACP,IAAI,CAAC;QAEV,OAAO,CAAC,MAAM,EAAES,aAAa,GAAG,EAAEJ,eAAe,yBAAyB,CAAC;IAC/E;AACJ;AAEO,MAAMK,oDAA2BC,yBAAAA,oBAAgC,CAAC;IACrE,gBAAgBlB;IAChB,cAAc;QAACmB;KAAoB;AACvC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CmsModel } from "../../../types/index.js";
|
|
2
|
+
export interface IValuesSelectionGenerator {
|
|
3
|
+
generate(model: CmsModel): string;
|
|
4
|
+
}
|
|
5
|
+
export declare const ValuesSelectionGenerator: import("@webiny/di").Abstraction<IValuesSelectionGenerator>;
|
|
6
|
+
export declare namespace ValuesSelectionGenerator {
|
|
7
|
+
type Interface = IValuesSelectionGenerator;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/contentModel/ValuesSelectionGenerator/abstractions.js","sources":["../../../../src/features/contentModel/ValuesSelectionGenerator/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\n\nexport interface IValuesSelectionGenerator {\n generate(model: CmsModel): string;\n}\n\nexport const ValuesSelectionGenerator = createAbstraction<IValuesSelectionGenerator>(\n \"ValuesSelectionGenerator\"\n);\n\nexport namespace ValuesSelectionGenerator {\n export type Interface = IValuesSelectionGenerator;\n}\n"],"names":["ValuesSelectionGenerator","createAbstraction"],"mappings":";AAOO,MAAMA,2BAA2BC,kBACpC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { ValuesSelectionGenerator } from "./ValuesSelectionGenerator.js";
|
|
3
|
+
const ValuesSelectionGeneratorFeature = createFeature({
|
|
4
|
+
name: "ValuesSelectionGenerator",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(ValuesSelectionGenerator);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { ValuesSelectionGeneratorFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/contentModel/ValuesSelectionGenerator/feature.js","sources":["../../../../src/features/contentModel/ValuesSelectionGenerator/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ValuesSelectionGenerator } from \"./ValuesSelectionGenerator.js\";\n\nexport const ValuesSelectionGeneratorFeature = createFeature({\n name: \"ValuesSelectionGenerator\",\n register(container) {\n container.register(ValuesSelectionGenerator);\n }\n});\n"],"names":["ValuesSelectionGeneratorFeature","createFeature","container","ValuesSelectionGenerator"],"mappings":";;AAGO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./abstractions.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { ModelCache, ModelsFetcher as FetcherAbstraction } from "../../../features/contentModel/shared/abstractions.js";
|
|
3
3
|
import { PluginModelsProvider } from "../../../features/contentModel/shared/abstractions.js";
|
|
4
|
-
import {
|
|
4
|
+
import { ListModelsStorageOperation } from "../../../features/shared/storageOperations/model/ListModelsStorageOperation.js";
|
|
5
5
|
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
6
6
|
import type { CmsModel } from "../../../types/index.js";
|
|
7
7
|
import { ModelFieldCompression } from "../../../features/contentModel/ModelFieldCompression/index.js";
|
|
@@ -17,10 +17,10 @@ import { ModelFieldCompression } from "../../../features/contentModel/ModelField
|
|
|
17
17
|
declare class ModelsFetcherImpl implements FetcherAbstraction.Interface {
|
|
18
18
|
private readonly modelCache;
|
|
19
19
|
private readonly pluginModelsProvider;
|
|
20
|
-
private readonly
|
|
20
|
+
private readonly listModels;
|
|
21
21
|
private readonly tenantContext;
|
|
22
22
|
private readonly modelFieldCompression;
|
|
23
|
-
constructor(modelCache: ModelCache.Interface, pluginModelsProvider: PluginModelsProvider.Interface,
|
|
23
|
+
constructor(modelCache: ModelCache.Interface, pluginModelsProvider: PluginModelsProvider.Interface, listModels: ListModelsStorageOperation.Interface, tenantContext: TenantContext.Interface, modelFieldCompression: ModelFieldCompression.Interface);
|
|
24
24
|
fetchAll(): Promise<Result<CmsModel[], FetcherAbstraction.Error>>;
|
|
25
25
|
fetchById(modelId: string): Promise<Result<CmsModel, FetcherAbstraction.Error>>;
|
|
26
26
|
private fetchAndMergeModels;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { ModelCache, ModelsFetcher, PluginModelsProvider } from "./abstractions.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ListModelsStorageOperation } from "../../shared/storageOperations/model/ListModelsStorageOperation.js";
|
|
4
4
|
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
5
5
|
import { ModelNotFoundError, ModelPersistenceError } from "../../../domain/contentModel/errors.js";
|
|
6
6
|
import { createCacheKey } from "../../../utils/index.js";
|
|
7
7
|
import { ensureTypeTag } from "../../../domain/contentModel/ensureTypeTag.js";
|
|
8
8
|
import { ModelFieldCompression } from "../ModelFieldCompression/index.js";
|
|
9
9
|
class ModelsFetcherImpl {
|
|
10
|
-
constructor(modelCache, pluginModelsProvider,
|
|
10
|
+
constructor(modelCache, pluginModelsProvider, listModels, tenantContext, modelFieldCompression){
|
|
11
11
|
this.modelCache = modelCache;
|
|
12
12
|
this.pluginModelsProvider = pluginModelsProvider;
|
|
13
|
-
this.
|
|
13
|
+
this.listModels = listModels;
|
|
14
14
|
this.tenantContext = tenantContext;
|
|
15
15
|
this.modelFieldCompression = modelFieldCompression;
|
|
16
16
|
}
|
|
@@ -46,7 +46,7 @@ class ModelsFetcherImpl {
|
|
|
46
46
|
id: "storage"
|
|
47
47
|
});
|
|
48
48
|
const databaseModels = await this.modelCache.getOrSet(dbCacheKey, async ()=>{
|
|
49
|
-
const models = await this.
|
|
49
|
+
const models = await this.listModels.execute({
|
|
50
50
|
where: {
|
|
51
51
|
tenant
|
|
52
52
|
}
|
|
@@ -71,7 +71,7 @@ const ModelsFetcher_ModelsFetcher = ModelsFetcher.createImplementation({
|
|
|
71
71
|
dependencies: [
|
|
72
72
|
ModelCache,
|
|
73
73
|
PluginModelsProvider,
|
|
74
|
-
|
|
74
|
+
ListModelsStorageOperation,
|
|
75
75
|
TenantContext,
|
|
76
76
|
ModelFieldCompression
|
|
77
77
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/contentModel/shared/ModelsFetcher.js","sources":["../../../../src/features/contentModel/shared/ModelsFetcher.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n ModelCache,\n ModelsFetcher as FetcherAbstraction\n} from \"~/features/contentModel/shared/abstractions.js\";\nimport { PluginModelsProvider } from \"~/features/contentModel/shared/abstractions.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"features/contentModel/shared/ModelsFetcher.js","sources":["../../../../src/features/contentModel/shared/ModelsFetcher.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n ModelCache,\n ModelsFetcher as FetcherAbstraction\n} from \"~/features/contentModel/shared/abstractions.js\";\nimport { PluginModelsProvider } from \"~/features/contentModel/shared/abstractions.js\";\nimport { ListModelsStorageOperation } from \"~/features/shared/storageOperations/model/ListModelsStorageOperation.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\nimport { createCacheKey } from \"~/utils/index.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ModelFieldCompression } from \"~/features/contentModel/ModelFieldCompression/index.js\";\n\n/**\n * ModelsFetcherImpl - Implementation with multi-level caching.\n *\n * Caching strategy:\n * 1. Plugin models are cached per tenant (with access control applied by PluginModelsProvider)\n * 2. Database models are cached per tenant (raw from DB)\n * 3. Filtered database models are cached per tenant + identity (with access control applied)\n * 4. Final merged list is cached per tenant + identity\n */\nclass ModelsFetcherImpl implements FetcherAbstraction.Interface {\n public constructor(\n private readonly modelCache: ModelCache.Interface,\n private readonly pluginModelsProvider: PluginModelsProvider.Interface,\n private readonly listModels: ListModelsStorageOperation.Interface,\n private readonly tenantContext: TenantContext.Interface,\n private readonly modelFieldCompression: ModelFieldCompression.Interface\n ) {}\n\n async fetchAll(): Promise<Result<CmsModel[], FetcherAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // Create a cache key based on tenant + identity\n const cacheKey = createCacheKey({\n tenant: tenant.id\n });\n\n // Try to get from cache first\n const cached = await this.modelCache.getOrSet(cacheKey, async () => {\n // Fetch plugin models (with caching and access control)\n const pluginModels = await this.pluginModelsProvider.list(tenant.id);\n\n const databaseModels = await this.fetchAndMergeModels(tenant.id);\n\n return [...pluginModels, ...databaseModels];\n });\n\n return Result.ok(cached);\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n\n async fetchById(modelId: string): Promise<Result<CmsModel, FetcherAbstraction.Error>> {\n const result = await this.fetchAll();\n if (result.isFail()) {\n return Result.fail(new ModelPersistenceError(result.error));\n }\n\n const model = result.value.find(m => m.modelId === modelId);\n if (!model) {\n return Result.fail(new ModelNotFoundError(modelId));\n }\n\n return Result.ok(model);\n }\n\n private async fetchAndMergeModels(tenant: string): Promise<CmsModel[]> {\n // 1. Fetch database models (with caching)\n const dbCacheKey = createCacheKey({ tenant, id: \"storage\" });\n const databaseModels = await this.modelCache.getOrSet(dbCacheKey, async () => {\n const models = await this.listModels.execute({ where: { tenant } });\n\n return Promise.all(\n models.map(async model => {\n const fields = await this.modelFieldCompression.decompress(model.fields);\n\n return {\n ...model,\n fields\n };\n })\n );\n });\n\n // 2. Ensure type tags on database models\n const taggedDatabaseModels = databaseModels.map(model => {\n model.tags = ensureTypeTag(model);\n return model;\n });\n\n // 3. Return merged models.\n return taggedDatabaseModels;\n }\n}\n\nexport const ModelsFetcher = FetcherAbstraction.createImplementation({\n implementation: ModelsFetcherImpl,\n dependencies: [\n ModelCache,\n PluginModelsProvider,\n ListModelsStorageOperation,\n TenantContext,\n ModelFieldCompression\n ]\n});\n"],"names":["ModelsFetcherImpl","modelCache","pluginModelsProvider","listModels","tenantContext","modelFieldCompression","tenant","cacheKey","createCacheKey","cached","pluginModels","databaseModels","Result","error","ModelPersistenceError","modelId","result","model","m","ModelNotFoundError","dbCacheKey","models","Promise","fields","taggedDatabaseModels","ensureTypeTag","ModelsFetcher","FetcherAbstraction","ModelCache","PluginModelsProvider","ListModelsStorageOperation","TenantContext","ModelFieldCompression"],"mappings":";;;;;;;;AAuBA,MAAMA;IACF,YACqBC,UAAgC,EAChCC,oBAAoD,EACpDC,UAAgD,EAChDC,aAAsC,EACtCC,qBAAsD,CACzE;aALmBJ,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,qBAAqB,GAArBA;IAClB;IAEH,MAAM,WAAkE;QACpE,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,MAAMC,WAAWC,eAAe;gBAC5B,QAAQF,OAAO,EAAE;YACrB;YAGA,MAAMG,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACF,UAAU;gBAEpD,MAAMG,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAACJ,OAAO,EAAE;gBAEnE,MAAMK,iBAAiB,MAAM,IAAI,CAAC,mBAAmB,CAACL,OAAO,EAAE;gBAE/D,OAAO;uBAAII;uBAAiBC;iBAAe;YAC/C;YAEA,OAAOC,OAAO,EAAE,CAACH;QACrB,EAAE,OAAOI,OAAO;YACZ,OAAOD,OAAO,IAAI,CAAC,IAAIE,sBAAsBD;QACjD;IACJ;IAEA,MAAM,UAAUE,OAAe,EAAuD;QAClF,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ;QAClC,IAAIA,OAAO,MAAM,IACb,OAAOJ,OAAO,IAAI,CAAC,IAAIE,sBAAsBE,OAAO,KAAK;QAG7D,MAAMC,QAAQD,OAAO,KAAK,CAAC,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKH;QACnD,IAAI,CAACE,OACD,OAAOL,OAAO,IAAI,CAAC,IAAIO,mBAAmBJ;QAG9C,OAAOH,OAAO,EAAE,CAACK;IACrB;IAEA,MAAc,oBAAoBX,MAAc,EAAuB;QAEnE,MAAMc,aAAaZ,eAAe;YAAEF;YAAQ,IAAI;QAAU;QAC1D,MAAMK,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACS,YAAY;YAC9D,MAAMC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO;oBAAEf;gBAAO;YAAE;YAEjE,OAAOgB,QAAQ,GAAG,CACdD,OAAO,GAAG,CAAC,OAAMJ;gBACb,MAAMM,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAACN,MAAM,MAAM;gBAEvE,OAAO;oBACH,GAAGA,KAAK;oBACRM;gBACJ;YACJ;QAER;QAGA,MAAMC,uBAAuBb,eAAe,GAAG,CAACM,CAAAA;YAC5CA,MAAM,IAAI,GAAGQ,cAAcR;YAC3B,OAAOA;QACX;QAGA,OAAOO;IACX;AACJ;AAEO,MAAME,8BAAgBC,cAAAA,oBAAuC,CAAC;IACjE,gBAAgB3B;IAChB,cAAc;QACV4B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { AccessControl
|
|
1
|
+
import { AccessControl } from "../../../features/shared/abstractions.js";
|
|
2
2
|
import { PluginModelsProvider as ProviderAbstraction } from "./abstractions.js";
|
|
3
3
|
import type { CmsModel } from "../../../types/index.js";
|
|
4
|
+
import type { CmsModelPlugin } from "../../../plugins/CmsModelPlugin.js";
|
|
4
5
|
import { type IModelsProvider } from "../../../features/modelBuilder/models/abstractions.js";
|
|
5
6
|
/**
|
|
6
7
|
* PluginModelsProvider implementation that fetches models from:
|
|
7
|
-
* 1. Legacy CmsModelPlugin instances
|
|
8
|
+
* 1. Legacy CmsModelPlugin instances (resolved from the DI container)
|
|
8
9
|
* 2. New ModelBuilder providers (public and private)
|
|
9
10
|
*/
|
|
10
11
|
declare class PluginModelsProviderImpl implements ProviderAbstraction.Interface {
|
|
11
|
-
private
|
|
12
|
+
private modelPlugins;
|
|
12
13
|
private accessControl;
|
|
13
14
|
private modelsProvider;
|
|
14
|
-
constructor(
|
|
15
|
+
constructor(modelPlugins: CmsModelPlugin[], accessControl: AccessControl.Interface, modelsProvider: IModelsProvider);
|
|
15
16
|
list(tenant: string): Promise<CmsModel[]>;
|
|
16
17
|
private ensureTypeTag;
|
|
17
18
|
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import { AccessControl
|
|
2
|
-
import { PluginModelsProvider } from "./abstractions.js";
|
|
3
|
-
import { CmsModelPlugin } from "../../../plugins/CmsModelPlugin.js";
|
|
1
|
+
import { AccessControl } from "../../shared/abstractions.js";
|
|
2
|
+
import { CmsModelPluginInstance, PluginModelsProvider } from "./abstractions.js";
|
|
4
3
|
import { filterAsync } from "../../../utils/filterAsync.js";
|
|
5
4
|
import { ModelsProvider } from "../../modelBuilder/models/abstractions.js";
|
|
6
5
|
class PluginModelsProviderImpl {
|
|
7
|
-
constructor(
|
|
8
|
-
this.
|
|
6
|
+
constructor(modelPlugins, accessControl, modelsProvider){
|
|
7
|
+
this.modelPlugins = modelPlugins;
|
|
9
8
|
this.accessControl = accessControl;
|
|
10
9
|
this.modelsProvider = modelsProvider;
|
|
11
10
|
}
|
|
12
11
|
async list(tenant) {
|
|
13
|
-
const
|
|
14
|
-
const legacyModels = modelPlugins.filter((plugin)=>{
|
|
12
|
+
const legacyModels = this.modelPlugins.filter((plugin)=>{
|
|
15
13
|
const { tenant: modelTenant } = plugin.contentModel;
|
|
16
14
|
if (modelTenant && modelTenant !== tenant) return false;
|
|
17
15
|
return true;
|
|
@@ -38,7 +36,12 @@ class PluginModelsProviderImpl {
|
|
|
38
36
|
const PluginModelsProvider_PluginModelsProvider = PluginModelsProvider.createImplementation({
|
|
39
37
|
implementation: PluginModelsProviderImpl,
|
|
40
38
|
dependencies: [
|
|
41
|
-
|
|
39
|
+
[
|
|
40
|
+
CmsModelPluginInstance,
|
|
41
|
+
{
|
|
42
|
+
multiple: true
|
|
43
|
+
}
|
|
44
|
+
],
|
|
42
45
|
AccessControl,
|
|
43
46
|
ModelsProvider
|
|
44
47
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/contentModel/shared/PluginModelsProvider.js","sources":["../../../../src/features/contentModel/shared/PluginModelsProvider.ts"],"sourcesContent":["import { AccessControl
|
|
1
|
+
{"version":3,"file":"features/contentModel/shared/PluginModelsProvider.js","sources":["../../../../src/features/contentModel/shared/PluginModelsProvider.ts"],"sourcesContent":["import { AccessControl } from \"~/features/shared/abstractions.js\";\nimport {\n CmsModelPluginInstance,\n PluginModelsProvider as ProviderAbstraction\n} from \"./abstractions.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { CmsModelPlugin } from \"~/plugins/CmsModelPlugin.js\";\nimport { filterAsync } from \"~/utils/filterAsync.js\";\nimport {\n ModelsProvider,\n type IModelsProvider\n} from \"~/features/modelBuilder/models/abstractions.js\";\n\n/**\n * PluginModelsProvider implementation that fetches models from:\n * 1. Legacy CmsModelPlugin instances (resolved from the DI container)\n * 2. New ModelBuilder providers (public and private)\n */\nclass PluginModelsProviderImpl implements ProviderAbstraction.Interface {\n public constructor(\n private modelPlugins: CmsModelPlugin[],\n private accessControl: AccessControl.Interface,\n private modelsProvider: IModelsProvider\n ) {}\n\n async list(tenant: string): Promise<CmsModel[]> {\n // Get models from code-defined plugins\n const legacyModels = this.modelPlugins\n .filter(plugin => {\n const { tenant: modelTenant } = plugin.contentModel;\n // Filter by tenant if specified in plugin\n if (modelTenant && modelTenant !== tenant) {\n return false;\n }\n\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: this.ensureTypeTag(plugin.contentModel),\n tenant\n };\n }) as unknown as CmsModel[];\n\n const allowedLegacyModels = await filterAsync(legacyModels, model => {\n return this.accessControl.canAccessModel({ model });\n });\n\n // Get models from new builder providers. These already have access control applied.\n const builderModels = await this.modelsProvider.list(tenant);\n\n // Combine both sources\n return [...allowedLegacyModels, ...builderModels];\n }\n\n private ensureTypeTag(model: Pick<CmsModel, \"tags\">) {\n // Let's make sure we have a `type` tag assigned.\n // If `type` tag is not set, set it to a default one (`model`).\n const tags = model.tags || [];\n if (!tags.some(tag => tag.startsWith(\"type:\"))) {\n tags.push(\"type:model\");\n }\n\n return tags;\n }\n}\n\nexport const PluginModelsProvider = ProviderAbstraction.createImplementation({\n implementation: PluginModelsProviderImpl,\n dependencies: [[CmsModelPluginInstance, { multiple: true }], AccessControl, ModelsProvider]\n});\n"],"names":["PluginModelsProviderImpl","modelPlugins","accessControl","modelsProvider","tenant","legacyModels","plugin","modelTenant","allowedLegacyModels","filterAsync","model","builderModels","tags","tag","PluginModelsProvider","ProviderAbstraction","CmsModelPluginInstance","AccessControl","ModelsProvider"],"mappings":";;;;AAkBA,MAAMA;IACF,YACYC,YAA8B,EAC9BC,aAAsC,EACtCC,cAA+B,CACzC;aAHUF,YAAY,GAAZA;aACAC,aAAa,GAAbA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,KAAKC,MAAc,EAAuB;QAE5C,MAAMC,eAAe,IAAI,CAAC,YAAY,CACjC,MAAM,CAACC,CAAAA;YACJ,MAAM,EAAE,QAAQC,WAAW,EAAE,GAAGD,OAAO,YAAY;YAEnD,IAAIC,eAAeA,gBAAgBH,QAC/B,OAAO;YAGX,OAAO;QACX,GACC,GAAG,CAACE,CAAAA,SACM;gBACH,GAAGA,OAAO,YAAY;gBACtB,MAAM,IAAI,CAAC,aAAa,CAACA,OAAO,YAAY;gBAC5CF;YACJ;QAGR,MAAMI,sBAAsB,MAAMC,YAAYJ,cAAcK,CAAAA,QACjD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAAEA;YAAM;QAIrD,MAAMC,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAACP;QAGrD,OAAO;eAAII;eAAwBG;SAAc;IACrD;IAEQ,cAAcD,KAA6B,EAAE;QAGjD,MAAME,OAAOF,MAAM,IAAI,IAAI,EAAE;QAC7B,IAAI,CAACE,KAAK,IAAI,CAACC,CAAAA,MAAOA,IAAI,UAAU,CAAC,WACjCD,KAAK,IAAI,CAAC;QAGd,OAAOA;IACX;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAAwC,CAAC;IACzE,gBAAgBf;IAChB,cAAc;QAAC;YAACgB;YAAwB;gBAAE,UAAU;YAAK;SAAE;QAAEC;QAAeC;KAAe;AAC/F"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import type { CmsModel } from "../../../types/index.js";
|
|
3
3
|
import type { ICache } from "../../../utils/caching/types.js";
|
|
4
|
+
import type { CmsModelPlugin } from "../../../plugins/CmsModelPlugin.js";
|
|
4
5
|
import { ModelNotFoundError, ModelPersistenceError } from "../../../domain/contentModel/errors.js";
|
|
6
|
+
/**
|
|
7
|
+
* Multi-instance DI token holding the code-defined CmsModelPlugin instances
|
|
8
|
+
* (previously read from the plugins container via byType). PluginModelsProvider
|
|
9
|
+
* resolves all of these to expose plugin-defined models.
|
|
10
|
+
*/
|
|
11
|
+
export declare const CmsModelPluginInstance: import("@webiny/di").Abstraction<CmsModelPlugin>;
|
|
12
|
+
export declare namespace CmsModelPluginInstance {
|
|
13
|
+
type Interface = CmsModelPlugin;
|
|
14
|
+
}
|
|
5
15
|
/**
|
|
6
16
|
* PluginModelsProvider provides access to plugin-defined (code) models.
|
|
7
17
|
*/
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const CmsModelPluginInstance = createAbstraction("CmsModelPluginInstance");
|
|
2
3
|
const PluginModelsProvider = createAbstraction("PluginModelsProvider");
|
|
3
4
|
const ModelCache = createAbstraction("ModelCache");
|
|
4
5
|
const ModelsFetcher = createAbstraction("ModelsFetcher");
|
|
5
|
-
export { ModelCache, ModelsFetcher, PluginModelsProvider };
|
|
6
|
+
export { CmsModelPluginInstance, ModelCache, ModelsFetcher, PluginModelsProvider };
|
|
6
7
|
|
|
7
8
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/contentModel/shared/abstractions.js","sources":["../../../../src/features/contentModel/shared/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { ICache } from \"~/utils/caching/types.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\n\n/**\n * PluginModelsProvider provides access to plugin-defined (code) models.\n */\nexport interface IPluginModelsProvider {\n list(tenant: string): Promise<CmsModel[]>;\n}\n\nexport const PluginModelsProvider =\n createAbstraction<IPluginModelsProvider>(\"PluginModelsProvider\");\n\nexport namespace PluginModelsProvider {\n export type Interface = IPluginModelsProvider;\n}\n\nexport const ModelCache = createAbstraction<ICache<Promise<CmsModel[]>>>(\"ModelCache\");\n\nexport namespace ModelCache {\n export type Interface = ICache<Promise<CmsModel[]>>;\n}\n\n/**\n * ModelsFetcher - Centralized model fetching with caching.\n *\n * This abstraction handles fetching models from both plugins and database,\n * applies access control filtering, and caches the results for optimal performance.\n */\nexport interface IModelsFetcher {\n /**\n * Fetch all accessible models for the current tenant and identity.\n * Results are cached based on tenant + identity.\n */\n fetchAll(): Promise<Result<CmsModel[], ModelsFetcherError>>;\n\n /**\n * Fetch a single model by modelId.\n * Uses the cached fetchAll result.\n */\n fetchById(modelId: string): Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n\nexport interface IModelsFetcherErrors {\n notFound: ModelNotFoundError;\n persistence: ModelPersistenceError;\n}\n\ntype ModelsFetcherError = IModelsFetcherErrors[keyof IModelsFetcherErrors];\n\nexport const ModelsFetcher = createAbstraction<IModelsFetcher>(\"ModelsFetcher\");\n\nexport namespace ModelsFetcher {\n export type Interface = IModelsFetcher;\n export type Error = ModelsFetcherError;\n\n export type FetchAllReturn = Promise<Result<CmsModel[], ModelsFetcherError>>;\n export type FetchByIdReturn = Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n"],"names":["
|
|
1
|
+
{"version":3,"file":"features/contentModel/shared/abstractions.js","sources":["../../../../src/features/contentModel/shared/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { ICache } from \"~/utils/caching/types.js\";\nimport type { CmsModelPlugin } from \"~/plugins/CmsModelPlugin.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\n\n/**\n * Multi-instance DI token holding the code-defined CmsModelPlugin instances\n * (previously read from the plugins container via byType). PluginModelsProvider\n * resolves all of these to expose plugin-defined models.\n */\nexport const CmsModelPluginInstance = createAbstraction<CmsModelPlugin>(\"CmsModelPluginInstance\");\n\nexport namespace CmsModelPluginInstance {\n export type Interface = CmsModelPlugin;\n}\n\n/**\n * PluginModelsProvider provides access to plugin-defined (code) models.\n */\nexport interface IPluginModelsProvider {\n list(tenant: string): Promise<CmsModel[]>;\n}\n\nexport const PluginModelsProvider =\n createAbstraction<IPluginModelsProvider>(\"PluginModelsProvider\");\n\nexport namespace PluginModelsProvider {\n export type Interface = IPluginModelsProvider;\n}\n\nexport const ModelCache = createAbstraction<ICache<Promise<CmsModel[]>>>(\"ModelCache\");\n\nexport namespace ModelCache {\n export type Interface = ICache<Promise<CmsModel[]>>;\n}\n\n/**\n * ModelsFetcher - Centralized model fetching with caching.\n *\n * This abstraction handles fetching models from both plugins and database,\n * applies access control filtering, and caches the results for optimal performance.\n */\nexport interface IModelsFetcher {\n /**\n * Fetch all accessible models for the current tenant and identity.\n * Results are cached based on tenant + identity.\n */\n fetchAll(): Promise<Result<CmsModel[], ModelsFetcherError>>;\n\n /**\n * Fetch a single model by modelId.\n * Uses the cached fetchAll result.\n */\n fetchById(modelId: string): Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n\nexport interface IModelsFetcherErrors {\n notFound: ModelNotFoundError;\n persistence: ModelPersistenceError;\n}\n\ntype ModelsFetcherError = IModelsFetcherErrors[keyof IModelsFetcherErrors];\n\nexport const ModelsFetcher = createAbstraction<IModelsFetcher>(\"ModelsFetcher\");\n\nexport namespace ModelsFetcher {\n export type Interface = IModelsFetcher;\n export type Error = ModelsFetcherError;\n\n export type FetchAllReturn = Promise<Result<CmsModel[], ModelsFetcherError>>;\n export type FetchByIdReturn = Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n"],"names":["CmsModelPluginInstance","createAbstraction","PluginModelsProvider","ModelCache","ModelsFetcher"],"mappings":";AAWO,MAAMA,yBAAyBC,kBAAkC;AAajE,MAAMC,uBACTD,kBAAyC;AAMtC,MAAME,aAAaF,kBAA+C;AAiClE,MAAMG,gBAAgBH,kBAAkC"}
|