@webiny/api-website-builder 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7
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/domain/page/EntryToPageMapper.js +4 -1
- package/domain/page/EntryToPageMapper.js.map +1 -1
- package/domain/page/PagePath.d.ts +7 -0
- package/domain/page/PagePath.js +36 -0
- package/domain/page/PagePath.js.map +1 -0
- package/domain/page/abstractions.d.ts +22 -3
- package/domain/page/abstractions.js.map +1 -1
- package/domain/page/errors.d.ts +12 -0
- package/domain/page/errors.js +22 -0
- package/domain/page/errors.js.map +1 -1
- package/domain/permissionsSchema.d.ts +29 -0
- package/domain/permissionsSchema.js +32 -0
- package/domain/permissionsSchema.js.map +1 -0
- package/exports/api/website-builder/page.d.ts +12 -8
- package/exports/api/website-builder/page.js +12 -8
- package/exports/api/website-builder/page.js.map +1 -1
- package/exports/api/website-builder/redirect.d.ts +4 -4
- package/exports/api/website-builder/redirect.js +4 -4
- package/exports/api/website-builder/redirect.js.map +1 -1
- package/features/installer/ApiKeyInstaller.d.ts +1 -1
- package/features/installer/ApiKeyInstaller.js +5 -2
- package/features/installer/ApiKeyInstaller.js.map +1 -1
- package/features/installer/feature.d.ts +4 -1
- package/features/nextjs/abstractions.d.ts +1 -0
- package/features/nextjs/abstractions.js +1 -0
- package/features/nextjs/abstractions.js.map +1 -1
- package/features/nextjs/feature.d.ts +4 -1
- package/features/pages/CreatePage/CreatePageUseCase.d.ts +4 -2
- package/features/pages/CreatePage/CreatePageUseCase.js +11 -3
- package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -1
- package/features/pages/CreatePage/abstractions.d.ts +10 -6
- package/features/pages/CreatePage/abstractions.js +5 -2
- package/features/pages/CreatePage/abstractions.js.map +1 -1
- package/features/pages/CreatePage/events.d.ts +3 -3
- package/features/pages/CreatePage/events.js +4 -4
- package/features/pages/CreatePage/events.js.map +1 -1
- package/features/pages/CreatePage/feature.d.ts +4 -1
- package/features/pages/CreatePage/index.d.ts +1 -1
- package/features/pages/CreatePage/index.js +1 -1
- package/features/pages/CreatePage/index.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +6 -2
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +19 -3
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +11 -7
- package/features/pages/CreatePageRevisionFrom/abstractions.js +5 -2
- package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/events.d.ts +3 -3
- package/features/pages/CreatePageRevisionFrom/events.js +4 -4
- package/features/pages/CreatePageRevisionFrom/events.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/feature.d.ts +4 -1
- package/features/pages/CreatePageRevisionFrom/index.d.ts +1 -1
- package/features/pages/CreatePageRevisionFrom/index.js +1 -1
- package/features/pages/CreatePageRevisionFrom/index.js.map +1 -1
- package/features/pages/DeletePage/DeletePageRepository.d.ts +1 -3
- package/features/pages/DeletePage/DeletePageRepository.js +2 -13
- package/features/pages/DeletePage/DeletePageRepository.js.map +1 -1
- package/features/pages/DeletePage/DeletePageUseCase.d.ts +7 -5
- package/features/pages/DeletePage/DeletePageUseCase.js +16 -9
- package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -1
- package/features/pages/DeletePage/abstractions.d.ts +12 -7
- package/features/pages/DeletePage/abstractions.js +5 -2
- package/features/pages/DeletePage/abstractions.js.map +1 -1
- package/features/pages/DeletePage/events.d.ts +3 -3
- package/features/pages/DeletePage/events.js +4 -4
- package/features/pages/DeletePage/events.js.map +1 -1
- package/features/pages/DeletePage/feature.d.ts +4 -1
- package/features/pages/DeletePage/index.d.ts +1 -1
- package/features/pages/DeletePage/index.js +1 -1
- package/features/pages/DeletePage/index.js.map +1 -1
- package/features/pages/DuplicatePage/DuplicatePageRepository.d.ts +2 -2
- package/features/pages/DuplicatePage/DuplicatePageRepository.js +9 -1
- package/features/pages/DuplicatePage/DuplicatePageRepository.js.map +1 -1
- package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +4 -2
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js +11 -3
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -1
- package/features/pages/DuplicatePage/abstractions.d.ts +18 -8
- package/features/pages/DuplicatePage/abstractions.js +5 -2
- package/features/pages/DuplicatePage/abstractions.js.map +1 -1
- package/features/pages/DuplicatePage/events.d.ts +3 -3
- package/features/pages/DuplicatePage/events.js +4 -4
- package/features/pages/DuplicatePage/events.js.map +1 -1
- package/features/pages/DuplicatePage/feature.d.ts +4 -1
- package/features/pages/DuplicatePage/index.d.ts +2 -1
- package/features/pages/DuplicatePage/index.js +1 -1
- package/features/pages/DuplicatePage/index.js.map +1 -1
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.d.ts +13 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js +32 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdRepository.js.map +1 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.d.ts +12 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js +31 -0
- package/features/pages/GetDeletedPageById/GetDeletedPageByIdUseCase.js.map +1 -0
- package/features/pages/GetDeletedPageById/abstractions.d.ts +42 -0
- package/features/pages/GetDeletedPageById/abstractions.js +15 -0
- package/features/pages/GetDeletedPageById/abstractions.js.map +1 -0
- package/features/pages/GetDeletedPageById/feature.d.ts +4 -0
- package/features/pages/GetDeletedPageById/feature.js +12 -0
- package/features/pages/GetDeletedPageById/feature.js.map +1 -0
- package/features/pages/GetDeletedPageById/index.d.ts +1 -0
- package/features/pages/GetDeletedPageById/index.js +3 -0
- package/features/pages/GetDeletedPageById/index.js.map +1 -0
- package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +3 -1
- package/features/pages/GetPageById/GetPageByIdUseCase.js +19 -3
- package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -1
- package/features/pages/GetPageById/abstractions.d.ts +3 -1
- package/features/pages/GetPageById/abstractions.js +1 -0
- package/features/pages/GetPageById/abstractions.js.map +1 -1
- package/features/pages/GetPageById/feature.d.ts +4 -1
- package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +3 -1
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js +19 -3
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -1
- package/features/pages/GetPageByPath/abstractions.d.ts +3 -1
- package/features/pages/GetPageByPath/abstractions.js +1 -0
- package/features/pages/GetPageByPath/abstractions.js.map +1 -1
- package/features/pages/GetPageByPath/feature.d.ts +4 -1
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.d.ts +15 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js +61 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsRepository.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.d.ts +10 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js +20 -0
- package/features/pages/GetPageLanguagePaths/GetPageLanguagePathsUseCase.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/abstractions.d.ts +20 -0
- package/features/pages/GetPageLanguagePaths/abstractions.js +6 -0
- package/features/pages/GetPageLanguagePaths/abstractions.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/feature.d.ts +4 -0
- package/features/pages/GetPageLanguagePaths/feature.js +12 -0
- package/features/pages/GetPageLanguagePaths/feature.js.map +1 -0
- package/features/pages/GetPageLanguagePaths/index.d.ts +1 -0
- package/features/pages/GetPageLanguagePaths/index.js +3 -0
- package/features/pages/GetPageLanguagePaths/index.js.map +1 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +3 -1
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +22 -3
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -1
- package/features/pages/GetPageRevisions/abstractions.d.ts +3 -1
- package/features/pages/GetPageRevisions/abstractions.js +1 -0
- package/features/pages/GetPageRevisions/abstractions.js.map +1 -1
- package/features/pages/GetPageRevisions/feature.d.ts +4 -1
- package/features/pages/ListDeletedPages/ListDeletedPagesRepository.d.ts +17 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js +49 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesRepository.js.map +1 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.d.ts +14 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js +35 -0
- package/features/pages/ListDeletedPages/ListDeletedPagesUseCase.js.map +1 -0
- package/features/pages/ListDeletedPages/abstractions.d.ts +56 -0
- package/features/pages/ListDeletedPages/abstractions.js +15 -0
- package/features/pages/ListDeletedPages/abstractions.js.map +1 -0
- package/features/pages/ListDeletedPages/feature.d.ts +4 -0
- package/features/pages/ListDeletedPages/feature.js +12 -0
- package/features/pages/ListDeletedPages/feature.js.map +1 -0
- package/features/pages/ListDeletedPages/index.d.ts +1 -0
- package/features/pages/ListDeletedPages/index.js +3 -0
- package/features/pages/ListDeletedPages/index.js.map +1 -0
- package/features/pages/ListPages/ListPagesRepository.d.ts +5 -1
- package/features/pages/ListPages/ListPagesRepository.js +14 -4
- package/features/pages/ListPages/ListPagesRepository.js.map +1 -1
- package/features/pages/ListPages/ListPagesUseCase.d.ts +5 -1
- package/features/pages/ListPages/ListPagesUseCase.js +24 -4
- package/features/pages/ListPages/ListPagesUseCase.js.map +1 -1
- package/features/pages/ListPages/abstractions.d.ts +3 -1
- package/features/pages/ListPages/abstractions.js +1 -0
- package/features/pages/ListPages/abstractions.js.map +1 -1
- package/features/pages/ListPages/feature.d.ts +4 -1
- package/features/pages/MovePage/MovePageUseCase.d.ts +4 -2
- package/features/pages/MovePage/MovePageUseCase.js +15 -3
- package/features/pages/MovePage/MovePageUseCase.js.map +1 -1
- package/features/pages/MovePage/abstractions.d.ts +11 -7
- package/features/pages/MovePage/abstractions.js +5 -2
- package/features/pages/MovePage/abstractions.js.map +1 -1
- package/features/pages/MovePage/events.d.ts +3 -3
- package/features/pages/MovePage/events.js +4 -4
- package/features/pages/MovePage/events.js.map +1 -1
- package/features/pages/MovePage/feature.d.ts +4 -1
- package/features/pages/MovePage/index.d.ts +1 -1
- package/features/pages/MovePage/index.js +1 -1
- package/features/pages/MovePage/index.js.map +1 -1
- package/features/pages/PublishPage/PublishPageUseCase.d.ts +4 -2
- package/features/pages/PublishPage/PublishPageUseCase.js +15 -3
- package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -1
- package/features/pages/PublishPage/abstractions.d.ts +11 -7
- package/features/pages/PublishPage/abstractions.js +5 -2
- package/features/pages/PublishPage/abstractions.js.map +1 -1
- package/features/pages/PublishPage/events.d.ts +3 -3
- package/features/pages/PublishPage/events.js +4 -4
- package/features/pages/PublishPage/events.js.map +1 -1
- package/features/pages/PublishPage/feature.d.ts +4 -1
- package/features/pages/PublishPage/index.d.ts +1 -1
- package/features/pages/PublishPage/index.js +1 -1
- package/features/pages/PublishPage/index.js.map +1 -1
- package/features/pages/RestorePage/RestorePageRepository.d.ts +13 -0
- package/features/pages/RestorePage/RestorePageRepository.js +30 -0
- package/features/pages/RestorePage/RestorePageRepository.js.map +1 -0
- package/features/pages/RestorePage/RestorePageUseCase.d.ts +16 -0
- package/features/pages/RestorePage/RestorePageUseCase.js +52 -0
- package/features/pages/RestorePage/RestorePageUseCase.js.map +1 -0
- package/features/pages/RestorePage/abstractions.d.ts +59 -0
- package/features/pages/RestorePage/abstractions.js +30 -0
- package/features/pages/RestorePage/abstractions.js.map +1 -0
- package/features/pages/RestorePage/events.d.ts +10 -0
- package/features/pages/RestorePage/events.js +19 -0
- package/features/pages/RestorePage/events.js.map +1 -0
- package/features/pages/RestorePage/feature.d.ts +4 -0
- package/features/pages/RestorePage/feature.js +12 -0
- package/features/pages/RestorePage/feature.js.map +1 -0
- package/features/pages/RestorePage/index.d.ts +1 -0
- package/features/pages/RestorePage/index.js +3 -0
- package/features/pages/RestorePage/index.js.map +1 -0
- package/features/pages/TranslatePage/TranslatePageUseCase.d.ts +17 -0
- package/features/pages/TranslatePage/TranslatePageUseCase.js +74 -0
- package/features/pages/TranslatePage/TranslatePageUseCase.js.map +1 -0
- package/features/pages/TranslatePage/abstractions.d.ts +29 -0
- package/features/pages/TranslatePage/abstractions.js +14 -0
- package/features/pages/TranslatePage/abstractions.js.map +1 -0
- package/features/pages/TranslatePage/feature.d.ts +4 -0
- package/features/pages/TranslatePage/feature.js +10 -0
- package/features/pages/TranslatePage/feature.js.map +1 -0
- package/features/pages/TranslatePage/index.d.ts +1 -0
- package/features/pages/TranslatePage/index.js +3 -0
- package/features/pages/TranslatePage/index.js.map +1 -0
- package/features/pages/TrashPage/TrashPageRepository.d.ts +13 -0
- package/features/pages/TrashPage/TrashPageRepository.js +30 -0
- package/features/pages/TrashPage/TrashPageRepository.js.map +1 -0
- package/features/pages/TrashPage/TrashPageUseCase.d.ts +16 -0
- package/features/pages/TrashPage/TrashPageUseCase.js +52 -0
- package/features/pages/TrashPage/TrashPageUseCase.js.map +1 -0
- package/features/pages/TrashPage/abstractions.d.ts +58 -0
- package/features/pages/TrashPage/abstractions.js +30 -0
- package/features/pages/TrashPage/abstractions.js.map +1 -0
- package/features/pages/TrashPage/events.d.ts +10 -0
- package/features/pages/TrashPage/events.js +19 -0
- package/features/pages/TrashPage/events.js.map +1 -0
- package/features/pages/TrashPage/feature.d.ts +4 -0
- package/features/pages/TrashPage/feature.js +12 -0
- package/features/pages/TrashPage/feature.js.map +1 -0
- package/features/pages/TrashPage/index.d.ts +1 -0
- package/features/pages/TrashPage/index.js +3 -0
- package/features/pages/TrashPage/index.js.map +1 -0
- package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +4 -2
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js +15 -3
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -1
- package/features/pages/UnpublishPage/abstractions.d.ts +11 -7
- package/features/pages/UnpublishPage/abstractions.js +5 -2
- package/features/pages/UnpublishPage/abstractions.js.map +1 -1
- package/features/pages/UnpublishPage/events.d.ts +3 -3
- package/features/pages/UnpublishPage/events.js +4 -4
- package/features/pages/UnpublishPage/events.js.map +1 -1
- package/features/pages/UnpublishPage/feature.d.ts +4 -1
- package/features/pages/UnpublishPage/index.d.ts +1 -1
- package/features/pages/UnpublishPage/index.js +1 -1
- package/features/pages/UnpublishPage/index.js.map +1 -1
- package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +4 -2
- package/features/pages/UpdatePage/UpdatePageUseCase.js +15 -3
- package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -1
- package/features/pages/UpdatePage/abstractions.d.ts +12 -9
- package/features/pages/UpdatePage/abstractions.js +5 -2
- package/features/pages/UpdatePage/abstractions.js.map +1 -1
- package/features/pages/UpdatePage/events.d.ts +3 -3
- package/features/pages/UpdatePage/events.js +4 -4
- package/features/pages/UpdatePage/events.js.map +1 -1
- package/features/pages/UpdatePage/feature.d.ts +4 -1
- package/features/pages/UpdatePage/index.d.ts +1 -1
- package/features/pages/UpdatePage/index.js +1 -1
- package/features/pages/UpdatePage/index.js.map +1 -1
- package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.d.ts +15 -0
- package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.js +44 -0
- package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionRepository.js.map +1 -0
- package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.d.ts +16 -0
- package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.js +66 -0
- package/features/pages/UpdatePageRevisionDescription/UpdatePageRevisionDescriptionUseCase.js.map +1 -0
- package/features/pages/UpdatePageRevisionDescription/abstractions.d.ts +67 -0
- package/features/pages/UpdatePageRevisionDescription/abstractions.js +29 -0
- package/features/pages/UpdatePageRevisionDescription/abstractions.js.map +1 -0
- package/features/pages/UpdatePageRevisionDescription/events.d.ts +10 -0
- package/features/pages/UpdatePageRevisionDescription/events.js +19 -0
- package/features/pages/UpdatePageRevisionDescription/events.js.map +1 -0
- package/features/pages/UpdatePageRevisionDescription/feature.d.ts +4 -0
- package/features/pages/UpdatePageRevisionDescription/feature.js +12 -0
- package/features/pages/UpdatePageRevisionDescription/feature.js.map +1 -0
- package/features/pages/UpdatePageRevisionDescription/index.d.ts +1 -0
- package/features/pages/UpdatePageRevisionDescription/index.js +3 -0
- package/features/pages/UpdatePageRevisionDescription/index.js.map +1 -0
- package/features/permissions/abstractions.d.ts +34 -0
- package/features/permissions/abstractions.js +5 -0
- package/features/permissions/abstractions.js.map +1 -0
- package/features/permissions/feature.d.ts +4 -0
- package/features/permissions/feature.js +6 -0
- package/features/permissions/feature.js.map +1 -0
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +4 -2
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +11 -3
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -1
- package/features/redirects/CreateRedirect/abstractions.d.ts +11 -7
- package/features/redirects/CreateRedirect/abstractions.js +5 -2
- package/features/redirects/CreateRedirect/abstractions.js.map +1 -1
- package/features/redirects/CreateRedirect/events.d.ts +3 -3
- package/features/redirects/CreateRedirect/events.js +4 -4
- package/features/redirects/CreateRedirect/events.js.map +1 -1
- package/features/redirects/CreateRedirect/feature.d.ts +4 -1
- package/features/redirects/CreateRedirect/index.d.ts +1 -1
- package/features/redirects/CreateRedirect/index.js +1 -1
- package/features/redirects/CreateRedirect/index.js.map +1 -1
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +4 -2
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +11 -4
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -1
- package/features/redirects/DeleteRedirect/abstractions.d.ts +11 -7
- package/features/redirects/DeleteRedirect/abstractions.js +5 -2
- package/features/redirects/DeleteRedirect/abstractions.js.map +1 -1
- package/features/redirects/DeleteRedirect/events.d.ts +3 -3
- package/features/redirects/DeleteRedirect/events.js +4 -4
- package/features/redirects/DeleteRedirect/events.js.map +1 -1
- package/features/redirects/DeleteRedirect/feature.d.ts +4 -1
- package/features/redirects/DeleteRedirect/index.d.ts +1 -1
- package/features/redirects/DeleteRedirect/index.js +1 -1
- package/features/redirects/DeleteRedirect/index.js.map +1 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +3 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +10 -3
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -1
- package/features/redirects/GetActiveRedirects/abstractions.d.ts +3 -1
- package/features/redirects/GetActiveRedirects/abstractions.js +1 -0
- package/features/redirects/GetActiveRedirects/abstractions.js.map +1 -1
- package/features/redirects/GetActiveRedirects/feature.d.ts +4 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +3 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +19 -4
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -1
- package/features/redirects/GetRedirectById/abstractions.d.ts +3 -1
- package/features/redirects/GetRedirectById/abstractions.js +1 -0
- package/features/redirects/GetRedirectById/abstractions.js.map +1 -1
- package/features/redirects/GetRedirectById/feature.d.ts +4 -1
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.d.ts +3 -3
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js +2 -2
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.d.ts +3 -3
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js +2 -2
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.d.ts +3 -3
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js +2 -2
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/abstractions.d.ts +1 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.js +1 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/feature.d.ts +4 -1
- package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +5 -1
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js +23 -4
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -1
- package/features/redirects/ListRedirects/abstractions.d.ts +4 -1
- package/features/redirects/ListRedirects/abstractions.js +1 -0
- package/features/redirects/ListRedirects/abstractions.js.map +1 -1
- package/features/redirects/ListRedirects/feature.d.ts +4 -1
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +4 -2
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +15 -3
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -1
- package/features/redirects/MoveRedirect/abstractions.d.ts +11 -7
- package/features/redirects/MoveRedirect/abstractions.js +5 -2
- package/features/redirects/MoveRedirect/abstractions.js.map +1 -1
- package/features/redirects/MoveRedirect/events.d.ts +3 -3
- package/features/redirects/MoveRedirect/events.js +4 -4
- package/features/redirects/MoveRedirect/events.js.map +1 -1
- package/features/redirects/MoveRedirect/feature.d.ts +4 -1
- package/features/redirects/MoveRedirect/index.d.ts +1 -1
- package/features/redirects/MoveRedirect/index.js +1 -1
- package/features/redirects/MoveRedirect/index.js.map +1 -1
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +4 -2
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +15 -3
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -1
- package/features/redirects/UpdateRedirect/abstractions.d.ts +11 -7
- package/features/redirects/UpdateRedirect/abstractions.js +5 -2
- package/features/redirects/UpdateRedirect/abstractions.js.map +1 -1
- package/features/redirects/UpdateRedirect/events.d.ts +3 -3
- package/features/redirects/UpdateRedirect/events.js +4 -4
- package/features/redirects/UpdateRedirect/events.js.map +1 -1
- package/features/redirects/UpdateRedirect/feature.d.ts +4 -1
- package/features/redirects/UpdateRedirect/index.d.ts +1 -1
- package/features/redirects/UpdateRedirect/index.js +1 -1
- package/features/redirects/UpdateRedirect/index.js.map +1 -1
- package/features/tenantManager/TenantModelExtension.js +5 -5
- package/features/tenantManager/TenantModelExtension.js.map +1 -1
- package/features/tenantManager/feature.d.ts +4 -1
- package/graphql/pages/pages.gql.js +96 -3
- package/graphql/pages/pages.gql.js.map +1 -1
- package/graphql/pages/pages.typeDefs.d.ts +1 -1
- package/graphql/pages/pages.typeDefs.js +22 -1
- package/graphql/pages/pages.typeDefs.js.map +1 -1
- package/index.js +21 -6
- package/index.js.map +1 -1
- package/package.json +27 -25
- package/features/pages/PagePermissions/feature.d.ts +0 -1
- package/features/pages/PagePermissions/feature.js +0 -53
- package/features/pages/PagePermissions/feature.js.map +0 -1
- package/features/redirects/RedirectPermissions/feature.d.ts +0 -1
- package/features/redirects/RedirectPermissions/feature.js +0 -45
- package/features/redirects/RedirectPermissions/feature.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type Result } from "@webiny/feature/api";
|
|
2
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
3
|
-
import type { DomainEvent } from "@webiny/api-core/features/
|
|
2
|
+
import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import type { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
4
4
|
import type { WbPage } from "../../../domain/page/abstractions.js";
|
|
5
|
-
import { PageNotFoundError, PagePersistenceError } from "../../../domain/page/errors.js";
|
|
5
|
+
import type { PageNotFoundError, PagePersistenceError, PageNotAuthorizedError, PageNotFoundTrashedError } from "../../../domain/page/errors.js";
|
|
6
6
|
export interface IDeleteWbPageParams {
|
|
7
7
|
id: string;
|
|
8
8
|
}
|
|
@@ -25,10 +25,13 @@ export interface IDeletePageUseCase {
|
|
|
25
25
|
execute(params: IDeleteWbPageParams): Promise<Result<void, UseCaseError>>;
|
|
26
26
|
}
|
|
27
27
|
export interface IDeletePageUseCaseErrors {
|
|
28
|
+
notAuthorized: PageNotAuthorizedError;
|
|
28
29
|
notFound: PageNotFoundError;
|
|
30
|
+
trashedNotFound: PageNotFoundTrashedError;
|
|
29
31
|
persistence: PagePersistenceError;
|
|
30
32
|
}
|
|
31
33
|
type UseCaseError = IDeletePageUseCaseErrors[keyof IDeletePageUseCaseErrors];
|
|
34
|
+
/** Delete a page. */
|
|
32
35
|
export declare const DeletePageUseCase: import("@webiny/di").Abstraction<IDeletePageUseCase>;
|
|
33
36
|
export declare namespace DeletePageUseCase {
|
|
34
37
|
type Interface = IDeletePageUseCase;
|
|
@@ -42,14 +45,16 @@ export interface PageBeforeDeletePayload {
|
|
|
42
45
|
export interface PageAfterDeletePayload {
|
|
43
46
|
page: WbPage;
|
|
44
47
|
}
|
|
45
|
-
|
|
46
|
-
export declare
|
|
48
|
+
/** Hook into page lifecycle before a page is deleted. */
|
|
49
|
+
export declare const PageBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageBeforeDeletePayload>>>;
|
|
50
|
+
export declare namespace PageBeforeDeleteEventHandler {
|
|
47
51
|
type Interface = IEventHandler<DomainEvent<PageBeforeDeletePayload>>;
|
|
48
52
|
type Event = DomainEvent<PageBeforeDeletePayload>;
|
|
49
53
|
type Page = WbPage;
|
|
50
54
|
}
|
|
51
|
-
|
|
52
|
-
export declare
|
|
55
|
+
/** Hook into page lifecycle after a page is deleted. */
|
|
56
|
+
export declare const PageAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageAfterDeletePayload>>>;
|
|
57
|
+
export declare namespace PageAfterDeleteEventHandler {
|
|
53
58
|
type Interface = IEventHandler<DomainEvent<PageAfterDeletePayload>>;
|
|
54
59
|
type Event = DomainEvent<PageAfterDeletePayload>;
|
|
55
60
|
type Page = WbPage;
|
|
@@ -14,6 +14,7 @@ export const DeletePageRepository = createAbstraction("Wb/DeletePageRepository")
|
|
|
14
14
|
// Use Case Abstraction
|
|
15
15
|
// ============================================================================
|
|
16
16
|
|
|
17
|
+
/** Delete a page. */
|
|
17
18
|
export const DeletePageUseCase = createAbstraction("Wb/DeletePageUseCase");
|
|
18
19
|
|
|
19
20
|
// ============================================================================
|
|
@@ -24,7 +25,9 @@ export const DeletePageUseCase = createAbstraction("Wb/DeletePageUseCase");
|
|
|
24
25
|
// Event Handler Abstractions
|
|
25
26
|
// ============================================================================
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
export const
|
|
28
|
+
/** Hook into page lifecycle before a page is deleted. */
|
|
29
|
+
export const PageBeforeDeleteEventHandler = createAbstraction("Wb/PageBeforeDeleteEventHandler");
|
|
30
|
+
/** Hook into page lifecycle after a page is deleted. */
|
|
31
|
+
export const PageAfterDeleteEventHandler = createAbstraction("Wb/PageAfterDeleteEventHandler");
|
|
29
32
|
|
|
30
33
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DeletePageRepository","DeletePageUseCase","
|
|
1
|
+
{"version":3,"names":["createAbstraction","DeletePageRepository","DeletePageUseCase","PageBeforeDeleteEventHandler","PageAfterDeleteEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport type {\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError,\n PageNotFoundTrashedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IDeleteWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport interface IDeletePageRepository {\n execute(params: IDeleteWbPageParams): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeletePageRepositoryErrors {\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IDeletePageRepositoryErrors[keyof IDeletePageRepositoryErrors];\n\nexport const DeletePageRepository =\n createAbstraction<IDeletePageRepository>(\"Wb/DeletePageRepository\");\n\nexport namespace DeletePageRepository {\n export type Interface = IDeletePageRepository;\n export type Params = IDeleteWbPageParams;\n export type Return = Promise<Result<void, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IDeletePageUseCase {\n execute(params: IDeleteWbPageParams): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeletePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n notFound: PageNotFoundError;\n trashedNotFound: PageNotFoundTrashedError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IDeletePageUseCaseErrors[keyof IDeletePageUseCaseErrors];\n\n/** Delete a page. */\nexport const DeletePageUseCase = createAbstraction<IDeletePageUseCase>(\"Wb/DeletePageUseCase\");\n\nexport namespace DeletePageUseCase {\n export type Interface = IDeletePageUseCase;\n export type Params = IDeleteWbPageParams;\n export type Return = Promise<Result<void, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeDeletePayload {\n page: WbPage;\n}\n\nexport interface PageAfterDeletePayload {\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is deleted. */\nexport const PageBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeDeletePayload>>\n>(\"Wb/PageBeforeDeleteEventHandler\");\n\nexport namespace PageBeforeDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeDeletePayload>>;\n export type Event = DomainEvent<PageBeforeDeletePayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is deleted. */\nexport const PageAfterDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterDeletePayload>>\n>(\"Wb/PageAfterDeleteEventHandler\");\n\nexport namespace PageAfterDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterDeletePayload>>;\n export type Event = DomainEvent<PageAfterDeletePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAWpE;AACA;AACA;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,yBAAyB,CAAC;;AASvE;AACA;AACA;;AAeA;AACA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,sBAAsB,CAAC;;AAS9F;AACA;AACA;;AAUA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,4BAA4B,GAAGH,iBAAiB,CAE3D,iCAAiC,CAAC;AAQpC;AACA,OAAO,MAAMI,2BAA2B,GAAGJ,iBAAiB,CAE1D,gCAAgC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
2
|
import type { PageBeforeDeletePayload, PageAfterDeletePayload } from "./abstractions.js";
|
|
3
3
|
export declare class PageBeforeDeleteEvent extends DomainEvent<PageBeforeDeletePayload> {
|
|
4
4
|
eventType: "page.beforeDelete";
|
|
5
|
-
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageBeforeDeletePayload>>>;
|
|
6
6
|
}
|
|
7
7
|
export declare class PageAfterDeleteEvent extends DomainEvent<PageAfterDeletePayload> {
|
|
8
8
|
eventType: "page.afterDelete";
|
|
9
|
-
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
9
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageAfterDeletePayload>>>;
|
|
10
10
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
2
|
-
import {
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { PageBeforeDeleteEventHandler, PageAfterDeleteEventHandler } from "./abstractions.js";
|
|
3
3
|
// PageBeforeDelete Event
|
|
4
4
|
export class PageBeforeDeleteEvent extends DomainEvent {
|
|
5
5
|
eventType = "page.beforeDelete";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return PageBeforeDeleteEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ export class PageBeforeDeleteEvent extends DomainEvent {
|
|
|
12
12
|
export class PageAfterDeleteEvent extends DomainEvent {
|
|
13
13
|
eventType = "page.afterDelete";
|
|
14
14
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
15
|
+
return PageAfterDeleteEventHandler;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DomainEvent","
|
|
1
|
+
{"version":3,"names":["DomainEvent","PageBeforeDeleteEventHandler","PageAfterDeleteEventHandler","PageBeforeDeleteEvent","eventType","getHandlerAbstraction","PageAfterDeleteEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { PageBeforeDeleteEventHandler, PageAfterDeleteEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeDeletePayload, PageAfterDeletePayload } from \"./abstractions.js\";\n\n// PageBeforeDelete Event\nexport class PageBeforeDeleteEvent extends DomainEvent<PageBeforeDeletePayload> {\n eventType = \"page.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeDeleteEventHandler;\n }\n}\n\n// PageAfterDelete Event\nexport class PageAfterDeleteEvent extends DomainEvent<PageAfterDeletePayload> {\n eventType = \"page.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return PageAfterDeleteEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,4BAA4B,EAAEC,2BAA2B;AAGlE;AACA,OAAO,MAAMC,qBAAqB,SAASH,WAAW,CAA0B;EAC5EI,SAAS,GAAG,mBAAmB;EAE/BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMK,oBAAoB,SAASN,WAAW,CAAyB;EAC1EI,SAAS,GAAG,kBAAkB;EAE9BC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,2BAA2B;EACtC;AACJ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PageAfterDeleteEventHandler, PageBeforeDeleteEventHandler, DeletePageUseCase } from "./abstractions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["PageAfterDeleteEventHandler","PageBeforeDeleteEventHandler","DeletePageUseCase"],"sources":["index.ts"],"sourcesContent":["export {\n PageAfterDeleteEventHandler,\n PageBeforeDeleteEventHandler,\n DeletePageUseCase\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,2BAA2B,EAC3BC,4BAA4B,EAC5BC,iBAAiB","ignoreList":[]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
|
|
2
2
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
|
|
3
|
-
import { DuplicatePageRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { DuplicatePageRepository as RepositoryAbstraction, type DuplicatePageCallback } from "./abstractions.js";
|
|
4
4
|
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
5
5
|
declare class DuplicatePageRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
6
6
|
private createEntry;
|
|
7
7
|
private getEntryById;
|
|
8
8
|
private pageModel;
|
|
9
9
|
constructor(createEntry: CreateEntryUseCase.Interface, getEntryById: GetEntryByIdUseCase.Interface, pageModel: PageModel.Interface);
|
|
10
|
-
execute(params: RepositoryAbstraction.Params): RepositoryAbstraction.Return;
|
|
10
|
+
execute(params: RepositoryAbstraction.Params, callback?: DuplicatePageCallback): RepositoryAbstraction.Return;
|
|
11
11
|
}
|
|
12
12
|
export declare const DuplicatePageRepository: typeof DuplicatePageRepositoryImpl & {
|
|
13
13
|
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDuplicatePageRepository>;
|
|
@@ -12,7 +12,7 @@ class DuplicatePageRepositoryImpl {
|
|
|
12
12
|
this.getEntryById = getEntryById;
|
|
13
13
|
this.pageModel = pageModel;
|
|
14
14
|
}
|
|
15
|
-
async execute(params) {
|
|
15
|
+
async execute(params, callback) {
|
|
16
16
|
// First, get the page to duplicate
|
|
17
17
|
const getResult = await this.getEntryById.execute(this.pageModel, params.id);
|
|
18
18
|
if (getResult.isFail()) {
|
|
@@ -36,6 +36,14 @@ class DuplicatePageRepositoryImpl {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
// Allow callers to mutate page data before creation
|
|
40
|
+
if (callback) {
|
|
41
|
+
await callback({
|
|
42
|
+
original: originalPage,
|
|
43
|
+
duplicate: newPageData
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
// Create the duplicated page
|
|
40
48
|
const result = await this.createEntry.execute(this.pageModel, {
|
|
41
49
|
location: newPageData.location,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","pick","CreateEntryUseCase","GetEntryByIdUseCase","DuplicatePageRepository","RepositoryAbstraction","PageModel","EntryToPageMapper","PageNotFoundError","PagePersistenceError","PageValidationError","DuplicatePageRepositoryImpl","constructor","createEntry","getEntryById","pageModel","execute","params","getResult","id","isFail","error","code","fail","originalPage","toPage","value","dataToDuplicate","newPageData","properties","path","title","result","location","values","message","page","ok","createImplementation","implementation","dependencies"],"sources":["DuplicatePageRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport pick from \"lodash/pick.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport {
|
|
1
|
+
{"version":3,"names":["Result","pick","CreateEntryUseCase","GetEntryByIdUseCase","DuplicatePageRepository","RepositoryAbstraction","PageModel","EntryToPageMapper","PageNotFoundError","PagePersistenceError","PageValidationError","DuplicatePageRepositoryImpl","constructor","createEntry","getEntryById","pageModel","execute","params","callback","getResult","id","isFail","error","code","fail","originalPage","toPage","value","dataToDuplicate","newPageData","properties","path","title","original","duplicate","result","location","values","message","page","ok","createImplementation","implementation","dependencies"],"sources":["DuplicatePageRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport pick from \"lodash/pick.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport {\n DuplicatePageRepository as RepositoryAbstraction,\n type DuplicatePageCallback\n} from \"./abstractions.js\";\nimport { PageModel } from \"~/domain/page/abstractions.js\";\nimport { EntryToPageMapper } from \"~/domain/page/EntryToPageMapper.js\";\nimport {\n PageNotFoundError,\n PagePersistenceError,\n PageValidationError\n} from \"~/domain/page/errors.js\";\n\nclass DuplicatePageRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private pageModel: PageModel.Interface\n ) {}\n\n async execute(\n params: RepositoryAbstraction.Params,\n callback?: DuplicatePageCallback\n ): RepositoryAbstraction.Return {\n // First, get the page to duplicate\n const getResult = await this.getEntryById.execute(this.pageModel, params.id);\n\n if (getResult.isFail()) {\n if (getResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new PageNotFoundError(params.id));\n }\n return Result.fail(new PagePersistenceError(getResult.error));\n }\n\n const originalPage = EntryToPageMapper.toPage(getResult.value);\n\n // Pick only the necessary data for duplication\n const dataToDuplicate = pick(originalPage, [\n \"bindings\",\n \"elements\",\n \"location\",\n \"properties\",\n \"metadata\",\n \"extensions\"\n ]);\n\n // Create new page data with \"Copy of\" prefix\n const newPageData = {\n ...dataToDuplicate,\n properties: {\n ...dataToDuplicate.properties,\n path: `${originalPage.properties.path}-copy`,\n title: \"Copy of \" + originalPage.properties.title\n }\n };\n\n // Allow callers to mutate page data before creation\n if (callback) {\n await callback({ original: originalPage, duplicate: newPageData });\n }\n\n // Create the duplicated page\n const result = await this.createEntry.execute(this.pageModel, {\n location: newPageData.location,\n values: newPageData\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/ValidationError\") {\n return Result.fail(new PageValidationError(result.error.message));\n }\n return Result.fail(new PagePersistenceError(result.error));\n }\n\n const page = EntryToPageMapper.toPage(result.value);\n return Result.ok(page);\n }\n}\n\nexport const DuplicatePageRepository = RepositoryAbstraction.createImplementation({\n implementation: DuplicatePageRepositoryImpl,\n dependencies: [CreateEntryUseCase, GetEntryByIdUseCase, PageModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,OAAOC,IAAI,MAAM,gBAAgB;AACjC,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,mBAAmB,QAAQ,6DAA6D;AACjG,SACIC,uBAAuB,IAAIC,qBAAqB;AAGpD,SAASC,SAAS;AAClB,SAASC,iBAAiB;AAC1B,SACIC,iBAAiB,EACjBC,oBAAoB,EACpBC,mBAAmB;AAGvB,MAAMC,2BAA2B,CAA4C;EACzEC,WAAWA,CACCC,WAAyC,EACzCC,YAA2C,EAC3CC,SAA8B,EACxC;IAAA,KAHUF,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,YAA2C,GAA3CA,YAA2C;IAAA,KAC3CC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CACTC,MAAoC,EACpCC,QAAgC,EACJ;IAC5B;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACL,YAAY,CAACE,OAAO,CAAC,IAAI,CAACD,SAAS,EAAEE,MAAM,CAACG,EAAE,CAAC;IAE5E,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,IAAIF,SAAS,CAACG,KAAK,CAACC,IAAI,KAAK,oBAAoB,EAAE;QAC/C,OAAOvB,MAAM,CAACwB,IAAI,CAAC,IAAIhB,iBAAiB,CAACS,MAAM,CAACG,EAAE,CAAC,CAAC;MACxD;MACA,OAAOpB,MAAM,CAACwB,IAAI,CAAC,IAAIf,oBAAoB,CAACU,SAAS,CAACG,KAAK,CAAC,CAAC;IACjE;IAEA,MAAMG,YAAY,GAAGlB,iBAAiB,CAACmB,MAAM,CAACP,SAAS,CAACQ,KAAK,CAAC;;IAE9D;IACA,MAAMC,eAAe,GAAG3B,IAAI,CAACwB,YAAY,EAAE,CACvC,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,CACf,CAAC;;IAEF;IACA,MAAMI,WAAW,GAAG;MAChB,GAAGD,eAAe;MAClBE,UAAU,EAAE;QACR,GAAGF,eAAe,CAACE,UAAU;QAC7BC,IAAI,EAAE,GAAGN,YAAY,CAACK,UAAU,CAACC,IAAI,OAAO;QAC5CC,KAAK,EAAE,UAAU,GAAGP,YAAY,CAACK,UAAU,CAACE;MAChD;IACJ,CAAC;;IAED;IACA,IAAId,QAAQ,EAAE;MACV,MAAMA,QAAQ,CAAC;QAAEe,QAAQ,EAAER,YAAY;QAAES,SAAS,EAAEL;MAAY,CAAC,CAAC;IACtE;;IAEA;IACA,MAAMM,MAAM,GAAG,MAAM,IAAI,CAACtB,WAAW,CAACG,OAAO,CAAC,IAAI,CAACD,SAAS,EAAE;MAC1DqB,QAAQ,EAAEP,WAAW,CAACO,QAAQ;MAC9BC,MAAM,EAAER;IACZ,CAAC,CAAC;IAEF,IAAIM,MAAM,CAACd,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIc,MAAM,CAACb,KAAK,CAACC,IAAI,KAAK,2BAA2B,EAAE;QACnD,OAAOvB,MAAM,CAACwB,IAAI,CAAC,IAAId,mBAAmB,CAACyB,MAAM,CAACb,KAAK,CAACgB,OAAO,CAAC,CAAC;MACrE;MACA,OAAOtC,MAAM,CAACwB,IAAI,CAAC,IAAIf,oBAAoB,CAAC0B,MAAM,CAACb,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMiB,IAAI,GAAGhC,iBAAiB,CAACmB,MAAM,CAACS,MAAM,CAACR,KAAK,CAAC;IACnD,OAAO3B,MAAM,CAACwC,EAAE,CAACD,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMnC,uBAAuB,GAAGC,qBAAqB,CAACoC,oBAAoB,CAAC;EAC9EC,cAAc,EAAE/B,2BAA2B;EAC3CgC,YAAY,EAAE,CAACzC,kBAAkB,EAAEC,mBAAmB,EAAEG,SAAS;AACrE,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/
|
|
1
|
+
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
2
|
import { DuplicatePageUseCase as UseCaseAbstraction, DuplicatePageRepository } from "./abstractions.js";
|
|
3
3
|
import { GetPageByIdUseCase } from "../../../features/pages/GetPageById/index.js";
|
|
4
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
4
5
|
declare class DuplicatePageUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
6
|
+
private permissions;
|
|
5
7
|
private eventPublisher;
|
|
6
8
|
private getPageById;
|
|
7
9
|
private repository;
|
|
8
|
-
constructor(eventPublisher: EventPublisherAbstraction.Interface, getPageById: GetPageByIdUseCase.Interface, repository: DuplicatePageRepository.Interface);
|
|
10
|
+
constructor(permissions: WbPermissions.Interface, eventPublisher: EventPublisherAbstraction.Interface, getPageById: GetPageByIdUseCase.Interface, repository: DuplicatePageRepository.Interface);
|
|
9
11
|
execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return;
|
|
10
12
|
}
|
|
11
13
|
export declare const DuplicatePageUseCase: import("@webiny/di").Implementation<typeof DuplicatePageUseCaseImpl>;
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
import { Result, createImplementation } from "@webiny/feature/api";
|
|
2
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
2
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
3
|
import { DuplicatePageUseCase as UseCaseAbstraction, DuplicatePageRepository } from "./abstractions.js";
|
|
4
4
|
import { PageBeforeDuplicateEvent, PageAfterDuplicateEvent } from "./events.js";
|
|
5
5
|
import { GetPageByIdUseCase } from "../GetPageById/index.js";
|
|
6
|
+
import { WbPermissions } from "../../permissions/abstractions.js";
|
|
7
|
+
import { PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
6
8
|
class DuplicatePageUseCaseImpl {
|
|
7
|
-
constructor(eventPublisher, getPageById, repository) {
|
|
9
|
+
constructor(permissions, eventPublisher, getPageById, repository) {
|
|
10
|
+
this.permissions = permissions;
|
|
8
11
|
this.eventPublisher = eventPublisher;
|
|
9
12
|
this.getPageById = getPageById;
|
|
10
13
|
this.repository = repository;
|
|
11
14
|
}
|
|
12
15
|
async execute(params) {
|
|
16
|
+
const hasPermission = await this.permissions.canCreate("page");
|
|
17
|
+
if (!hasPermission) {
|
|
18
|
+
return Result.fail(new PageNotAuthorizedError());
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
// Get the original page for events
|
|
14
22
|
const getResult = await this.getPageById.execute(params.id);
|
|
15
23
|
if (getResult.isFail()) {
|
|
@@ -41,7 +49,7 @@ class DuplicatePageUseCaseImpl {
|
|
|
41
49
|
export const DuplicatePageUseCase = createImplementation({
|
|
42
50
|
abstraction: UseCaseAbstraction,
|
|
43
51
|
implementation: DuplicatePageUseCaseImpl,
|
|
44
|
-
dependencies: [EventPublisher, GetPageByIdUseCase, DuplicatePageRepository]
|
|
52
|
+
dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, DuplicatePageRepository]
|
|
45
53
|
});
|
|
46
54
|
|
|
47
55
|
//# sourceMappingURL=DuplicatePageUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","EventPublisher","DuplicatePageUseCase","UseCaseAbstraction","DuplicatePageRepository","PageBeforeDuplicateEvent","PageAfterDuplicateEvent","GetPageByIdUseCase","DuplicatePageUseCaseImpl","constructor","eventPublisher","getPageById","repository","execute","params","getResult","id","isFail","original","value","beforeEvent","publish","result","afterEvent","page","ok","abstraction","implementation","dependencies"],"sources":["DuplicatePageUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","EventPublisher","DuplicatePageUseCase","UseCaseAbstraction","DuplicatePageRepository","PageBeforeDuplicateEvent","PageAfterDuplicateEvent","GetPageByIdUseCase","WbPermissions","PageNotAuthorizedError","DuplicatePageUseCaseImpl","constructor","permissions","eventPublisher","getPageById","repository","execute","params","hasPermission","canCreate","fail","getResult","id","isFail","original","value","beforeEvent","publish","result","afterEvent","page","ok","abstraction","implementation","dependencies"],"sources":["DuplicatePageUseCase.ts"],"sourcesContent":["import { Result, createImplementation } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n DuplicatePageUseCase as UseCaseAbstraction,\n DuplicatePageRepository\n} from \"./abstractions.js\";\nimport { PageBeforeDuplicateEvent, PageAfterDuplicateEvent } from \"./events.js\";\nimport { GetPageByIdUseCase } from \"~/features/pages/GetPageById/index.js\";\nimport { WbPermissions } from \"~/features/permissions/abstractions.js\";\nimport { PageNotAuthorizedError } from \"~/domain/page/errors.js\";\n\nclass DuplicatePageUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private permissions: WbPermissions.Interface,\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getPageById: GetPageByIdUseCase.Interface,\n private repository: DuplicatePageRepository.Interface\n ) {}\n\n async execute(params: UseCaseAbstraction.Params): UseCaseAbstraction.Return {\n const hasPermission = await this.permissions.canCreate(\"page\");\n if (!hasPermission) {\n return Result.fail(new PageNotAuthorizedError());\n }\n\n // Get the original page for events\n const getResult = await this.getPageById.execute(params.id);\n\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = getResult.value;\n\n // Publish before duplicate event\n const beforeEvent = new PageBeforeDuplicateEvent({\n original\n });\n\n await this.eventPublisher.publish(beforeEvent);\n\n // Execute the duplicate operation\n const result = await this.repository.execute(params);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after duplicate event\n const afterEvent = new PageAfterDuplicateEvent({\n original,\n page: result.value\n });\n\n await this.eventPublisher.publish(afterEvent);\n\n return Result.ok(result.value);\n }\n}\n\nexport const DuplicatePageUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DuplicatePageUseCaseImpl,\n dependencies: [WbPermissions, EventPublisher, GetPageByIdUseCase, DuplicatePageRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,qBAAqB;AAClE,SACIC,cAAc,QAEX,mDAAmD;AAC1D,SACIC,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAE3B,SAASC,wBAAwB,EAAEC,uBAAuB;AAC1D,SAASC,kBAAkB;AAC3B,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAE/B,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,WAAoC,EACpCC,cAAmD,EACnDC,WAAyC,EACzCC,UAA6C,EACvD;IAAA,KAJUH,WAAoC,GAApCA,WAAoC;IAAA,KACpCC,cAAmD,GAAnDA,cAAmD;IAAA,KACnDC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAA6C,GAA7CA,UAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAiC,EAA6B;IACxE,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACN,WAAW,CAACO,SAAS,CAAC,MAAM,CAAC;IAC9D,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOnB,MAAM,CAACqB,IAAI,CAAC,IAAIX,sBAAsB,CAAC,CAAC,CAAC;IACpD;;IAEA;IACA,MAAMY,SAAS,GAAG,MAAM,IAAI,CAACP,WAAW,CAACE,OAAO,CAACC,MAAM,CAACK,EAAE,CAAC;IAE3D,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOF,SAAS;IACpB;IAEA,MAAMG,QAAQ,GAAGH,SAAS,CAACI,KAAK;;IAEhC;IACA,MAAMC,WAAW,GAAG,IAAIrB,wBAAwB,CAAC;MAC7CmB;IACJ,CAAC,CAAC;IAEF,MAAM,IAAI,CAACX,cAAc,CAACc,OAAO,CAACD,WAAW,CAAC;;IAE9C;IACA,MAAME,MAAM,GAAG,MAAM,IAAI,CAACb,UAAU,CAACC,OAAO,CAACC,MAAM,CAAC;IAEpD,IAAIW,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOK,MAAM;IACjB;;IAEA;IACA,MAAMC,UAAU,GAAG,IAAIvB,uBAAuB,CAAC;MAC3CkB,QAAQ;MACRM,IAAI,EAAEF,MAAM,CAACH;IACjB,CAAC,CAAC;IAEF,MAAM,IAAI,CAACZ,cAAc,CAACc,OAAO,CAACE,UAAU,CAAC;IAE7C,OAAO9B,MAAM,CAACgC,EAAE,CAACH,MAAM,CAACH,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMvB,oBAAoB,GAAGF,oBAAoB,CAAC;EACrDgC,WAAW,EAAE7B,kBAAkB;EAC/B8B,cAAc,EAAEvB,wBAAwB;EACxCwB,YAAY,EAAE,CAAC1B,aAAa,EAAEP,cAAc,EAAEM,kBAAkB,EAAEH,uBAAuB;AAC7F,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { type Result } from "@webiny/feature/api";
|
|
2
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
3
|
-
import type { DomainEvent } from "@webiny/api-core/features/
|
|
2
|
+
import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import type { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
4
4
|
import type { WbPage } from "../../../domain/page/abstractions.js";
|
|
5
|
-
import { PageValidationError, PageNotFoundError, PagePersistenceError } from "../../../domain/page/errors.js";
|
|
5
|
+
import { PageValidationError, PageNotFoundError, PagePersistenceError, PageNotAuthorizedError } from "../../../domain/page/errors.js";
|
|
6
6
|
export interface IDuplicateWbPageParams {
|
|
7
7
|
id: string;
|
|
8
8
|
}
|
|
9
|
+
export type DuplicatePageData = Pick<WbPage, "bindings" | "elements" | "location" | "properties" | "metadata" | "extensions">;
|
|
10
|
+
export interface DuplicatePageCallbackParams {
|
|
11
|
+
original: WbPage;
|
|
12
|
+
duplicate: DuplicatePageData;
|
|
13
|
+
}
|
|
14
|
+
export type DuplicatePageCallback = (params: DuplicatePageCallbackParams) => Promise<void> | void;
|
|
9
15
|
export interface IDuplicatePageRepository {
|
|
10
|
-
execute(params: IDuplicateWbPageParams): Promise<Result<WbPage, RepositoryError>>;
|
|
16
|
+
execute(params: IDuplicateWbPageParams, callback?: DuplicatePageCallback): Promise<Result<WbPage, RepositoryError>>;
|
|
11
17
|
}
|
|
12
18
|
export interface IDuplicatePageRepositoryErrors {
|
|
13
19
|
validation: PageValidationError;
|
|
@@ -26,11 +32,13 @@ export interface IDuplicatePageUseCase {
|
|
|
26
32
|
execute(params: IDuplicateWbPageParams): Promise<Result<WbPage, UseCaseError>>;
|
|
27
33
|
}
|
|
28
34
|
export interface IDuplicatePageUseCaseErrors {
|
|
35
|
+
notAuthorized: PageNotAuthorizedError;
|
|
29
36
|
validation: PageValidationError;
|
|
30
37
|
notFound: PageNotFoundError;
|
|
31
38
|
persistence: PagePersistenceError;
|
|
32
39
|
}
|
|
33
40
|
type UseCaseError = IDuplicatePageUseCaseErrors[keyof IDuplicatePageUseCaseErrors];
|
|
41
|
+
/** Duplicate a page. */
|
|
34
42
|
export declare const DuplicatePageUseCase: import("@webiny/di").Abstraction<IDuplicatePageUseCase>;
|
|
35
43
|
export declare namespace DuplicatePageUseCase {
|
|
36
44
|
type Interface = IDuplicatePageUseCase;
|
|
@@ -46,14 +54,16 @@ export interface PageAfterDuplicatePayload {
|
|
|
46
54
|
original: WbPage;
|
|
47
55
|
page: WbPage;
|
|
48
56
|
}
|
|
49
|
-
|
|
50
|
-
export declare
|
|
57
|
+
/** Hook into page lifecycle before a page is duplicated. */
|
|
58
|
+
export declare const PageBeforeDuplicateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>>;
|
|
59
|
+
export declare namespace PageBeforeDuplicateEventHandler {
|
|
51
60
|
type Interface = IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>;
|
|
52
61
|
type Event = DomainEvent<PageBeforeDuplicatePayload>;
|
|
53
62
|
type Page = WbPage;
|
|
54
63
|
}
|
|
55
|
-
|
|
56
|
-
export declare
|
|
64
|
+
/** Hook into page lifecycle after a page is duplicated. */
|
|
65
|
+
export declare const PageAfterDuplicateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<PageAfterDuplicatePayload>>>;
|
|
66
|
+
export declare namespace PageAfterDuplicateEventHandler {
|
|
57
67
|
type Interface = IEventHandler<DomainEvent<PageAfterDuplicatePayload>>;
|
|
58
68
|
type Event = DomainEvent<PageAfterDuplicatePayload>;
|
|
59
69
|
type Page = WbPage;
|
|
@@ -14,6 +14,7 @@ export const DuplicatePageRepository = createAbstraction("Wb/DuplicatePageReposi
|
|
|
14
14
|
// Use Case Abstraction
|
|
15
15
|
// ============================================================================
|
|
16
16
|
|
|
17
|
+
/** Duplicate a page. */
|
|
17
18
|
export const DuplicatePageUseCase = createAbstraction("Wb/DuplicatePageUseCase");
|
|
18
19
|
|
|
19
20
|
// ============================================================================
|
|
@@ -24,7 +25,9 @@ export const DuplicatePageUseCase = createAbstraction("Wb/DuplicatePageUseCase")
|
|
|
24
25
|
// Event Handler Abstractions
|
|
25
26
|
// ============================================================================
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
export const
|
|
28
|
+
/** Hook into page lifecycle before a page is duplicated. */
|
|
29
|
+
export const PageBeforeDuplicateEventHandler = createAbstraction("Wb/PageBeforeDuplicateEventHandler");
|
|
30
|
+
/** Hook into page lifecycle after a page is duplicated. */
|
|
31
|
+
export const PageAfterDuplicateEventHandler = createAbstraction("Wb/PageAfterDuplicateEventHandler");
|
|
29
32
|
|
|
30
33
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DuplicatePageRepository","DuplicatePageUseCase","
|
|
1
|
+
{"version":3,"names":["createAbstraction","DuplicatePageRepository","DuplicatePageUseCase","PageBeforeDuplicateEventHandler","PageAfterDuplicateEventHandler"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, type Result } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { WbPage } from \"~/domain/page/abstractions.js\";\nimport {\n PageValidationError,\n PageNotFoundError,\n PagePersistenceError,\n PageNotAuthorizedError\n} from \"~/domain/page/errors.js\";\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport interface IDuplicateWbPageParams {\n id: string;\n}\n\n// ============================================================================\n// Repository Abstraction\n// ============================================================================\n\nexport type DuplicatePageData = Pick<\n WbPage,\n \"bindings\" | \"elements\" | \"location\" | \"properties\" | \"metadata\" | \"extensions\"\n>;\n\nexport interface DuplicatePageCallbackParams {\n original: WbPage;\n duplicate: DuplicatePageData;\n}\n\nexport type DuplicatePageCallback = (params: DuplicatePageCallbackParams) => Promise<void> | void;\n\nexport interface IDuplicatePageRepository {\n execute(\n params: IDuplicateWbPageParams,\n callback?: DuplicatePageCallback\n ): Promise<Result<WbPage, RepositoryError>>;\n}\n\nexport interface IDuplicatePageRepositoryErrors {\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype RepositoryError = IDuplicatePageRepositoryErrors[keyof IDuplicatePageRepositoryErrors];\n\nexport const DuplicatePageRepository = createAbstraction<IDuplicatePageRepository>(\n \"Wb/DuplicatePageRepository\"\n);\n\nexport namespace DuplicatePageRepository {\n export type Interface = IDuplicatePageRepository;\n export type Params = IDuplicateWbPageParams;\n export type Return = Promise<Result<WbPage, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n// ============================================================================\n// Use Case Abstraction\n// ============================================================================\n\nexport interface IDuplicatePageUseCase {\n execute(params: IDuplicateWbPageParams): Promise<Result<WbPage, UseCaseError>>;\n}\n\nexport interface IDuplicatePageUseCaseErrors {\n notAuthorized: PageNotAuthorizedError;\n validation: PageValidationError;\n notFound: PageNotFoundError;\n persistence: PagePersistenceError;\n}\n\ntype UseCaseError = IDuplicatePageUseCaseErrors[keyof IDuplicatePageUseCaseErrors];\n\n/** Duplicate a page. */\nexport const DuplicatePageUseCase =\n createAbstraction<IDuplicatePageUseCase>(\"Wb/DuplicatePageUseCase\");\n\nexport namespace DuplicatePageUseCase {\n export type Interface = IDuplicatePageUseCase;\n export type Params = IDuplicateWbPageParams;\n export type Return = Promise<Result<WbPage, UseCaseError>>;\n export type Error = UseCaseError;\n export type Page = WbPage;\n}\n\n// ============================================================================\n// Event Payload Types\n// ============================================================================\n\nexport interface PageBeforeDuplicatePayload {\n original: WbPage;\n}\n\nexport interface PageAfterDuplicatePayload {\n original: WbPage;\n page: WbPage;\n}\n\n// ============================================================================\n// Event Handler Abstractions\n// ============================================================================\n\n/** Hook into page lifecycle before a page is duplicated. */\nexport const PageBeforeDuplicateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>\n>(\"Wb/PageBeforeDuplicateEventHandler\");\n\nexport namespace PageBeforeDuplicateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>;\n export type Event = DomainEvent<PageBeforeDuplicatePayload>;\n export type Page = WbPage;\n}\n\n/** Hook into page lifecycle after a page is duplicated. */\nexport const PageAfterDuplicateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<PageAfterDuplicatePayload>>\n>(\"Wb/PageAfterDuplicateEventHandler\");\n\nexport namespace PageAfterDuplicateEventHandler {\n export type Interface = IEventHandler<DomainEvent<PageAfterDuplicatePayload>>;\n export type Event = DomainEvent<PageAfterDuplicatePayload>;\n export type Page = WbPage;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAqB,qBAAqB;;AAWpE;AACA;AACA;;AAMA;AACA;AACA;;AA6BA,OAAO,MAAMC,uBAAuB,GAAGD,iBAAiB,CACpD,4BACJ,CAAC;;AASD;AACA;AACA;;AAeA;AACA,OAAO,MAAME,oBAAoB,GAC7BF,iBAAiB,CAAwB,yBAAyB,CAAC;;AAUvE;AACA;AACA;;AAWA;AACA;AACA;;AAEA;AACA,OAAO,MAAMG,+BAA+B,GAAGH,iBAAiB,CAE9D,oCAAoC,CAAC;AAQvC;AACA,OAAO,MAAMI,8BAA8B,GAAGJ,iBAAiB,CAE7D,mCAAmC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
2
|
import type { PageBeforeDuplicatePayload, PageAfterDuplicatePayload } from "./abstractions.js";
|
|
3
3
|
export declare class PageBeforeDuplicateEvent extends DomainEvent<PageBeforeDuplicatePayload> {
|
|
4
4
|
eventType: "page.beforeDuplicate";
|
|
5
|
-
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageBeforeDuplicatePayload>>>;
|
|
6
6
|
}
|
|
7
7
|
export declare class PageAfterDuplicateEvent extends DomainEvent<PageAfterDuplicatePayload> {
|
|
8
8
|
eventType: "page.afterDuplicate";
|
|
9
|
-
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/
|
|
9
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<PageAfterDuplicatePayload>>>;
|
|
10
10
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
2
|
-
import {
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { PageBeforeDuplicateEventHandler, PageAfterDuplicateEventHandler } from "./abstractions.js";
|
|
3
3
|
// PageBeforeDuplicate Event
|
|
4
4
|
export class PageBeforeDuplicateEvent extends DomainEvent {
|
|
5
5
|
eventType = "page.beforeDuplicate";
|
|
6
6
|
getHandlerAbstraction() {
|
|
7
|
-
return
|
|
7
|
+
return PageBeforeDuplicateEventHandler;
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ export class PageBeforeDuplicateEvent extends DomainEvent {
|
|
|
12
12
|
export class PageAfterDuplicateEvent extends DomainEvent {
|
|
13
13
|
eventType = "page.afterDuplicate";
|
|
14
14
|
getHandlerAbstraction() {
|
|
15
|
-
return
|
|
15
|
+
return PageAfterDuplicateEventHandler;
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DomainEvent","
|
|
1
|
+
{"version":3,"names":["DomainEvent","PageBeforeDuplicateEventHandler","PageAfterDuplicateEventHandler","PageBeforeDuplicateEvent","eventType","getHandlerAbstraction","PageAfterDuplicateEvent"],"sources":["events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { PageBeforeDuplicateEventHandler, PageAfterDuplicateEventHandler } from \"./abstractions.js\";\nimport type { PageBeforeDuplicatePayload, PageAfterDuplicatePayload } from \"./abstractions.js\";\n\n// PageBeforeDuplicate Event\nexport class PageBeforeDuplicateEvent extends DomainEvent<PageBeforeDuplicatePayload> {\n eventType = \"page.beforeDuplicate\" as const;\n\n getHandlerAbstraction() {\n return PageBeforeDuplicateEventHandler;\n }\n}\n\n// PageAfterDuplicate Event\nexport class PageAfterDuplicateEvent extends DomainEvent<PageAfterDuplicatePayload> {\n eventType = \"page.afterDuplicate\" as const;\n\n getHandlerAbstraction() {\n return PageAfterDuplicateEventHandler;\n }\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ,mDAAmD;AAC/E,SAASC,+BAA+B,EAAEC,8BAA8B;AAGxE;AACA,OAAO,MAAMC,wBAAwB,SAASH,WAAW,CAA6B;EAClFI,SAAS,GAAG,sBAAsB;EAElCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOJ,+BAA+B;EAC1C;AACJ;;AAEA;AACA,OAAO,MAAMK,uBAAuB,SAASN,WAAW,CAA4B;EAChFI,SAAS,GAAG,qBAAqB;EAEjCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOH,8BAA8B;EACzC;AACJ","ignoreList":[]}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, DuplicatePageUseCase, DuplicatePageRepository } from "./abstractions.js";
|
|
2
|
+
export type { DuplicatePageCallback, DuplicatePageCallbackParams, DuplicatePageData } from "./abstractions.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { PageAfterDuplicateEventHandler, PageBeforeDuplicateEventHandler, DuplicatePageUseCase, DuplicatePageRepository } from "./abstractions.js";
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["PageAfterDuplicateEventHandler","PageBeforeDuplicateEventHandler","DuplicatePageUseCase","DuplicatePageRepository"],"sources":["index.ts"],"sourcesContent":["export {\n PageAfterDuplicateEventHandler,\n PageBeforeDuplicateEventHandler,\n DuplicatePageUseCase,\n DuplicatePageRepository\n} from \"./abstractions.js\";\nexport type {\n DuplicatePageCallback,\n DuplicatePageCallbackParams,\n DuplicatePageData\n} from \"./abstractions.js\";\n"],"mappings":"AAAA,SACIA,8BAA8B,EAC9BC,+BAA+B,EAC/BC,oBAAoB,EACpBC,uBAAuB","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetDeletedPageByIdRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
2
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
3
|
+
import { GetLatestRevisionByEntryIdIncludingDeletedUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js";
|
|
4
|
+
declare class GetDeletedPageByIdRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
5
|
+
private pageModel;
|
|
6
|
+
private getLatestRevision;
|
|
7
|
+
constructor(pageModel: PageModel.Interface, getLatestRevision: GetLatestRevisionByEntryIdIncludingDeletedUseCase.Interface);
|
|
8
|
+
execute(id: string): RepositoryAbstraction.Return;
|
|
9
|
+
}
|
|
10
|
+
export declare const GetDeletedPageByIdRepository: typeof GetDeletedPageByIdRepositoryImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetDeletedPageByIdRepository>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetDeletedPageByIdRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { PageModel } from "../../../domain/page/abstractions.js";
|
|
4
|
+
import { PageNotFoundTrashedError, PagePersistenceError } from "../../../domain/page/errors.js";
|
|
5
|
+
import { EntryToPageMapper } from "../../../domain/page/EntryToPageMapper.js";
|
|
6
|
+
import { GetLatestRevisionByEntryIdIncludingDeletedUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js";
|
|
7
|
+
class GetDeletedPageByIdRepositoryImpl {
|
|
8
|
+
constructor(pageModel, getLatestRevision) {
|
|
9
|
+
this.pageModel = pageModel;
|
|
10
|
+
this.getLatestRevision = getLatestRevision;
|
|
11
|
+
}
|
|
12
|
+
async execute(id) {
|
|
13
|
+
const result = await this.getLatestRevision.execute(this.pageModel, {
|
|
14
|
+
id
|
|
15
|
+
});
|
|
16
|
+
if (result.isFail()) {
|
|
17
|
+
return Result.fail(new PagePersistenceError(result.error));
|
|
18
|
+
}
|
|
19
|
+
const entry = result.value;
|
|
20
|
+
if (!entry?.wbyDeleted) {
|
|
21
|
+
return Result.fail(new PageNotFoundTrashedError(id));
|
|
22
|
+
}
|
|
23
|
+
const page = EntryToPageMapper.toPage(entry);
|
|
24
|
+
return Result.ok(page);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export const GetDeletedPageByIdRepository = RepositoryAbstraction.createImplementation({
|
|
28
|
+
implementation: GetDeletedPageByIdRepositoryImpl,
|
|
29
|
+
dependencies: [PageModel, GetLatestRevisionByEntryIdIncludingDeletedUseCase]
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=GetDeletedPageByIdRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","GetDeletedPageByIdRepository","RepositoryAbstraction","PageModel","PageNotFoundTrashedError","PagePersistenceError","EntryToPageMapper","GetLatestRevisionByEntryIdIncludingDeletedUseCase","GetDeletedPageByIdRepositoryImpl","constructor","pageModel","getLatestRevision","execute","id","result","isFail","fail","error","entry","value","wbyDeleted","page","toPage","ok","createImplementation","implementation","dependencies"],"sources":["GetDeletedPageByIdRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetDeletedPageByIdRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { PageModel } from \"~/domain/page/abstractions.js\";\nimport { PageNotFoundTrashedError, PagePersistenceError } from \"~/domain/page/errors.js\";\nimport { EntryToPageMapper } from \"~/domain/page/EntryToPageMapper.js\";\nimport { GetLatestRevisionByEntryIdIncludingDeletedUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestRevisionByEntryId/index.js\";\n\nclass GetDeletedPageByIdRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private pageModel: PageModel.Interface,\n private getLatestRevision: GetLatestRevisionByEntryIdIncludingDeletedUseCase.Interface\n ) {}\n\n public async execute(id: string): RepositoryAbstraction.Return {\n const result = await this.getLatestRevision.execute(this.pageModel, {\n id\n });\n\n if (result.isFail()) {\n return Result.fail(new PagePersistenceError(result.error));\n }\n\n const entry = result.value;\n if (!entry?.wbyDeleted) {\n return Result.fail(new PageNotFoundTrashedError(id));\n }\n\n const page = EntryToPageMapper.toPage(entry);\n return Result.ok(page);\n }\n}\n\nexport const GetDeletedPageByIdRepository = RepositoryAbstraction.createImplementation({\n implementation: GetDeletedPageByIdRepositoryImpl,\n dependencies: [PageModel, GetLatestRevisionByEntryIdIncludingDeletedUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,4BAA4B,IAAIC,qBAAqB;AAC9D,SAASC,SAAS;AAClB,SAASC,wBAAwB,EAAEC,oBAAoB;AACvD,SAASC,iBAAiB;AAC1B,SAASC,iDAAiD,QAAQ,oFAAoF;AAEtJ,MAAMC,gCAAgC,CAA4C;EAC9EC,WAAWA,CACCC,SAA8B,EAC9BC,iBAA8E,EACxF;IAAA,KAFUD,SAA8B,GAA9BA,SAA8B;IAAA,KAC9BC,iBAA8E,GAA9EA,iBAA8E;EACvF;EAEH,MAAaC,OAAOA,CAACC,EAAU,EAAgC;IAC3D,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACH,iBAAiB,CAACC,OAAO,CAAC,IAAI,CAACF,SAAS,EAAE;MAChEG;IACJ,CAAC,CAAC;IAEF,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOf,MAAM,CAACgB,IAAI,CAAC,IAAIX,oBAAoB,CAACS,MAAM,CAACG,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMC,KAAK,GAAGJ,MAAM,CAACK,KAAK;IAC1B,IAAI,CAACD,KAAK,EAAEE,UAAU,EAAE;MACpB,OAAOpB,MAAM,CAACgB,IAAI,CAAC,IAAIZ,wBAAwB,CAACS,EAAE,CAAC,CAAC;IACxD;IAEA,MAAMQ,IAAI,GAAGf,iBAAiB,CAACgB,MAAM,CAACJ,KAAK,CAAC;IAC5C,OAAOlB,MAAM,CAACuB,EAAE,CAACF,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMpB,4BAA4B,GAAGC,qBAAqB,CAACsB,oBAAoB,CAAC;EACnFC,cAAc,EAAEjB,gCAAgC;EAChDkB,YAAY,EAAE,CAACvB,SAAS,EAAEI,iDAAiD;AAC/E,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GetDeletedPageByIdUseCase as UseCaseAbstraction, GetDeletedPageByIdRepository } from "./abstractions.js";
|
|
2
|
+
import { WbPermissions } from "../../../features/permissions/abstractions.js";
|
|
3
|
+
declare class GetDeletedPageByIdUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
|
+
private permissions;
|
|
5
|
+
private repository;
|
|
6
|
+
constructor(permissions: WbPermissions.Interface, repository: GetDeletedPageByIdRepository.Interface);
|
|
7
|
+
execute(id: string): UseCaseAbstraction.Return;
|
|
8
|
+
}
|
|
9
|
+
export declare const GetDeletedPageByIdUseCase: typeof GetDeletedPageByIdUseCaseImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetDeletedPageByIdUseCase>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|