@webiny/api-website-builder 0.0.0-unstable.a4637c5ce6 → 0.0.0-unstable.ac6ebf63c6
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/README.md +7 -29
- package/constants.js +3 -9
- package/constants.js.map +1 -1
- package/domain/page/EntryToPageMapper.d.ts +5 -0
- package/domain/page/EntryToPageMapper.js +30 -0
- package/domain/page/EntryToPageMapper.js.map +1 -0
- package/domain/page/abstractions.d.ts +33 -0
- package/domain/page/abstractions.js +8 -0
- package/domain/page/abstractions.js.map +1 -0
- package/domain/page/errors.d.ts +19 -0
- package/domain/page/errors.js +38 -0
- package/domain/page/errors.js.map +1 -0
- package/domain/page/page.model.d.ts +2 -0
- package/domain/page/page.model.js +32 -0
- package/domain/page/page.model.js.map +1 -0
- package/domain/redirect/EntryToRedirectMapper.d.ts +5 -0
- package/domain/redirect/EntryToRedirectMapper.js +24 -0
- package/domain/redirect/EntryToRedirectMapper.js.map +1 -0
- package/domain/redirect/abstractions.d.ts +30 -0
- package/domain/redirect/abstractions.js +12 -0
- package/domain/redirect/abstractions.js.map +1 -0
- package/domain/redirect/errors.d.ts +19 -0
- package/domain/redirect/errors.js +38 -0
- package/domain/redirect/errors.js.map +1 -0
- package/domain/redirect/redirect.model.d.ts +2 -0
- package/domain/redirect/redirect.model.js +32 -0
- package/domain/redirect/redirect.model.js.map +1 -0
- package/domain/shared/abstractions.d.ts +5 -0
- package/domain/shared/abstractions.js +3 -0
- package/domain/shared/abstractions.js.map +1 -0
- package/exports/api/website-builder/nextjs.d.ts +1 -0
- package/exports/api/website-builder/nextjs.js +3 -0
- package/exports/api/website-builder/nextjs.js.map +1 -0
- package/exports/api/website-builder/page.d.ts +12 -0
- package/exports/api/website-builder/page.js +14 -0
- package/exports/api/website-builder/page.js.map +1 -0
- package/exports/api/website-builder/redirect.d.ts +8 -0
- package/exports/api/website-builder/redirect.js +10 -0
- package/exports/api/website-builder/redirect.js.map +1 -0
- package/features/installer/ApiKeyInstaller.d.ts +18 -0
- package/features/installer/ApiKeyInstaller.js +37 -0
- package/features/installer/ApiKeyInstaller.js.map +1 -0
- package/features/installer/feature.d.ts +1 -0
- package/features/installer/feature.js +10 -0
- package/features/installer/feature.js.map +1 -0
- package/features/nextjs/MarkdownContentBuilder.d.ts +31 -0
- package/features/nextjs/MarkdownContentBuilder.js +86 -0
- package/features/nextjs/MarkdownContentBuilder.js.map +1 -0
- package/features/nextjs/MarkdownContentBuilder.test.d.ts +1 -0
- package/features/nextjs/MarkdownContentBuilder.test.js +278 -0
- package/features/nextjs/MarkdownContentBuilder.test.js.map +1 -0
- package/features/nextjs/NextjsConfig.d.ts +14 -0
- package/features/nextjs/NextjsConfig.js +58 -0
- package/features/nextjs/NextjsConfig.js.map +1 -0
- package/features/nextjs/abstractions.d.ts +9 -0
- package/features/nextjs/abstractions.js +4 -0
- package/features/nextjs/abstractions.js.map +1 -0
- package/features/nextjs/feature.d.ts +1 -0
- package/features/nextjs/feature.js +10 -0
- package/features/nextjs/feature.js.map +1 -0
- package/features/nextjs/index.d.ts +1 -0
- package/features/nextjs/index.js +3 -0
- package/features/nextjs/index.js.map +1 -0
- package/features/pages/CreatePage/CreatePageRepository.d.ts +13 -0
- package/features/pages/CreatePage/CreatePageRepository.js +36 -0
- package/features/pages/CreatePage/CreatePageRepository.js.map +1 -0
- package/features/pages/CreatePage/CreatePageUseCase.d.ts +12 -0
- package/features/pages/CreatePage/CreatePageUseCase.js +37 -0
- package/features/pages/CreatePage/CreatePageUseCase.js.map +1 -0
- package/features/pages/CreatePage/abstractions.d.ts +55 -0
- package/features/pages/CreatePage/abstractions.js +30 -0
- package/features/pages/CreatePage/abstractions.js.map +1 -0
- package/features/pages/CreatePage/events.d.ts +10 -0
- package/features/pages/CreatePage/events.js +19 -0
- package/features/pages/CreatePage/events.js.map +1 -0
- package/features/pages/CreatePage/feature.d.ts +1 -0
- package/features/pages/CreatePage/feature.js +12 -0
- package/features/pages/CreatePage/feature.js.map +1 -0
- package/features/pages/CreatePage/index.d.ts +1 -15
- package/features/pages/CreatePage/index.js +1 -16
- package/features/pages/CreatePage/index.js.map +1 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromRepository.d.ts +15 -0
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromRepository.js +49 -0
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromRepository.js.map +1 -0
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.d.ts +12 -0
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js +37 -0
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromUseCase.js.map +1 -0
- package/features/pages/CreatePageRevisionFrom/abstractions.d.ts +60 -0
- package/features/pages/CreatePageRevisionFrom/abstractions.js +30 -0
- package/features/pages/CreatePageRevisionFrom/abstractions.js.map +1 -0
- package/features/pages/CreatePageRevisionFrom/events.d.ts +10 -0
- package/features/pages/CreatePageRevisionFrom/events.js +19 -0
- package/features/pages/CreatePageRevisionFrom/events.js.map +1 -0
- package/features/pages/CreatePageRevisionFrom/feature.d.ts +1 -0
- package/features/pages/CreatePageRevisionFrom/feature.js +12 -0
- package/features/pages/CreatePageRevisionFrom/feature.js.map +1 -0
- package/features/pages/CreatePageRevisionFrom/index.d.ts +1 -16
- package/features/pages/CreatePageRevisionFrom/index.js +1 -16
- package/features/pages/CreatePageRevisionFrom/index.js.map +1 -1
- package/features/pages/DeletePage/DeletePageRepository.d.ts +15 -0
- package/features/pages/DeletePage/DeletePageRepository.js +39 -0
- package/features/pages/DeletePage/DeletePageRepository.js.map +1 -0
- package/features/pages/DeletePage/DeletePageUseCase.d.ts +14 -0
- package/features/pages/DeletePage/DeletePageUseCase.js +45 -0
- package/features/pages/DeletePage/DeletePageUseCase.js.map +1 -0
- package/features/pages/DeletePage/abstractions.d.ts +57 -0
- package/features/pages/DeletePage/abstractions.js +30 -0
- package/features/pages/DeletePage/abstractions.js.map +1 -0
- package/features/pages/DeletePage/events.d.ts +10 -0
- package/features/pages/DeletePage/events.js +19 -0
- package/features/pages/DeletePage/events.js.map +1 -0
- package/features/pages/DeletePage/feature.d.ts +1 -0
- package/features/pages/DeletePage/feature.js +12 -0
- package/features/pages/DeletePage/feature.js.map +1 -0
- package/features/pages/DeletePage/index.d.ts +1 -16
- package/features/pages/DeletePage/index.js +1 -16
- package/features/pages/DeletePage/index.js.map +1 -1
- package/features/pages/DuplicatePage/DuplicatePageRepository.d.ts +15 -0
- package/features/pages/DuplicatePage/DuplicatePageRepository.js +59 -0
- package/features/pages/DuplicatePage/DuplicatePageRepository.js.map +1 -0
- package/features/pages/DuplicatePage/DuplicatePageUseCase.d.ts +12 -0
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js +47 -0
- package/features/pages/DuplicatePage/DuplicatePageUseCase.js.map +1 -0
- package/features/pages/DuplicatePage/abstractions.d.ts +61 -0
- package/features/pages/DuplicatePage/abstractions.js +30 -0
- package/features/pages/DuplicatePage/abstractions.js.map +1 -0
- package/features/pages/DuplicatePage/events.d.ts +10 -0
- package/features/pages/DuplicatePage/events.js +19 -0
- package/features/pages/DuplicatePage/events.js.map +1 -0
- package/features/pages/DuplicatePage/feature.d.ts +1 -0
- package/features/pages/DuplicatePage/feature.js +12 -0
- package/features/pages/DuplicatePage/feature.js.map +1 -0
- package/features/pages/DuplicatePage/index.d.ts +1 -16
- package/features/pages/DuplicatePage/index.js +1 -16
- package/features/pages/DuplicatePage/index.js.map +1 -1
- package/features/pages/GetPageById/GetPageByIdRepository.d.ts +13 -0
- package/features/pages/GetPageById/GetPageByIdRepository.js +29 -0
- package/features/pages/GetPageById/GetPageByIdRepository.js.map +1 -0
- package/features/pages/GetPageById/GetPageByIdUseCase.d.ts +10 -0
- package/features/pages/GetPageById/GetPageByIdUseCase.js +15 -0
- package/features/pages/GetPageById/GetPageByIdUseCase.js.map +1 -0
- package/features/pages/GetPageById/abstractions.d.ts +39 -0
- package/features/pages/GetPageById/abstractions.js +15 -0
- package/features/pages/GetPageById/abstractions.js.map +1 -0
- package/features/pages/GetPageById/feature.d.ts +1 -0
- package/features/pages/GetPageById/feature.js +12 -0
- package/features/pages/GetPageById/feature.js.map +1 -0
- package/features/pages/GetPageById/index.d.ts +1 -9
- package/features/pages/GetPageById/index.js +1 -14
- package/features/pages/GetPageById/index.js.map +1 -1
- package/features/pages/GetPageByPath/GetPageByPathRepository.d.ts +13 -0
- package/features/pages/GetPageByPath/GetPageByPathRepository.js +38 -0
- package/features/pages/GetPageByPath/GetPageByPathRepository.js.map +1 -0
- package/features/pages/GetPageByPath/GetPageByPathUseCase.d.ts +10 -0
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js +15 -0
- package/features/pages/GetPageByPath/GetPageByPathUseCase.js.map +1 -0
- package/features/pages/GetPageByPath/abstractions.d.ts +39 -0
- package/features/pages/GetPageByPath/abstractions.js +15 -0
- package/features/pages/GetPageByPath/abstractions.js.map +1 -0
- package/features/pages/GetPageByPath/feature.d.ts +1 -0
- package/features/pages/GetPageByPath/feature.js +12 -0
- package/features/pages/GetPageByPath/feature.js.map +1 -0
- package/features/pages/GetPageByPath/index.d.ts +1 -9
- package/features/pages/GetPageByPath/index.js +1 -14
- package/features/pages/GetPageByPath/index.js.map +1 -1
- package/features/pages/GetPageRevisions/GetPageRevisionsRepository.d.ts +13 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsRepository.js +26 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsRepository.js.map +1 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.d.ts +10 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js +15 -0
- package/features/pages/GetPageRevisions/GetPageRevisionsUseCase.js.map +1 -0
- package/features/pages/GetPageRevisions/abstractions.d.ts +37 -0
- package/features/pages/GetPageRevisions/abstractions.js +15 -0
- package/features/pages/GetPageRevisions/abstractions.js.map +1 -0
- package/features/pages/GetPageRevisions/feature.d.ts +1 -0
- package/features/pages/GetPageRevisions/feature.js +12 -0
- package/features/pages/GetPageRevisions/feature.js.map +1 -0
- package/features/pages/GetPageRevisions/index.d.ts +1 -9
- package/features/pages/GetPageRevisions/index.js +1 -14
- package/features/pages/GetPageRevisions/index.js.map +1 -1
- package/features/pages/ListPages/ListPagesRepository.d.ts +13 -0
- package/features/pages/ListPages/ListPagesRepository.js +39 -0
- package/features/pages/ListPages/ListPagesRepository.js.map +1 -0
- package/features/pages/ListPages/ListPagesUseCase.d.ts +10 -0
- package/features/pages/ListPages/ListPagesUseCase.js +15 -0
- package/features/pages/ListPages/ListPagesUseCase.js.map +1 -0
- package/features/pages/ListPages/abstractions.d.ts +55 -0
- package/features/pages/ListPages/abstractions.js +15 -0
- package/features/pages/ListPages/abstractions.js.map +1 -0
- package/features/pages/ListPages/feature.d.ts +1 -0
- package/features/pages/ListPages/feature.js +12 -0
- package/features/pages/ListPages/feature.js.map +1 -0
- package/features/pages/ListPages/index.d.ts +1 -9
- package/features/pages/ListPages/index.js +1 -14
- package/features/pages/ListPages/index.js.map +1 -1
- package/features/pages/MovePage/MovePageRepository.d.ts +15 -0
- package/features/pages/MovePage/MovePageRepository.js +39 -0
- package/features/pages/MovePage/MovePageRepository.js.map +1 -0
- package/features/pages/MovePage/MovePageUseCase.d.ts +12 -0
- package/features/pages/MovePage/MovePageUseCase.js +49 -0
- package/features/pages/MovePage/MovePageUseCase.js.map +1 -0
- package/features/pages/MovePage/abstractions.d.ts +62 -0
- package/features/pages/MovePage/abstractions.js +30 -0
- package/features/pages/MovePage/abstractions.js.map +1 -0
- package/features/pages/MovePage/events.d.ts +10 -0
- package/features/pages/MovePage/events.js +19 -0
- package/features/pages/MovePage/events.js.map +1 -0
- package/features/pages/MovePage/feature.d.ts +1 -0
- package/features/pages/MovePage/feature.js +12 -0
- package/features/pages/MovePage/feature.js.map +1 -0
- package/features/pages/MovePage/index.d.ts +1 -16
- package/features/pages/MovePage/index.js +1 -16
- package/features/pages/MovePage/index.js.map +1 -1
- package/features/pages/PagePermissions/feature.d.ts +1 -0
- package/features/pages/PagePermissions/feature.js +53 -0
- package/features/pages/PagePermissions/feature.js.map +1 -0
- package/features/pages/PublishPage/PublishPageRepository.d.ts +15 -0
- package/features/pages/PublishPage/PublishPageRepository.js +41 -0
- package/features/pages/PublishPage/PublishPageRepository.js.map +1 -0
- package/features/pages/PublishPage/PublishPageUseCase.d.ts +12 -0
- package/features/pages/PublishPage/PublishPageUseCase.js +46 -0
- package/features/pages/PublishPage/PublishPageUseCase.js.map +1 -0
- package/features/pages/PublishPage/abstractions.d.ts +58 -0
- package/features/pages/PublishPage/abstractions.js +30 -0
- package/features/pages/PublishPage/abstractions.js.map +1 -0
- package/features/pages/PublishPage/events.d.ts +10 -0
- package/features/pages/PublishPage/events.js +19 -0
- package/features/pages/PublishPage/events.js.map +1 -0
- package/features/pages/PublishPage/feature.d.ts +1 -0
- package/features/pages/PublishPage/feature.js +12 -0
- package/features/pages/PublishPage/feature.js.map +1 -0
- package/features/pages/PublishPage/index.d.ts +1 -16
- package/features/pages/PublishPage/index.js +1 -16
- package/features/pages/PublishPage/index.js.map +1 -1
- package/features/pages/UnpublishPage/UnpublishPageRepository.d.ts +15 -0
- package/features/pages/UnpublishPage/UnpublishPageRepository.js +41 -0
- package/features/pages/UnpublishPage/UnpublishPageRepository.js.map +1 -0
- package/features/pages/UnpublishPage/UnpublishPageUseCase.d.ts +14 -0
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js +45 -0
- package/features/pages/UnpublishPage/UnpublishPageUseCase.js.map +1 -0
- package/features/pages/UnpublishPage/abstractions.d.ts +58 -0
- package/features/pages/UnpublishPage/abstractions.js +30 -0
- package/features/pages/UnpublishPage/abstractions.js.map +1 -0
- package/features/pages/UnpublishPage/events.d.ts +10 -0
- package/features/pages/UnpublishPage/events.js +19 -0
- package/features/pages/UnpublishPage/events.js.map +1 -0
- package/features/pages/UnpublishPage/feature.d.ts +1 -0
- package/features/pages/UnpublishPage/feature.js +12 -0
- package/features/pages/UnpublishPage/feature.js.map +1 -0
- package/features/pages/UnpublishPage/index.d.ts +1 -16
- package/features/pages/UnpublishPage/index.js +1 -16
- package/features/pages/UnpublishPage/index.js.map +1 -1
- package/features/pages/UpdatePage/UpdatePageRepository.d.ts +15 -0
- package/features/pages/UpdatePage/UpdatePageRepository.js +47 -0
- package/features/pages/UpdatePage/UpdatePageRepository.js.map +1 -0
- package/features/pages/UpdatePage/UpdatePageUseCase.d.ts +14 -0
- package/features/pages/UpdatePage/UpdatePageUseCase.js +54 -0
- package/features/pages/UpdatePage/UpdatePageUseCase.js.map +1 -0
- package/features/pages/UpdatePage/abstractions.d.ts +76 -0
- package/features/pages/UpdatePage/abstractions.js +30 -0
- package/features/pages/UpdatePage/abstractions.js.map +1 -0
- package/features/pages/UpdatePage/events.d.ts +10 -0
- package/features/pages/UpdatePage/events.js +19 -0
- package/features/pages/UpdatePage/events.js.map +1 -0
- package/features/pages/UpdatePage/feature.d.ts +1 -0
- package/features/pages/UpdatePage/feature.js +12 -0
- package/features/pages/UpdatePage/feature.js.map +1 -0
- package/features/pages/UpdatePage/index.d.ts +1 -16
- package/features/pages/UpdatePage/index.js +1 -16
- package/features/pages/UpdatePage/index.js.map +1 -1
- package/features/redirects/CreateRedirect/CreateRedirectRepository.d.ts +13 -0
- package/features/redirects/CreateRedirect/CreateRedirectRepository.js +32 -0
- package/features/redirects/CreateRedirect/CreateRedirectRepository.js.map +1 -0
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.d.ts +10 -0
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js +37 -0
- package/features/redirects/CreateRedirect/CreateRedirectUseCase.js.map +1 -0
- package/features/redirects/CreateRedirect/abstractions.d.ts +57 -0
- package/features/redirects/CreateRedirect/abstractions.js +30 -0
- package/features/redirects/CreateRedirect/abstractions.js.map +1 -0
- package/features/redirects/CreateRedirect/events.d.ts +10 -0
- package/features/redirects/CreateRedirect/events.js +19 -0
- package/features/redirects/CreateRedirect/events.js.map +1 -0
- package/features/redirects/CreateRedirect/feature.d.ts +1 -0
- package/features/redirects/CreateRedirect/feature.js +12 -0
- package/features/redirects/CreateRedirect/feature.js.map +1 -0
- package/features/redirects/CreateRedirect/index.d.ts +1 -15
- package/features/redirects/CreateRedirect/index.js +1 -16
- package/features/redirects/CreateRedirect/index.js.map +1 -1
- package/features/redirects/DeleteRedirect/DeleteRedirectRepository.d.ts +13 -0
- package/features/redirects/DeleteRedirect/DeleteRedirectRepository.js +27 -0
- package/features/redirects/DeleteRedirect/DeleteRedirectRepository.js.map +1 -0
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.d.ts +12 -0
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js +46 -0
- package/features/redirects/DeleteRedirect/DeleteRedirectUseCase.js.map +1 -0
- package/features/redirects/DeleteRedirect/abstractions.d.ts +57 -0
- package/features/redirects/DeleteRedirect/abstractions.js +30 -0
- package/features/redirects/DeleteRedirect/abstractions.js.map +1 -0
- package/features/redirects/DeleteRedirect/events.d.ts +10 -0
- package/features/redirects/DeleteRedirect/events.js +19 -0
- package/features/redirects/DeleteRedirect/events.js.map +1 -0
- package/features/redirects/DeleteRedirect/feature.d.ts +1 -0
- package/features/redirects/DeleteRedirect/feature.js +12 -0
- package/features/redirects/DeleteRedirect/feature.js.map +1 -0
- package/features/redirects/DeleteRedirect/index.d.ts +1 -16
- package/features/redirects/DeleteRedirect/index.js +1 -16
- package/features/redirects/DeleteRedirect/index.js.map +1 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsRepository.d.ts +11 -0
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsRepository.js +30 -0
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsRepository.js.map +1 -0
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.d.ts +8 -0
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js +17 -0
- package/features/redirects/GetActiveRedirects/GetActiveRedirectsUseCase.js.map +1 -0
- package/features/redirects/GetActiveRedirects/abstractions.d.ts +38 -0
- package/features/redirects/GetActiveRedirects/abstractions.js +15 -0
- package/features/redirects/GetActiveRedirects/abstractions.js.map +1 -0
- package/features/redirects/GetActiveRedirects/feature.d.ts +1 -0
- package/features/redirects/GetActiveRedirects/feature.js +12 -0
- package/features/redirects/GetActiveRedirects/feature.js.map +1 -0
- package/features/redirects/GetActiveRedirects/index.d.ts +1 -7
- package/features/redirects/GetActiveRedirects/index.js +1 -11
- package/features/redirects/GetActiveRedirects/index.js.map +1 -1
- package/features/redirects/GetRedirectById/GetRedirectByIdRepository.d.ts +13 -0
- package/features/redirects/GetRedirectById/GetRedirectByIdRepository.js +29 -0
- package/features/redirects/GetRedirectById/GetRedirectByIdRepository.js.map +1 -0
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.d.ts +8 -0
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js +17 -0
- package/features/redirects/GetRedirectById/GetRedirectByIdUseCase.js.map +1 -0
- package/features/redirects/GetRedirectById/abstractions.d.ts +40 -0
- package/features/redirects/GetRedirectById/abstractions.js +15 -0
- package/features/redirects/GetRedirectById/abstractions.js.map +1 -0
- package/features/redirects/GetRedirectById/feature.d.ts +1 -0
- package/features/redirects/GetRedirectById/feature.js +12 -0
- package/features/redirects/GetRedirectById/feature.js.map +1 -0
- package/features/redirects/GetRedirectById/index.d.ts +1 -9
- package/features/redirects/GetRedirectById/index.js +1 -14
- package/features/redirects/GetRedirectById/index.js.map +1 -1
- package/features/redirects/InvalidateRedirectsCache/InvalidateRedirectsCacheUseCase.d.ts +12 -0
- package/features/redirects/InvalidateRedirectsCache/InvalidateRedirectsCacheUseCase.js +28 -0
- package/features/redirects/InvalidateRedirectsCache/InvalidateRedirectsCacheUseCase.js.map +1 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.d.ts +9 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js +25 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterCreateHandler.js.map +1 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.d.ts +9 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js +25 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterDeleteHandler.js.map +1 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.d.ts +9 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js +26 -0
- package/features/redirects/InvalidateRedirectsCache/RedirectAfterUpdateHandler.js.map +1 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.d.ts +15 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.js +9 -0
- package/features/redirects/InvalidateRedirectsCache/abstractions.js.map +1 -0
- package/features/redirects/InvalidateRedirectsCache/feature.d.ts +1 -0
- package/features/redirects/InvalidateRedirectsCache/feature.js +16 -0
- package/features/redirects/InvalidateRedirectsCache/feature.js.map +1 -0
- package/features/redirects/InvalidateRedirectsCache/index.d.ts +1 -0
- package/features/redirects/InvalidateRedirectsCache/index.js +3 -0
- package/features/redirects/InvalidateRedirectsCache/index.js.map +1 -0
- package/features/redirects/ListRedirects/ListRedirectsRepository.d.ts +16 -0
- package/features/redirects/ListRedirects/ListRedirectsRepository.js +46 -0
- package/features/redirects/ListRedirects/ListRedirectsRepository.js.map +1 -0
- package/features/redirects/ListRedirects/ListRedirectsUseCase.d.ts +8 -0
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js +17 -0
- package/features/redirects/ListRedirects/ListRedirectsUseCase.js.map +1 -0
- package/features/redirects/ListRedirects/abstractions.d.ts +67 -0
- package/features/redirects/ListRedirects/abstractions.js +19 -0
- package/features/redirects/ListRedirects/abstractions.js.map +1 -0
- package/features/redirects/ListRedirects/feature.d.ts +1 -0
- package/features/redirects/ListRedirects/feature.js +12 -0
- package/features/redirects/ListRedirects/feature.js.map +1 -0
- package/features/redirects/ListRedirects/index.d.ts +1 -9
- package/features/redirects/ListRedirects/index.js +1 -14
- package/features/redirects/ListRedirects/index.js.map +1 -1
- package/features/redirects/MoveRedirect/MoveRedirectRepository.d.ts +15 -0
- package/features/redirects/MoveRedirect/MoveRedirectRepository.js +39 -0
- package/features/redirects/MoveRedirect/MoveRedirectRepository.js.map +1 -0
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.d.ts +12 -0
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js +49 -0
- package/features/redirects/MoveRedirect/MoveRedirectUseCase.js.map +1 -0
- package/features/redirects/MoveRedirect/abstractions.d.ts +63 -0
- package/features/redirects/MoveRedirect/abstractions.js +30 -0
- package/features/redirects/MoveRedirect/abstractions.js.map +1 -0
- package/features/redirects/MoveRedirect/events.d.ts +10 -0
- package/features/redirects/MoveRedirect/events.js +19 -0
- package/features/redirects/MoveRedirect/events.js.map +1 -0
- package/features/redirects/MoveRedirect/feature.d.ts +1 -0
- package/features/redirects/MoveRedirect/feature.js +12 -0
- package/features/redirects/MoveRedirect/feature.js.map +1 -0
- package/features/redirects/MoveRedirect/index.d.ts +1 -16
- package/features/redirects/MoveRedirect/index.js +1 -16
- package/features/redirects/MoveRedirect/index.js.map +1 -1
- package/features/redirects/RedirectPermissions/feature.d.ts +1 -0
- package/features/redirects/RedirectPermissions/feature.js +45 -0
- package/features/redirects/RedirectPermissions/feature.js.map +1 -0
- package/features/redirects/UpdateRedirect/UpdateRedirectRepository.d.ts +15 -0
- package/features/redirects/UpdateRedirect/UpdateRedirectRepository.js +47 -0
- package/features/redirects/UpdateRedirect/UpdateRedirectRepository.js.map +1 -0
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.d.ts +14 -0
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js +54 -0
- package/features/redirects/UpdateRedirect/UpdateRedirectUseCase.js.map +1 -0
- package/features/redirects/UpdateRedirect/abstractions.d.ts +75 -0
- package/features/redirects/UpdateRedirect/abstractions.js +30 -0
- package/features/redirects/UpdateRedirect/abstractions.js.map +1 -0
- package/features/redirects/UpdateRedirect/events.d.ts +10 -0
- package/features/redirects/UpdateRedirect/events.js +19 -0
- package/features/redirects/UpdateRedirect/events.js.map +1 -0
- package/features/redirects/UpdateRedirect/feature.d.ts +1 -0
- package/features/redirects/UpdateRedirect/feature.js +12 -0
- package/features/redirects/UpdateRedirect/feature.js.map +1 -0
- package/features/redirects/UpdateRedirect/index.d.ts +1 -16
- package/features/redirects/UpdateRedirect/index.js +1 -16
- package/features/redirects/UpdateRedirect/index.js.map +1 -1
- package/features/tenantManager/TenantModelExtension.d.ts +8 -0
- package/features/tenantManager/TenantModelExtension.js +36 -0
- package/features/tenantManager/TenantModelExtension.js.map +1 -0
- package/features/tenantManager/feature.d.ts +1 -0
- package/features/tenantManager/feature.js +10 -0
- package/features/tenantManager/feature.js.map +1 -0
- package/graphql/createGraphQL.d.ts +1 -1
- package/graphql/createGraphQL.js +6 -13
- package/graphql/createGraphQL.js.map +1 -1
- package/graphql/nextjs/NextjsGraphQLSchema.d.ts +9 -0
- package/graphql/nextjs/NextjsGraphQLSchema.js +48 -0
- package/graphql/nextjs/NextjsGraphQLSchema.js.map +1 -0
- package/graphql/pages/pages.gql.d.ts +2 -2
- package/graphql/pages/pages.gql.js +164 -85
- package/graphql/pages/pages.gql.js.map +1 -1
- package/graphql/pages/pages.typeDefs.d.ts +1 -1
- package/graphql/pages/pages.typeDefs.js +4 -10
- package/graphql/pages/pages.typeDefs.js.map +1 -1
- package/graphql/redirects/redirects.gql.d.ts +2 -2
- package/graphql/redirects/redirects.gql.js +61 -33
- package/graphql/redirects/redirects.gql.js.map +1 -1
- package/graphql/redirects/redirects.typeDefs.js +5 -10
- package/graphql/redirects/redirects.typeDefs.js.map +1 -1
- package/index.d.ts +1 -3
- package/index.js +81 -14
- package/index.js.map +1 -1
- package/package.json +25 -32
- package/rest/ActiveRedirectDto.js +1 -5
- package/rest/ActiveRedirectRestMapper.d.ts +2 -2
- package/rest/ActiveRedirectRestMapper.js +1 -8
- package/rest/ActiveRedirectRestMapper.js.map +1 -1
- package/rest/getRedirects.d.ts +2 -2
- package/rest/getRedirects.js +10 -15
- package/rest/getRedirects.js.map +1 -1
- package/utils/ensureAuthentication.d.ts +6 -2
- package/utils/ensureAuthentication.js +10 -12
- package/utils/ensureAuthentication.js.map +1 -1
- package/utils/resolve.d.ts +1 -2
- package/utils/resolve.js +4 -20
- package/utils/resolve.js.map +1 -1
- package/context/BaseContext.d.ts +0 -11
- package/context/BaseContext.js +0 -41
- package/context/BaseContext.js.map +0 -1
- package/context/WebsiteBuilder.d.ts +0 -14
- package/context/WebsiteBuilder.js +0 -62
- package/context/WebsiteBuilder.js.map +0 -1
- package/context/pages/PagesStorage.d.ts +0 -33
- package/context/pages/PagesStorage.js +0 -123
- package/context/pages/PagesStorage.js.map +0 -1
- package/context/pages/pages.context.d.ts +0 -11
- package/context/pages/pages.context.js +0 -82
- package/context/pages/pages.context.js.map +0 -1
- package/context/pages/pages.crud.d.ts +0 -3
- package/context/pages/pages.crud.js +0 -208
- package/context/pages/pages.crud.js.map +0 -1
- package/context/pages/pages.types.d.ts +0 -247
- package/context/pages/pages.types.js +0 -7
- package/context/pages/pages.types.js.map +0 -1
- package/context/redirects/RedirectsStorage.d.ts +0 -21
- package/context/redirects/RedirectsStorage.js +0 -88
- package/context/redirects/RedirectsStorage.js.map +0 -1
- package/context/redirects/redirects.context.d.ts +0 -11
- package/context/redirects/redirects.context.js +0 -80
- package/context/redirects/redirects.context.js.map +0 -1
- package/context/redirects/redirects.crud.d.ts +0 -3
- package/context/redirects/redirects.crud.js +0 -116
- package/context/redirects/redirects.crud.js.map +0 -1
- package/context/redirects/redirects.types.d.ts +0 -147
- package/context/redirects/redirects.types.js +0 -7
- package/context/redirects/redirects.types.js.map +0 -1
- package/context/types.d.ts +0 -29
- package/context/types.js +0 -7
- package/context/types.js.map +0 -1
- package/features/pages/CreatePage/CreatePage.d.ts +0 -7
- package/features/pages/CreatePage/CreatePage.js +0 -19
- package/features/pages/CreatePage/CreatePage.js.map +0 -1
- package/features/pages/CreatePage/CreatePageWithEvents.d.ts +0 -9
- package/features/pages/CreatePage/CreatePageWithEvents.js +0 -25
- package/features/pages/CreatePage/CreatePageWithEvents.js.map +0 -1
- package/features/pages/CreatePage/ICreatePage.d.ts +0 -4
- package/features/pages/CreatePage/ICreatePage.js +0 -7
- package/features/pages/CreatePage/ICreatePage.js.map +0 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFrom.d.ts +0 -7
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFrom.js +0 -17
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFrom.js.map +0 -1
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromWithEvents.d.ts +0 -10
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromWithEvents.js +0 -32
- package/features/pages/CreatePageRevisionFrom/CreatePageRevisionFromWithEvents.js.map +0 -1
- package/features/pages/CreatePageRevisionFrom/ICreatePageRevisionFrom.d.ts +0 -4
- package/features/pages/CreatePageRevisionFrom/ICreatePageRevisionFrom.js +0 -7
- package/features/pages/CreatePageRevisionFrom/ICreatePageRevisionFrom.js.map +0 -1
- package/features/pages/DeletePage/DeletePage.d.ts +0 -7
- package/features/pages/DeletePage/DeletePage.js +0 -17
- package/features/pages/DeletePage/DeletePage.js.map +0 -1
- package/features/pages/DeletePage/DeletePageWithEvents.d.ts +0 -10
- package/features/pages/DeletePage/DeletePageWithEvents.js +0 -30
- package/features/pages/DeletePage/DeletePageWithEvents.js.map +0 -1
- package/features/pages/DeletePage/IDeletePage.d.ts +0 -4
- package/features/pages/DeletePage/IDeletePage.js +0 -7
- package/features/pages/DeletePage/IDeletePage.js.map +0 -1
- package/features/pages/DuplicatePage/DuplicatePage.d.ts +0 -9
- package/features/pages/DuplicatePage/DuplicatePage.js +0 -39
- package/features/pages/DuplicatePage/DuplicatePage.js.map +0 -1
- package/features/pages/DuplicatePage/DuplicatePageWithEvents.d.ts +0 -10
- package/features/pages/DuplicatePage/DuplicatePageWithEvents.js +0 -32
- package/features/pages/DuplicatePage/DuplicatePageWithEvents.js.map +0 -1
- package/features/pages/DuplicatePage/IDuplicatePage.d.ts +0 -4
- package/features/pages/DuplicatePage/IDuplicatePage.js +0 -7
- package/features/pages/DuplicatePage/IDuplicatePage.js.map +0 -1
- package/features/pages/GetPageById/GetPageById.d.ts +0 -7
- package/features/pages/GetPageById/GetPageById.js +0 -17
- package/features/pages/GetPageById/GetPageById.js.map +0 -1
- package/features/pages/GetPageById/IGetPageById.d.ts +0 -4
- package/features/pages/GetPageById/IGetPageById.js +0 -7
- package/features/pages/GetPageById/IGetPageById.js.map +0 -1
- package/features/pages/GetPageByPath/GetPageByPath.d.ts +0 -11
- package/features/pages/GetPageByPath/GetPageByPath.js +0 -28
- package/features/pages/GetPageByPath/GetPageByPath.js.map +0 -1
- package/features/pages/GetPageByPath/IGetPageByPath.d.ts +0 -4
- package/features/pages/GetPageByPath/IGetPageByPath.js +0 -7
- package/features/pages/GetPageByPath/IGetPageByPath.js.map +0 -1
- package/features/pages/GetPageRevisions/GetPageRevisions.d.ts +0 -7
- package/features/pages/GetPageRevisions/GetPageRevisions.js +0 -17
- package/features/pages/GetPageRevisions/GetPageRevisions.js.map +0 -1
- package/features/pages/GetPageRevisions/IGetPageById.d.ts +0 -4
- package/features/pages/GetPageRevisions/IGetPageById.js +0 -7
- package/features/pages/GetPageRevisions/IGetPageById.js.map +0 -1
- package/features/pages/ListPages/IListPages.d.ts +0 -17
- package/features/pages/ListPages/IListPages.js +0 -7
- package/features/pages/ListPages/IListPages.js.map +0 -1
- package/features/pages/ListPages/ListPages.d.ts +0 -7
- package/features/pages/ListPages/ListPages.js +0 -17
- package/features/pages/ListPages/ListPages.js.map +0 -1
- package/features/pages/MovePage/IMovePage.d.ts +0 -4
- package/features/pages/MovePage/IMovePage.js +0 -7
- package/features/pages/MovePage/IMovePage.js.map +0 -1
- package/features/pages/MovePage/MovePage.d.ts +0 -7
- package/features/pages/MovePage/MovePage.js +0 -17
- package/features/pages/MovePage/MovePage.js.map +0 -1
- package/features/pages/MovePage/MovePageWithEvents.d.ts +0 -10
- package/features/pages/MovePage/MovePageWithEvents.js +0 -32
- package/features/pages/MovePage/MovePageWithEvents.js.map +0 -1
- package/features/pages/PublishPage/IPublishPage.d.ts +0 -4
- package/features/pages/PublishPage/IPublishPage.js +0 -7
- package/features/pages/PublishPage/IPublishPage.js.map +0 -1
- package/features/pages/PublishPage/PublishPage.d.ts +0 -7
- package/features/pages/PublishPage/PublishPage.js +0 -17
- package/features/pages/PublishPage/PublishPage.js.map +0 -1
- package/features/pages/PublishPage/PublishPageWithEvents.d.ts +0 -10
- package/features/pages/PublishPage/PublishPageWithEvents.js +0 -31
- package/features/pages/PublishPage/PublishPageWithEvents.js.map +0 -1
- package/features/pages/UnpublishPage/IUnpublishPage.d.ts +0 -4
- package/features/pages/UnpublishPage/IUnpublishPage.js +0 -7
- package/features/pages/UnpublishPage/IUnpublishPage.js.map +0 -1
- package/features/pages/UnpublishPage/UnpublishPage.d.ts +0 -7
- package/features/pages/UnpublishPage/UnpublishPage.js +0 -17
- package/features/pages/UnpublishPage/UnpublishPage.js.map +0 -1
- package/features/pages/UnpublishPage/UnpublishPageWithEvents.d.ts +0 -10
- package/features/pages/UnpublishPage/UnpublishPageWithEvents.js +0 -31
- package/features/pages/UnpublishPage/UnpublishPageWithEvents.js.map +0 -1
- package/features/pages/UpdatePage/IUpdatePage.d.ts +0 -4
- package/features/pages/UpdatePage/IUpdatePage.js +0 -7
- package/features/pages/UpdatePage/IUpdatePage.js.map +0 -1
- package/features/pages/UpdatePage/UpdatePage.d.ts +0 -7
- package/features/pages/UpdatePage/UpdatePage.js +0 -20
- package/features/pages/UpdatePage/UpdatePage.js.map +0 -1
- package/features/pages/UpdatePage/UpdatePageWithEvents.d.ts +0 -10
- package/features/pages/UpdatePage/UpdatePageWithEvents.js +0 -40
- package/features/pages/UpdatePage/UpdatePageWithEvents.js.map +0 -1
- package/features/pages/index.d.ts +0 -9
- package/features/pages/index.js +0 -106
- package/features/pages/index.js.map +0 -1
- package/features/redirects/CreateRedirect/CreateRedirectWithEvents.d.ts +0 -9
- package/features/redirects/CreateRedirect/CreateRedirectWithEvents.js +0 -25
- package/features/redirects/CreateRedirect/CreateRedirectWithEvents.js.map +0 -1
- package/features/redirects/CreateRedirect/CreateRevision.d.ts +0 -7
- package/features/redirects/CreateRedirect/CreateRevision.js +0 -19
- package/features/redirects/CreateRedirect/CreateRevision.js.map +0 -1
- package/features/redirects/CreateRedirect/ICreateRedirect.d.ts +0 -4
- package/features/redirects/CreateRedirect/ICreateRedirect.js +0 -7
- package/features/redirects/CreateRedirect/ICreateRedirect.js.map +0 -1
- package/features/redirects/DeleteRedirect/DeleteRedirect.d.ts +0 -7
- package/features/redirects/DeleteRedirect/DeleteRedirect.js +0 -17
- package/features/redirects/DeleteRedirect/DeleteRedirect.js.map +0 -1
- package/features/redirects/DeleteRedirect/DeleteRedirectWithEvents.d.ts +0 -10
- package/features/redirects/DeleteRedirect/DeleteRedirectWithEvents.js +0 -30
- package/features/redirects/DeleteRedirect/DeleteRedirectWithEvents.js.map +0 -1
- package/features/redirects/DeleteRedirect/IDeleteRedirect.d.ts +0 -4
- package/features/redirects/DeleteRedirect/IDeleteRedirect.js +0 -7
- package/features/redirects/DeleteRedirect/IDeleteRedirect.js.map +0 -1
- package/features/redirects/GetActiveRedirects/GetActiveRedirects.d.ts +0 -7
- package/features/redirects/GetActiveRedirects/GetActiveRedirects.js +0 -26
- package/features/redirects/GetActiveRedirects/GetActiveRedirects.js.map +0 -1
- package/features/redirects/GetActiveRedirects/IGetActiveRedirects.d.ts +0 -4
- package/features/redirects/GetActiveRedirects/IGetActiveRedirects.js +0 -7
- package/features/redirects/GetActiveRedirects/IGetActiveRedirects.js.map +0 -1
- package/features/redirects/GetRedirectById/GetRedirectById.d.ts +0 -7
- package/features/redirects/GetRedirectById/GetRedirectById.js +0 -17
- package/features/redirects/GetRedirectById/GetRedirectById.js.map +0 -1
- package/features/redirects/GetRedirectById/IGetRedirectById.d.ts +0 -4
- package/features/redirects/GetRedirectById/IGetRedirectById.js +0 -7
- package/features/redirects/GetRedirectById/IGetRedirectById.js.map +0 -1
- package/features/redirects/InvalidateRedirectsCache.d.ts +0 -7
- package/features/redirects/InvalidateRedirectsCache.js +0 -24
- package/features/redirects/InvalidateRedirectsCache.js.map +0 -1
- package/features/redirects/ListRedirects/IListRedirects.d.ts +0 -17
- package/features/redirects/ListRedirects/IListRedirects.js +0 -7
- package/features/redirects/ListRedirects/IListRedirects.js.map +0 -1
- package/features/redirects/ListRedirects/ListRedirects.d.ts +0 -7
- package/features/redirects/ListRedirects/ListRedirects.js +0 -17
- package/features/redirects/ListRedirects/ListRedirects.js.map +0 -1
- package/features/redirects/MoveRedirect/IMoveRedirect.d.ts +0 -4
- package/features/redirects/MoveRedirect/IMoveRedirect.js +0 -7
- package/features/redirects/MoveRedirect/IMoveRedirect.js.map +0 -1
- package/features/redirects/MoveRedirect/MoveRedirect.d.ts +0 -7
- package/features/redirects/MoveRedirect/MoveRedirect.js +0 -17
- package/features/redirects/MoveRedirect/MoveRedirect.js.map +0 -1
- package/features/redirects/MoveRedirect/MoveRedirectWithEvents.d.ts +0 -10
- package/features/redirects/MoveRedirect/MoveRedirectWithEvents.js +0 -32
- package/features/redirects/MoveRedirect/MoveRedirectWithEvents.js.map +0 -1
- package/features/redirects/UpdateRedirect/IUpdateRedirect.d.ts +0 -4
- package/features/redirects/UpdateRedirect/IUpdateRedirect.js +0 -7
- package/features/redirects/UpdateRedirect/IUpdateRedirect.js.map +0 -1
- package/features/redirects/UpdateRedirect/UpdateRedirect.d.ts +0 -7
- package/features/redirects/UpdateRedirect/UpdateRedirect.js +0 -20
- package/features/redirects/UpdateRedirect/UpdateRedirect.js.map +0 -1
- package/features/redirects/UpdateRedirect/UpdateRedirectWithEvents.d.ts +0 -10
- package/features/redirects/UpdateRedirect/UpdateRedirectWithEvents.js +0 -40
- package/features/redirects/UpdateRedirect/UpdateRedirectWithEvents.js.map +0 -1
- package/features/redirects/index.d.ts +0 -7
- package/features/redirects/index.js +0 -84
- package/features/redirects/index.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AppInstaller } from "@webiny/api-core/features/InstallTenant";
|
|
2
|
+
import { CreateApiKeyUseCase } from "@webiny/api-core/features/security/apiKeys/CreateApiKey/index.js";
|
|
3
|
+
import { DeleteApiKeyUseCase } from "@webiny/api-core/features/security/apiKeys/DeleteApiKey/index.js";
|
|
4
|
+
class ApiKeyInstallerImpl {
|
|
5
|
+
alwaysRun = true;
|
|
6
|
+
appName = "WebsiteBuilder";
|
|
7
|
+
dependsOn = [];
|
|
8
|
+
apiKey = undefined;
|
|
9
|
+
constructor(createApiKey, deleteApiKey) {
|
|
10
|
+
this.createApiKey = createApiKey;
|
|
11
|
+
this.deleteApiKey = deleteApiKey;
|
|
12
|
+
}
|
|
13
|
+
async install() {
|
|
14
|
+
const result = await this.createApiKey.execute({
|
|
15
|
+
name: "Website Builder",
|
|
16
|
+
description: "Integrate Next.js or custom frontend with Website Builder.",
|
|
17
|
+
slug: "website-builder",
|
|
18
|
+
permissions: [{
|
|
19
|
+
name: "wb.*"
|
|
20
|
+
}]
|
|
21
|
+
});
|
|
22
|
+
if (result.isOk()) {
|
|
23
|
+
this.apiKey = result.value;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async uninstall() {
|
|
27
|
+
if (this.apiKey) {
|
|
28
|
+
await this.deleteApiKey.execute(this.apiKey.id);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export const ApiKeyInstaller = AppInstaller.createImplementation({
|
|
33
|
+
implementation: ApiKeyInstallerImpl,
|
|
34
|
+
dependencies: [CreateApiKeyUseCase, DeleteApiKeyUseCase]
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=ApiKeyInstaller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AppInstaller","CreateApiKeyUseCase","DeleteApiKeyUseCase","ApiKeyInstallerImpl","alwaysRun","appName","dependsOn","apiKey","undefined","constructor","createApiKey","deleteApiKey","install","result","execute","name","description","slug","permissions","isOk","value","uninstall","id","ApiKeyInstaller","createImplementation","implementation","dependencies"],"sources":["ApiKeyInstaller.ts"],"sourcesContent":["import { AppInstaller } from \"@webiny/api-core/features/InstallTenant\";\nimport { CreateApiKeyUseCase } from \"@webiny/api-core/features/security/apiKeys/CreateApiKey/index.js\";\nimport { DeleteApiKeyUseCase } from \"@webiny/api-core/features/security/apiKeys/DeleteApiKey/index.js\";\nimport type { ApiKey } from \"@webiny/api-core/types/security.js\";\n\nclass ApiKeyInstallerImpl implements AppInstaller.Interface {\n readonly alwaysRun = true;\n readonly appName = \"WebsiteBuilder\";\n readonly dependsOn = [];\n private apiKey: ApiKey | undefined = undefined;\n\n constructor(\n private createApiKey: CreateApiKeyUseCase.Interface,\n private deleteApiKey: DeleteApiKeyUseCase.Interface\n ) {}\n\n async install(): Promise<void> {\n const result = await this.createApiKey.execute({\n name: \"Website Builder\",\n description: \"Integrate Next.js or custom frontend with Website Builder.\",\n slug: \"website-builder\",\n permissions: [{ name: \"wb.*\" }]\n });\n\n if (result.isOk()) {\n this.apiKey = result.value;\n }\n }\n\n async uninstall(): Promise<void> {\n if (this.apiKey) {\n await this.deleteApiKey.execute(this.apiKey.id);\n }\n }\n}\n\nexport const ApiKeyInstaller = AppInstaller.createImplementation({\n implementation: ApiKeyInstallerImpl,\n dependencies: [CreateApiKeyUseCase, DeleteApiKeyUseCase]\n});\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,yCAAyC;AACtE,SAASC,mBAAmB,QAAQ,kEAAkE;AACtG,SAASC,mBAAmB,QAAQ,kEAAkE;AAGtG,MAAMC,mBAAmB,CAAmC;EAC/CC,SAAS,GAAG,IAAI;EAChBC,OAAO,GAAG,gBAAgB;EAC1BC,SAAS,GAAG,EAAE;EACfC,MAAM,GAAuBC,SAAS;EAE9CC,WAAWA,CACCC,YAA2C,EAC3CC,YAA2C,EACrD;IAAA,KAFUD,YAA2C,GAA3CA,YAA2C;IAAA,KAC3CC,YAA2C,GAA3CA,YAA2C;EACpD;EAEH,MAAMC,OAAOA,CAAA,EAAkB;IAC3B,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACH,YAAY,CAACI,OAAO,CAAC;MAC3CC,IAAI,EAAE,iBAAiB;MACvBC,WAAW,EAAE,4DAA4D;MACzEC,IAAI,EAAE,iBAAiB;MACvBC,WAAW,EAAE,CAAC;QAAEH,IAAI,EAAE;MAAO,CAAC;IAClC,CAAC,CAAC;IAEF,IAAIF,MAAM,CAACM,IAAI,CAAC,CAAC,EAAE;MACf,IAAI,CAACZ,MAAM,GAAGM,MAAM,CAACO,KAAK;IAC9B;EACJ;EAEA,MAAMC,SAASA,CAAA,EAAkB;IAC7B,IAAI,IAAI,CAACd,MAAM,EAAE;MACb,MAAM,IAAI,CAACI,YAAY,CAACG,OAAO,CAAC,IAAI,CAACP,MAAM,CAACe,EAAE,CAAC;IACnD;EACJ;AACJ;AAEA,OAAO,MAAMC,eAAe,GAAGvB,YAAY,CAACwB,oBAAoB,CAAC;EAC7DC,cAAc,EAAEtB,mBAAmB;EACnCuB,YAAY,EAAE,CAACzB,mBAAmB,EAAEC,mBAAmB;AAC3D,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ApiKeyInstallerFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { ApiKeyInstaller } from "./ApiKeyInstaller.js";
|
|
3
|
+
export const ApiKeyInstallerFeature = createFeature({
|
|
4
|
+
name: "WebsiteBuilder/ApiKeyInstaller",
|
|
5
|
+
register(container) {
|
|
6
|
+
container.register(ApiKeyInstaller);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","ApiKeyInstaller","ApiKeyInstallerFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ApiKeyInstaller } from \"./ApiKeyInstaller.js\";\n\nexport const ApiKeyInstallerFeature = createFeature({\n name: \"WebsiteBuilder/ApiKeyInstaller\",\n register(container) {\n container.register(ApiKeyInstaller);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,eAAe;AAExB,OAAO,MAAMC,sBAAsB,GAAGF,aAAa,CAAC;EAChDG,IAAI,EAAE,gCAAgC;EACtCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,eAAe,CAAC;EACvC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface ISection {
|
|
2
|
+
id: string;
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export interface IPositionOptions {
|
|
6
|
+
before?: string;
|
|
7
|
+
after?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface IMarkdownContentBuilder {
|
|
10
|
+
add(id: string, text: string, position?: IPositionOptions): this;
|
|
11
|
+
remove(id: string): this;
|
|
12
|
+
replace(id: string, markdown: string | ((currentContent: string) => string)): this;
|
|
13
|
+
setVariable(key: string, value: string): this;
|
|
14
|
+
setVariables(vars: Record<string, string>): this;
|
|
15
|
+
getVariable(key: string): string | undefined;
|
|
16
|
+
build(joinWith?: string): string;
|
|
17
|
+
}
|
|
18
|
+
export declare class MarkdownContentBuilder implements IMarkdownContentBuilder {
|
|
19
|
+
private sections;
|
|
20
|
+
private variables;
|
|
21
|
+
private readonly MAX_INTERPOLATION_DEPTH;
|
|
22
|
+
add(id: string, markdown: string, position?: IPositionOptions): this;
|
|
23
|
+
remove(id: string): this;
|
|
24
|
+
replace(id: string, markdown: string | ((currentContent: string) => string)): this;
|
|
25
|
+
setVariable(key: string, value: string): this;
|
|
26
|
+
setVariables(vars: Record<string, string>): this;
|
|
27
|
+
getVariable(key: string): string | undefined;
|
|
28
|
+
private substituteVariables;
|
|
29
|
+
private escapeRegex;
|
|
30
|
+
build(joinWith?: string): string;
|
|
31
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export class MarkdownContentBuilder {
|
|
2
|
+
sections = [];
|
|
3
|
+
variables = new Map();
|
|
4
|
+
MAX_INTERPOLATION_DEPTH = 10; // Prevent infinite loops
|
|
5
|
+
|
|
6
|
+
add(id, markdown, position) {
|
|
7
|
+
const section = {
|
|
8
|
+
id,
|
|
9
|
+
content: markdown
|
|
10
|
+
};
|
|
11
|
+
if (position?.before) {
|
|
12
|
+
const index = this.sections.findIndex(s => s.id === position.before);
|
|
13
|
+
if (index !== -1) {
|
|
14
|
+
this.sections.splice(index, 0, section);
|
|
15
|
+
return this;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (position?.after) {
|
|
19
|
+
const index = this.sections.findIndex(s => s.id === position.after);
|
|
20
|
+
if (index !== -1) {
|
|
21
|
+
this.sections.splice(index + 1, 0, section);
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
this.sections.push(section);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
remove(id) {
|
|
29
|
+
this.sections = this.sections.filter(s => s.id !== id);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
replace(id, markdown) {
|
|
33
|
+
const section = this.sections.find(s => s.id === id);
|
|
34
|
+
if (section) {
|
|
35
|
+
if (typeof markdown === "function") {
|
|
36
|
+
section.content = markdown(section.content);
|
|
37
|
+
} else {
|
|
38
|
+
section.content = markdown;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
setVariable(key, value) {
|
|
44
|
+
this.variables.set(key, value);
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
setVariables(vars) {
|
|
48
|
+
Object.entries(vars).forEach(([key, value]) => {
|
|
49
|
+
this.variables.set(key, value);
|
|
50
|
+
});
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
getVariable(key) {
|
|
54
|
+
return this.variables.get(key);
|
|
55
|
+
}
|
|
56
|
+
substituteVariables(text) {
|
|
57
|
+
let result = text;
|
|
58
|
+
let previousResult = "";
|
|
59
|
+
let depth = 0;
|
|
60
|
+
|
|
61
|
+
// Keep substituting until no more changes occur or max depth reached
|
|
62
|
+
while (result !== previousResult && depth < this.MAX_INTERPOLATION_DEPTH) {
|
|
63
|
+
previousResult = result;
|
|
64
|
+
this.variables.forEach((value, key) => {
|
|
65
|
+
const regex = new RegExp(`\\{${this.escapeRegex(key)}\\}`, "g");
|
|
66
|
+
result = result.replace(regex, value);
|
|
67
|
+
});
|
|
68
|
+
depth++;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Warn about potential circular reference if max depth reached
|
|
72
|
+
if (depth === this.MAX_INTERPOLATION_DEPTH && result !== previousResult) {
|
|
73
|
+
console.warn("Maximum interpolation depth reached. Possible circular variable reference.");
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
escapeRegex(str) {
|
|
78
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
79
|
+
}
|
|
80
|
+
build(joinWith = "\n") {
|
|
81
|
+
const content = this.sections.map(s => s.content).join(joinWith);
|
|
82
|
+
return this.substituteVariables(content);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=MarkdownContentBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MarkdownContentBuilder","sections","variables","Map","MAX_INTERPOLATION_DEPTH","add","id","markdown","position","section","content","before","index","findIndex","s","splice","after","push","remove","filter","replace","find","setVariable","key","value","set","setVariables","vars","Object","entries","forEach","getVariable","get","substituteVariables","text","result","previousResult","depth","regex","RegExp","escapeRegex","console","warn","str","build","joinWith","map","join"],"sources":["MarkdownContentBuilder.ts"],"sourcesContent":["export interface ISection {\n id: string;\n content: string;\n}\n\nexport interface IPositionOptions {\n before?: string;\n after?: string;\n}\nexport interface IMarkdownContentBuilder {\n add(id: string, text: string, position?: IPositionOptions): this;\n remove(id: string): this;\n replace(id: string, markdown: string | ((currentContent: string) => string)): this;\n setVariable(key: string, value: string): this;\n setVariables(vars: Record<string, string>): this;\n getVariable(key: string): string | undefined;\n build(joinWith?: string): string;\n}\n\nexport class MarkdownContentBuilder implements IMarkdownContentBuilder {\n private sections: ISection[] = [];\n private variables: Map<string, string> = new Map();\n private readonly MAX_INTERPOLATION_DEPTH = 10; // Prevent infinite loops\n\n add(id: string, markdown: string, position?: IPositionOptions): this {\n const section: ISection = { id, content: markdown };\n\n if (position?.before) {\n const index = this.sections.findIndex(s => s.id === position.before);\n if (index !== -1) {\n this.sections.splice(index, 0, section);\n return this;\n }\n }\n\n if (position?.after) {\n const index = this.sections.findIndex(s => s.id === position.after);\n if (index !== -1) {\n this.sections.splice(index + 1, 0, section);\n return this;\n }\n }\n\n this.sections.push(section);\n return this;\n }\n\n remove(id: string): this {\n this.sections = this.sections.filter(s => s.id !== id);\n return this;\n }\n\n replace(id: string, markdown: string | ((currentContent: string) => string)): this {\n const section = this.sections.find(s => s.id === id);\n if (section) {\n if (typeof markdown === \"function\") {\n section.content = markdown(section.content);\n } else {\n section.content = markdown;\n }\n }\n return this;\n }\n\n setVariable(key: string, value: string): this {\n this.variables.set(key, value);\n return this;\n }\n\n setVariables(vars: Record<string, string>): this {\n Object.entries(vars).forEach(([key, value]) => {\n this.variables.set(key, value);\n });\n return this;\n }\n\n getVariable(key: string): string | undefined {\n return this.variables.get(key);\n }\n\n private substituteVariables(text: string): string {\n let result = text;\n let previousResult = \"\";\n let depth = 0;\n\n // Keep substituting until no more changes occur or max depth reached\n while (result !== previousResult && depth < this.MAX_INTERPOLATION_DEPTH) {\n previousResult = result;\n\n this.variables.forEach((value, key) => {\n const regex = new RegExp(`\\\\{${this.escapeRegex(key)}\\\\}`, \"g\");\n result = result.replace(regex, value);\n });\n\n depth++;\n }\n\n // Warn about potential circular reference if max depth reached\n if (depth === this.MAX_INTERPOLATION_DEPTH && result !== previousResult) {\n console.warn(\n \"Maximum interpolation depth reached. Possible circular variable reference.\"\n );\n }\n\n return result;\n }\n\n private escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n }\n\n build(joinWith = \"\\n\"): string {\n const content = this.sections.map(s => s.content).join(joinWith);\n return this.substituteVariables(content);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from "vitest";
|
|
2
|
+
import { MarkdownContentBuilder } from "./MarkdownContentBuilder.js";
|
|
3
|
+
describe("MarkdownContentBuilder", () => {
|
|
4
|
+
let builder;
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
builder = new MarkdownContentBuilder();
|
|
7
|
+
});
|
|
8
|
+
describe("add", () => {
|
|
9
|
+
it("should add sections to the end by default", () => {
|
|
10
|
+
builder.add("section1", "First section").add("section2", "Second section");
|
|
11
|
+
expect(builder.build()).toBe("First section\nSecond section");
|
|
12
|
+
});
|
|
13
|
+
it("should add section before specified id", () => {
|
|
14
|
+
builder.add("section1", "First").add("section2", "Second").add("section-middle", "Middle", {
|
|
15
|
+
before: "section2"
|
|
16
|
+
});
|
|
17
|
+
expect(builder.build()).toBe("First\nMiddle\nSecond");
|
|
18
|
+
});
|
|
19
|
+
it("should add section after specified id", () => {
|
|
20
|
+
builder.add("section1", "First").add("section2", "Second").add("section-middle", "Middle", {
|
|
21
|
+
after: "section1"
|
|
22
|
+
});
|
|
23
|
+
expect(builder.build()).toBe("First\nMiddle\nSecond");
|
|
24
|
+
});
|
|
25
|
+
it("should append to end if before id not found", () => {
|
|
26
|
+
builder.add("section1", "First").add("section2", "Second", {
|
|
27
|
+
before: "non-existent"
|
|
28
|
+
});
|
|
29
|
+
expect(builder.build()).toBe("First\nSecond");
|
|
30
|
+
});
|
|
31
|
+
it("should append to end if after id not found", () => {
|
|
32
|
+
builder.add("section1", "First").add("section2", "Second", {
|
|
33
|
+
after: "non-existent"
|
|
34
|
+
});
|
|
35
|
+
expect(builder.build()).toBe("First\nSecond");
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe("remove", () => {
|
|
39
|
+
it("should remove section by id", () => {
|
|
40
|
+
builder.add("section1", "First").add("section2", "Second").add("section3", "Third").remove("section2");
|
|
41
|
+
expect(builder.build()).toBe("First\nThird");
|
|
42
|
+
});
|
|
43
|
+
it("should handle removing non-existent id gracefully", () => {
|
|
44
|
+
builder.add("section1", "First").remove("non-existent");
|
|
45
|
+
expect(builder.build()).toBe("First");
|
|
46
|
+
});
|
|
47
|
+
it("should handle removing from empty builder", () => {
|
|
48
|
+
builder.remove("section1");
|
|
49
|
+
expect(builder.build()).toBe("");
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("replace", () => {
|
|
53
|
+
it("should replace section content with string", () => {
|
|
54
|
+
builder.add("section1", "Original content").replace("section1", "Replaced content");
|
|
55
|
+
expect(builder.build()).toBe("Replaced content");
|
|
56
|
+
});
|
|
57
|
+
it("should replace section content with callback", () => {
|
|
58
|
+
builder.add("section1", "Original content").replace("section1", current => current.toUpperCase());
|
|
59
|
+
expect(builder.build()).toBe("ORIGINAL CONTENT");
|
|
60
|
+
});
|
|
61
|
+
it("should pass current content to callback", () => {
|
|
62
|
+
builder.add("section1", "Hello").replace("section1", current => `${current} World`);
|
|
63
|
+
expect(builder.build()).toBe("Hello World");
|
|
64
|
+
});
|
|
65
|
+
it("should handle callback that transforms content", () => {
|
|
66
|
+
builder.add("code", '```bash\necho "test"\n```').replace("code", current => current.replace("bash", "javascript"));
|
|
67
|
+
expect(builder.build()).toBe('```javascript\necho "test"\n```');
|
|
68
|
+
});
|
|
69
|
+
it("should handle callback returning empty string", () => {
|
|
70
|
+
builder.add("section1", "Original").replace("section1", () => "");
|
|
71
|
+
expect(builder.build()).toBe("");
|
|
72
|
+
});
|
|
73
|
+
it("should handle replacing non-existent id with callback gracefully", () => {
|
|
74
|
+
builder.add("section1", "First").replace("non-existent", current => current + " modified");
|
|
75
|
+
expect(builder.build()).toBe("First");
|
|
76
|
+
});
|
|
77
|
+
it("should maintain section position when replacing with callback", () => {
|
|
78
|
+
builder.add("section1", "First").add("section2", "Second").add("section3", "Third").replace("section2", current => current.toUpperCase());
|
|
79
|
+
expect(builder.build()).toBe("First\nSECOND\nThird");
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe("complex scenarios with callbacks", () => {
|
|
83
|
+
it("should support plugin decoration with transformations", () => {
|
|
84
|
+
builder.setVariable("API_KEY", "wat_12345").add("section1", "Key: {API_KEY}").add("code", "```bash\nAPI_KEY={API_KEY}\n```");
|
|
85
|
+
|
|
86
|
+
// Plugin adds warning to code section
|
|
87
|
+
builder.replace("code", current => {
|
|
88
|
+
return `⚠️ **Security Warning**: Keep this private!\n\n${current}`;
|
|
89
|
+
});
|
|
90
|
+
const result = builder.build();
|
|
91
|
+
expect(result).toContain("Security Warning");
|
|
92
|
+
expect(result).toContain("```bash");
|
|
93
|
+
});
|
|
94
|
+
it("should chain multiple replace operations", () => {
|
|
95
|
+
builder.add("text", "hello world").replace("text", s => s.toUpperCase()).replace("text", s => `**${s}**`).replace("text", s => `${s}!!!`);
|
|
96
|
+
expect(builder.build()).toBe("**HELLO WORLD**!!!");
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe("variables", () => {
|
|
100
|
+
it("should set and substitute single variable", () => {
|
|
101
|
+
builder.setVariable("API_KEY", "wat_12345").add("section1", "Your API key is {API_KEY}");
|
|
102
|
+
expect(builder.build()).toBe("Your API key is wat_12345");
|
|
103
|
+
});
|
|
104
|
+
it("should set and substitute multiple variables", () => {
|
|
105
|
+
builder.setVariables({
|
|
106
|
+
API_KEY: "wat_12345",
|
|
107
|
+
HOST: "https://api.example.com",
|
|
108
|
+
TENANT: "root"
|
|
109
|
+
}).add("section1", "Key: {API_KEY}, Host: {HOST}, Tenant: {TENANT}");
|
|
110
|
+
expect(builder.build()).toBe("Key: wat_12345, Host: https://api.example.com, Tenant: root");
|
|
111
|
+
});
|
|
112
|
+
it("should substitute variables in multiple sections", () => {
|
|
113
|
+
builder.setVariable("API_KEY", "wat_12345").add("section1", "Section 1: {API_KEY}").add("section2", "Section 2: {API_KEY}");
|
|
114
|
+
expect(builder.build()).toBe("Section 1: wat_12345\nSection 2: wat_12345");
|
|
115
|
+
});
|
|
116
|
+
it("should handle variable replacement in code blocks", () => {
|
|
117
|
+
builder.setVariables({
|
|
118
|
+
API_KEY: "wat_12345",
|
|
119
|
+
HOST: "https://api.example.com"
|
|
120
|
+
}).add("code", "```bash\nAPI_KEY={API_KEY}\nHOST={HOST}\n```");
|
|
121
|
+
expect(builder.build()).toBe("```bash\nAPI_KEY=wat_12345\nHOST=https://api.example.com\n```");
|
|
122
|
+
});
|
|
123
|
+
it("should leave unmatched variables unchanged", () => {
|
|
124
|
+
builder.setVariable("API_KEY", "wat_12345").add("section1", "Key: {API_KEY}, Unknown: {UNKNOWN}");
|
|
125
|
+
expect(builder.build()).toBe("Key: wat_12345, Unknown: {UNKNOWN}");
|
|
126
|
+
});
|
|
127
|
+
it("should handle variables with special regex characters", () => {
|
|
128
|
+
builder.setVariable("VAR.NAME", "value1").setVariable("VAR$NAME", "value2").add("section1", "{VAR.NAME} and {VAR$NAME}");
|
|
129
|
+
expect(builder.build()).toBe("value1 and value2");
|
|
130
|
+
});
|
|
131
|
+
it("should get variable value", () => {
|
|
132
|
+
builder.setVariable("API_KEY", "wat_12345");
|
|
133
|
+
expect(builder.getVariable("API_KEY")).toBe("wat_12345");
|
|
134
|
+
});
|
|
135
|
+
it("should return undefined for non-existent variable", () => {
|
|
136
|
+
expect(builder.getVariable("NON_EXISTENT")).toBeUndefined();
|
|
137
|
+
});
|
|
138
|
+
it("should override variable when set multiple times", () => {
|
|
139
|
+
builder.setVariable("API_KEY", "old_value").setVariable("API_KEY", "new_value").add("section1", "{API_KEY}");
|
|
140
|
+
expect(builder.build()).toBe("new_value");
|
|
141
|
+
});
|
|
142
|
+
it("should handle multiple occurrences of same variable", () => {
|
|
143
|
+
builder.setVariable("NAME", "John").add("section1", "Hello {NAME}, welcome {NAME}!");
|
|
144
|
+
expect(builder.build()).toBe("Hello John, welcome John!");
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe("build", () => {
|
|
148
|
+
it("should use default newline separator", () => {
|
|
149
|
+
builder.add("section1", "First").add("section2", "Second");
|
|
150
|
+
expect(builder.build()).toBe("First\nSecond");
|
|
151
|
+
});
|
|
152
|
+
it("should use custom separator", () => {
|
|
153
|
+
builder.add("section1", "First").add("section2", "Second");
|
|
154
|
+
expect(builder.build("\n\n")).toBe("First\n\nSecond");
|
|
155
|
+
});
|
|
156
|
+
it("should return empty string for empty builder", () => {
|
|
157
|
+
expect(builder.build()).toBe("");
|
|
158
|
+
});
|
|
159
|
+
it("should handle single section", () => {
|
|
160
|
+
builder.add("section1", "Only section");
|
|
161
|
+
expect(builder.build()).toBe("Only section");
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
describe("method chaining", () => {
|
|
165
|
+
it("should support fluent interface", () => {
|
|
166
|
+
const result = builder.setVariable("NAME", "Test").add("section1", "Hello {NAME}").add("section2", "Second").remove("section2").add("section3", "Third").replace("section3", "Replaced").build();
|
|
167
|
+
expect(result).toBe("Hello Test\nReplaced");
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
describe("complex scenarios", () => {
|
|
171
|
+
it("should handle Next.js config example", () => {
|
|
172
|
+
const result = builder.setVariables({
|
|
173
|
+
API_KEY: "wat_12345678",
|
|
174
|
+
API_HOST: "https://example.cloudfront.net",
|
|
175
|
+
TENANT: "root"
|
|
176
|
+
}).add("description", "This is a configuration for **Webiny Next.js starter kit**:").add("env-vars", "```bash\nNEXT_PUBLIC_WEBSITE_BUILDER_API_KEY={API_KEY}\nNEXT_PUBLIC_WEBSITE_BUILDER_API_HOST={API_HOST}\nNEXT_PUBLIC_WEBSITE_BUILDER_API_TENANT={TENANT}\n```").build();
|
|
177
|
+
expect(result).toContain("wat_12345678");
|
|
178
|
+
expect(result).toContain("https://example.cloudfront.net");
|
|
179
|
+
expect(result).toContain("root");
|
|
180
|
+
expect(result).toContain("Webiny Next.js starter kit");
|
|
181
|
+
});
|
|
182
|
+
it("should support plugin decoration pattern", () => {
|
|
183
|
+
// Initial builder
|
|
184
|
+
builder.setVariable("API_KEY", "original_key").add("section1", "Key: {API_KEY}");
|
|
185
|
+
|
|
186
|
+
// Plugin modifies
|
|
187
|
+
builder.setVariable("API_KEY", "plugin_key").add("plugin-section", "Added by plugin: {API_KEY}", {
|
|
188
|
+
after: "section1"
|
|
189
|
+
});
|
|
190
|
+
const result = builder.build();
|
|
191
|
+
expect(result).toBe("Key: plugin_key\nAdded by plugin: plugin_key");
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
describe("deep variable interpolation", () => {
|
|
195
|
+
it("should handle single level nested variables", () => {
|
|
196
|
+
builder.setVariables({
|
|
197
|
+
LINK: "https://example.com",
|
|
198
|
+
DESCRIPTION: "Visit {LINK} for more info"
|
|
199
|
+
}).add("section1", "{DESCRIPTION}");
|
|
200
|
+
expect(builder.build()).toBe("Visit https://example.com for more info");
|
|
201
|
+
});
|
|
202
|
+
it("should handle multiple levels of nested variables", () => {
|
|
203
|
+
builder.setVariables({
|
|
204
|
+
BASE_URL: "https://example.com",
|
|
205
|
+
API_PATH: "{BASE_URL}/api",
|
|
206
|
+
FULL_ENDPOINT: "{API_PATH}/v1/users"
|
|
207
|
+
}).add("section1", "Endpoint: {FULL_ENDPOINT}");
|
|
208
|
+
expect(builder.build()).toBe("Endpoint: https://example.com/api/v1/users");
|
|
209
|
+
});
|
|
210
|
+
it("should handle variables in HTML links", () => {
|
|
211
|
+
builder.setVariables({
|
|
212
|
+
STARTER_KIT_LINK: "https://github.com/webiny/website-builder-nextjs",
|
|
213
|
+
DESCRIPTION: '<a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit</a>'
|
|
214
|
+
}).add("section1", "{DESCRIPTION}");
|
|
215
|
+
expect(builder.build()).toBe('<a href="https://github.com/webiny/website-builder-nextjs" target="_blank">Webiny Next.js starter kit</a>');
|
|
216
|
+
});
|
|
217
|
+
it("should handle complex nested scenario from example", () => {
|
|
218
|
+
builder.setVariables({
|
|
219
|
+
DESCRIPTION: 'This is a configuration for <a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit:</a>',
|
|
220
|
+
STARTER_KIT_LINK: "https://github.com/webiny/website-builder-nextjs",
|
|
221
|
+
API_TOKEN: "wat_12345",
|
|
222
|
+
API_HOST: "https://api.example.com",
|
|
223
|
+
ADMIN_HOST: "https://admin.example.com",
|
|
224
|
+
TENANT_ID: "root"
|
|
225
|
+
}).add("description", "{DESCRIPTION}");
|
|
226
|
+
const result = builder.build();
|
|
227
|
+
expect(result).toContain("https://github.com/webiny/website-builder-nextjs");
|
|
228
|
+
expect(result).toContain("Webiny Next.js starter kit");
|
|
229
|
+
expect(result).not.toContain("{STARTER_KIT_LINK}");
|
|
230
|
+
});
|
|
231
|
+
it("should handle variable that references another variable multiple times", () => {
|
|
232
|
+
builder.setVariables({
|
|
233
|
+
NAME: "John",
|
|
234
|
+
GREETING: "Hello {NAME}, welcome {NAME}!"
|
|
235
|
+
}).add("section1", "{GREETING}");
|
|
236
|
+
expect(builder.build()).toBe("Hello John, welcome John!");
|
|
237
|
+
});
|
|
238
|
+
it("should handle deep nesting (3+ levels)", () => {
|
|
239
|
+
builder.setVariables({
|
|
240
|
+
LEVEL_1: "base",
|
|
241
|
+
LEVEL_2: "{LEVEL_1}/path",
|
|
242
|
+
LEVEL_3: "{LEVEL_2}/more",
|
|
243
|
+
LEVEL_4: "{LEVEL_3}/final"
|
|
244
|
+
}).add("section1", "{LEVEL_4}");
|
|
245
|
+
expect(builder.build()).toBe("base/path/more/final");
|
|
246
|
+
});
|
|
247
|
+
it("should handle circular references gracefully", () => {
|
|
248
|
+
const consoleSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
249
|
+
builder.setVariables({
|
|
250
|
+
VAR_A: "Start {VAR_B}",
|
|
251
|
+
VAR_B: "{VAR_A} End"
|
|
252
|
+
}).add("section1", "{VAR_A}");
|
|
253
|
+
builder.build();
|
|
254
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining("Maximum interpolation depth reached"));
|
|
255
|
+
consoleSpy.mockRestore();
|
|
256
|
+
});
|
|
257
|
+
it("should stop at undefined variables and leave them as-is", () => {
|
|
258
|
+
builder.setVariables({
|
|
259
|
+
DEFINED: "value",
|
|
260
|
+
HAS_UNDEFINED: "{DEFINED} and {UNDEFINED}"
|
|
261
|
+
}).add("section1", "{HAS_UNDEFINED}");
|
|
262
|
+
expect(builder.build()).toBe("value and {UNDEFINED}");
|
|
263
|
+
});
|
|
264
|
+
it("should handle mixed defined and nested variables", () => {
|
|
265
|
+
builder.setVariables({
|
|
266
|
+
API_KEY: "key123",
|
|
267
|
+
HOST: "example.com",
|
|
268
|
+
CONFIG: "API_KEY={API_KEY}\nHOST={HOST}\nUNDEFINED={UNKNOWN}"
|
|
269
|
+
}).add("section1", "{CONFIG}");
|
|
270
|
+
const result = builder.build();
|
|
271
|
+
expect(result).toContain("API_KEY=key123");
|
|
272
|
+
expect(result).toContain("HOST=example.com");
|
|
273
|
+
expect(result).toContain("UNDEFINED={UNKNOWN}");
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
//# sourceMappingURL=MarkdownContentBuilder.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","it","expect","beforeEach","vi","MarkdownContentBuilder","builder","add","build","toBe","before","after","remove","replace","current","toUpperCase","setVariable","result","toContain","s","setVariables","API_KEY","HOST","TENANT","getVariable","toBeUndefined","API_HOST","LINK","DESCRIPTION","BASE_URL","API_PATH","FULL_ENDPOINT","STARTER_KIT_LINK","API_TOKEN","ADMIN_HOST","TENANT_ID","not","NAME","GREETING","LEVEL_1","LEVEL_2","LEVEL_3","LEVEL_4","consoleSpy","spyOn","console","mockImplementation","VAR_A","VAR_B","toHaveBeenCalledWith","stringContaining","mockRestore","DEFINED","HAS_UNDEFINED","CONFIG"],"sources":["MarkdownContentBuilder.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { MarkdownContentBuilder } from \"./MarkdownContentBuilder.js\";\n\ndescribe(\"MarkdownContentBuilder\", () => {\n let builder: MarkdownContentBuilder;\n\n beforeEach(() => {\n builder = new MarkdownContentBuilder();\n });\n\n describe(\"add\", () => {\n it(\"should add sections to the end by default\", () => {\n builder.add(\"section1\", \"First section\").add(\"section2\", \"Second section\");\n\n expect(builder.build()).toBe(\"First section\\nSecond section\");\n });\n\n it(\"should add section before specified id\", () => {\n builder\n .add(\"section1\", \"First\")\n .add(\"section2\", \"Second\")\n .add(\"section-middle\", \"Middle\", { before: \"section2\" });\n\n expect(builder.build()).toBe(\"First\\nMiddle\\nSecond\");\n });\n\n it(\"should add section after specified id\", () => {\n builder\n .add(\"section1\", \"First\")\n .add(\"section2\", \"Second\")\n .add(\"section-middle\", \"Middle\", { after: \"section1\" });\n\n expect(builder.build()).toBe(\"First\\nMiddle\\nSecond\");\n });\n\n it(\"should append to end if before id not found\", () => {\n builder.add(\"section1\", \"First\").add(\"section2\", \"Second\", { before: \"non-existent\" });\n\n expect(builder.build()).toBe(\"First\\nSecond\");\n });\n\n it(\"should append to end if after id not found\", () => {\n builder.add(\"section1\", \"First\").add(\"section2\", \"Second\", { after: \"non-existent\" });\n\n expect(builder.build()).toBe(\"First\\nSecond\");\n });\n });\n\n describe(\"remove\", () => {\n it(\"should remove section by id\", () => {\n builder\n .add(\"section1\", \"First\")\n .add(\"section2\", \"Second\")\n .add(\"section3\", \"Third\")\n .remove(\"section2\");\n\n expect(builder.build()).toBe(\"First\\nThird\");\n });\n\n it(\"should handle removing non-existent id gracefully\", () => {\n builder.add(\"section1\", \"First\").remove(\"non-existent\");\n\n expect(builder.build()).toBe(\"First\");\n });\n\n it(\"should handle removing from empty builder\", () => {\n builder.remove(\"section1\");\n expect(builder.build()).toBe(\"\");\n });\n });\n\n describe(\"replace\", () => {\n it(\"should replace section content with string\", () => {\n builder.add(\"section1\", \"Original content\").replace(\"section1\", \"Replaced content\");\n\n expect(builder.build()).toBe(\"Replaced content\");\n });\n\n it(\"should replace section content with callback\", () => {\n builder\n .add(\"section1\", \"Original content\")\n .replace(\"section1\", current => current.toUpperCase());\n\n expect(builder.build()).toBe(\"ORIGINAL CONTENT\");\n });\n\n it(\"should pass current content to callback\", () => {\n builder.add(\"section1\", \"Hello\").replace(\"section1\", current => `${current} World`);\n\n expect(builder.build()).toBe(\"Hello World\");\n });\n\n it(\"should handle callback that transforms content\", () => {\n builder\n .add(\"code\", '```bash\\necho \"test\"\\n```')\n .replace(\"code\", current => current.replace(\"bash\", \"javascript\"));\n\n expect(builder.build()).toBe('```javascript\\necho \"test\"\\n```');\n });\n\n it(\"should handle callback returning empty string\", () => {\n builder.add(\"section1\", \"Original\").replace(\"section1\", () => \"\");\n\n expect(builder.build()).toBe(\"\");\n });\n\n it(\"should handle replacing non-existent id with callback gracefully\", () => {\n builder\n .add(\"section1\", \"First\")\n .replace(\"non-existent\", current => current + \" modified\");\n\n expect(builder.build()).toBe(\"First\");\n });\n\n it(\"should maintain section position when replacing with callback\", () => {\n builder\n .add(\"section1\", \"First\")\n .add(\"section2\", \"Second\")\n .add(\"section3\", \"Third\")\n .replace(\"section2\", current => current.toUpperCase());\n\n expect(builder.build()).toBe(\"First\\nSECOND\\nThird\");\n });\n });\n\n describe(\"complex scenarios with callbacks\", () => {\n it(\"should support plugin decoration with transformations\", () => {\n builder\n .setVariable(\"API_KEY\", \"wat_12345\")\n .add(\"section1\", \"Key: {API_KEY}\")\n .add(\"code\", \"```bash\\nAPI_KEY={API_KEY}\\n```\");\n\n // Plugin adds warning to code section\n builder.replace(\"code\", current => {\n return `⚠️ **Security Warning**: Keep this private!\\n\\n${current}`;\n });\n\n const result = builder.build();\n expect(result).toContain(\"Security Warning\");\n expect(result).toContain(\"```bash\");\n });\n\n it(\"should chain multiple replace operations\", () => {\n builder\n .add(\"text\", \"hello world\")\n .replace(\"text\", s => s.toUpperCase())\n .replace(\"text\", s => `**${s}**`)\n .replace(\"text\", s => `${s}!!!`);\n\n expect(builder.build()).toBe(\"**HELLO WORLD**!!!\");\n });\n });\n\n describe(\"variables\", () => {\n it(\"should set and substitute single variable\", () => {\n builder\n .setVariable(\"API_KEY\", \"wat_12345\")\n .add(\"section1\", \"Your API key is {API_KEY}\");\n\n expect(builder.build()).toBe(\"Your API key is wat_12345\");\n });\n\n it(\"should set and substitute multiple variables\", () => {\n builder\n .setVariables({\n API_KEY: \"wat_12345\",\n HOST: \"https://api.example.com\",\n TENANT: \"root\"\n })\n .add(\"section1\", \"Key: {API_KEY}, Host: {HOST}, Tenant: {TENANT}\");\n\n expect(builder.build()).toBe(\n \"Key: wat_12345, Host: https://api.example.com, Tenant: root\"\n );\n });\n\n it(\"should substitute variables in multiple sections\", () => {\n builder\n .setVariable(\"API_KEY\", \"wat_12345\")\n .add(\"section1\", \"Section 1: {API_KEY}\")\n .add(\"section2\", \"Section 2: {API_KEY}\");\n\n expect(builder.build()).toBe(\"Section 1: wat_12345\\nSection 2: wat_12345\");\n });\n\n it(\"should handle variable replacement in code blocks\", () => {\n builder\n .setVariables({\n API_KEY: \"wat_12345\",\n HOST: \"https://api.example.com\"\n })\n .add(\"code\", \"```bash\\nAPI_KEY={API_KEY}\\nHOST={HOST}\\n```\");\n\n expect(builder.build()).toBe(\n \"```bash\\nAPI_KEY=wat_12345\\nHOST=https://api.example.com\\n```\"\n );\n });\n\n it(\"should leave unmatched variables unchanged\", () => {\n builder\n .setVariable(\"API_KEY\", \"wat_12345\")\n .add(\"section1\", \"Key: {API_KEY}, Unknown: {UNKNOWN}\");\n\n expect(builder.build()).toBe(\"Key: wat_12345, Unknown: {UNKNOWN}\");\n });\n\n it(\"should handle variables with special regex characters\", () => {\n builder\n .setVariable(\"VAR.NAME\", \"value1\")\n .setVariable(\"VAR$NAME\", \"value2\")\n .add(\"section1\", \"{VAR.NAME} and {VAR$NAME}\");\n\n expect(builder.build()).toBe(\"value1 and value2\");\n });\n\n it(\"should get variable value\", () => {\n builder.setVariable(\"API_KEY\", \"wat_12345\");\n expect(builder.getVariable(\"API_KEY\")).toBe(\"wat_12345\");\n });\n\n it(\"should return undefined for non-existent variable\", () => {\n expect(builder.getVariable(\"NON_EXISTENT\")).toBeUndefined();\n });\n\n it(\"should override variable when set multiple times\", () => {\n builder\n .setVariable(\"API_KEY\", \"old_value\")\n .setVariable(\"API_KEY\", \"new_value\")\n .add(\"section1\", \"{API_KEY}\");\n\n expect(builder.build()).toBe(\"new_value\");\n });\n\n it(\"should handle multiple occurrences of same variable\", () => {\n builder.setVariable(\"NAME\", \"John\").add(\"section1\", \"Hello {NAME}, welcome {NAME}!\");\n\n expect(builder.build()).toBe(\"Hello John, welcome John!\");\n });\n });\n\n describe(\"build\", () => {\n it(\"should use default newline separator\", () => {\n builder.add(\"section1\", \"First\").add(\"section2\", \"Second\");\n\n expect(builder.build()).toBe(\"First\\nSecond\");\n });\n\n it(\"should use custom separator\", () => {\n builder.add(\"section1\", \"First\").add(\"section2\", \"Second\");\n\n expect(builder.build(\"\\n\\n\")).toBe(\"First\\n\\nSecond\");\n });\n\n it(\"should return empty string for empty builder\", () => {\n expect(builder.build()).toBe(\"\");\n });\n\n it(\"should handle single section\", () => {\n builder.add(\"section1\", \"Only section\");\n expect(builder.build()).toBe(\"Only section\");\n });\n });\n\n describe(\"method chaining\", () => {\n it(\"should support fluent interface\", () => {\n const result = builder\n .setVariable(\"NAME\", \"Test\")\n .add(\"section1\", \"Hello {NAME}\")\n .add(\"section2\", \"Second\")\n .remove(\"section2\")\n .add(\"section3\", \"Third\")\n .replace(\"section3\", \"Replaced\")\n .build();\n\n expect(result).toBe(\"Hello Test\\nReplaced\");\n });\n });\n\n describe(\"complex scenarios\", () => {\n it(\"should handle Next.js config example\", () => {\n const result = builder\n .setVariables({\n API_KEY: \"wat_12345678\",\n API_HOST: \"https://example.cloudfront.net\",\n TENANT: \"root\"\n })\n .add(\"description\", \"This is a configuration for **Webiny Next.js starter kit**:\")\n .add(\n \"env-vars\",\n \"```bash\\nNEXT_PUBLIC_WEBSITE_BUILDER_API_KEY={API_KEY}\\nNEXT_PUBLIC_WEBSITE_BUILDER_API_HOST={API_HOST}\\nNEXT_PUBLIC_WEBSITE_BUILDER_API_TENANT={TENANT}\\n```\"\n )\n .build();\n\n expect(result).toContain(\"wat_12345678\");\n expect(result).toContain(\"https://example.cloudfront.net\");\n expect(result).toContain(\"root\");\n expect(result).toContain(\"Webiny Next.js starter kit\");\n });\n\n it(\"should support plugin decoration pattern\", () => {\n // Initial builder\n builder.setVariable(\"API_KEY\", \"original_key\").add(\"section1\", \"Key: {API_KEY}\");\n\n // Plugin modifies\n builder\n .setVariable(\"API_KEY\", \"plugin_key\")\n .add(\"plugin-section\", \"Added by plugin: {API_KEY}\", { after: \"section1\" });\n\n const result = builder.build();\n expect(result).toBe(\"Key: plugin_key\\nAdded by plugin: plugin_key\");\n });\n });\n\n describe(\"deep variable interpolation\", () => {\n it(\"should handle single level nested variables\", () => {\n builder\n .setVariables({\n LINK: \"https://example.com\",\n DESCRIPTION: \"Visit {LINK} for more info\"\n })\n .add(\"section1\", \"{DESCRIPTION}\");\n\n expect(builder.build()).toBe(\"Visit https://example.com for more info\");\n });\n\n it(\"should handle multiple levels of nested variables\", () => {\n builder\n .setVariables({\n BASE_URL: \"https://example.com\",\n API_PATH: \"{BASE_URL}/api\",\n FULL_ENDPOINT: \"{API_PATH}/v1/users\"\n })\n .add(\"section1\", \"Endpoint: {FULL_ENDPOINT}\");\n\n expect(builder.build()).toBe(\"Endpoint: https://example.com/api/v1/users\");\n });\n\n it(\"should handle variables in HTML links\", () => {\n builder\n .setVariables({\n STARTER_KIT_LINK: \"https://github.com/webiny/website-builder-nextjs\",\n DESCRIPTION:\n '<a href=\"{STARTER_KIT_LINK}\" target=\"_blank\">Webiny Next.js starter kit</a>'\n })\n .add(\"section1\", \"{DESCRIPTION}\");\n\n expect(builder.build()).toBe(\n '<a href=\"https://github.com/webiny/website-builder-nextjs\" target=\"_blank\">Webiny Next.js starter kit</a>'\n );\n });\n\n it(\"should handle complex nested scenario from example\", () => {\n builder\n .setVariables({\n DESCRIPTION:\n 'This is a configuration for <a href=\"{STARTER_KIT_LINK}\" target=\"_blank\">Webiny Next.js starter kit:</a>',\n STARTER_KIT_LINK: \"https://github.com/webiny/website-builder-nextjs\",\n API_TOKEN: \"wat_12345\",\n API_HOST: \"https://api.example.com\",\n ADMIN_HOST: \"https://admin.example.com\",\n TENANT_ID: \"root\"\n })\n .add(\"description\", \"{DESCRIPTION}\");\n\n const result = builder.build();\n expect(result).toContain(\"https://github.com/webiny/website-builder-nextjs\");\n expect(result).toContain(\"Webiny Next.js starter kit\");\n expect(result).not.toContain(\"{STARTER_KIT_LINK}\");\n });\n\n it(\"should handle variable that references another variable multiple times\", () => {\n builder\n .setVariables({\n NAME: \"John\",\n GREETING: \"Hello {NAME}, welcome {NAME}!\"\n })\n .add(\"section1\", \"{GREETING}\");\n\n expect(builder.build()).toBe(\"Hello John, welcome John!\");\n });\n\n it(\"should handle deep nesting (3+ levels)\", () => {\n builder\n .setVariables({\n LEVEL_1: \"base\",\n LEVEL_2: \"{LEVEL_1}/path\",\n LEVEL_3: \"{LEVEL_2}/more\",\n LEVEL_4: \"{LEVEL_3}/final\"\n })\n .add(\"section1\", \"{LEVEL_4}\");\n\n expect(builder.build()).toBe(\"base/path/more/final\");\n });\n\n it(\"should handle circular references gracefully\", () => {\n const consoleSpy = vi.spyOn(console, \"warn\").mockImplementation(() => {});\n\n builder\n .setVariables({\n VAR_A: \"Start {VAR_B}\",\n VAR_B: \"{VAR_A} End\"\n })\n .add(\"section1\", \"{VAR_A}\");\n\n builder.build();\n\n expect(consoleSpy).toHaveBeenCalledWith(\n expect.stringContaining(\"Maximum interpolation depth reached\")\n );\n\n consoleSpy.mockRestore();\n });\n\n it(\"should stop at undefined variables and leave them as-is\", () => {\n builder\n .setVariables({\n DEFINED: \"value\",\n HAS_UNDEFINED: \"{DEFINED} and {UNDEFINED}\"\n })\n .add(\"section1\", \"{HAS_UNDEFINED}\");\n\n expect(builder.build()).toBe(\"value and {UNDEFINED}\");\n });\n\n it(\"should handle mixed defined and nested variables\", () => {\n builder\n .setVariables({\n API_KEY: \"key123\",\n HOST: \"example.com\",\n CONFIG: \"API_KEY={API_KEY}\\nHOST={HOST}\\nUNDEFINED={UNKNOWN}\"\n })\n .add(\"section1\", \"{CONFIG}\");\n\n const result = builder.build();\n expect(result).toContain(\"API_KEY=key123\");\n expect(result).toContain(\"HOST=example.com\");\n expect(result).toContain(\"UNDEFINED={UNKNOWN}\");\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NextjsConfig as Abstraction } from "../../features/nextjs/abstractions.js";
|
|
2
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
3
|
+
import { ApiKeysRepository } from "@webiny/api-core/features/security/apiKeys/shared/abstractions.js";
|
|
4
|
+
declare class NextjsConfigImpl implements Abstraction.Interface {
|
|
5
|
+
private tenantContext;
|
|
6
|
+
private apiKeyRepo;
|
|
7
|
+
constructor(tenantContext: TenantContext.Interface, apiKeyRepo: ApiKeysRepository.Interface);
|
|
8
|
+
execute(): Abstraction.Return;
|
|
9
|
+
private getDomains;
|
|
10
|
+
}
|
|
11
|
+
export declare const NextjsConfig: typeof NextjsConfigImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/features/nextjs/abstractions.js").INextjsConfig>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { NextjsConfig as Abstraction } from "./abstractions.js";
|
|
2
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
3
|
+
import { MarkdownContentBuilder } from "./MarkdownContentBuilder.js";
|
|
4
|
+
import { ServiceDiscovery } from "@webiny/api";
|
|
5
|
+
import { ApiKeysRepository } from "@webiny/api-core/features/security/apiKeys/shared/abstractions.js";
|
|
6
|
+
class NextjsConfigImpl {
|
|
7
|
+
constructor(tenantContext, apiKeyRepo) {
|
|
8
|
+
this.tenantContext = tenantContext;
|
|
9
|
+
this.apiKeyRepo = apiKeyRepo;
|
|
10
|
+
}
|
|
11
|
+
async execute() {
|
|
12
|
+
const tenant = this.tenantContext.getTenant();
|
|
13
|
+
const apiKeyResult = await this.apiKeyRepo.getBySlug("website-builder");
|
|
14
|
+
const apiKey = apiKeyResult.isOk() ? apiKeyResult.value : null;
|
|
15
|
+
const domains = await this.getDomains();
|
|
16
|
+
const envVars = [`NEXT_PUBLIC_WEBSITE_BUILDER_API_KEY={API_TOKEN}`, `NEXT_PUBLIC_WEBSITE_BUILDER_API_HOST={API_HOST}`, `NEXT_PUBLIC_WEBSITE_BUILDER_API_TENANT={TENANT_ID}`];
|
|
17
|
+
if (domains.adminHost) {
|
|
18
|
+
envVars.push(`NEXT_PUBLIC_WEBSITE_BUILDER_ADMIN_HOST={ADMIN_HOST}`);
|
|
19
|
+
}
|
|
20
|
+
const builder = new MarkdownContentBuilder();
|
|
21
|
+
builder.setVariables({
|
|
22
|
+
DESCRIPTION: `This is a configuration for <a href="{STARTER_KIT_LINK}" target="_blank">Webiny Next.js starter kit:</a>`,
|
|
23
|
+
STARTER_KIT_LINK: `https://github.com/webiny/website-builder-nextjs`,
|
|
24
|
+
API_TOKEN: apiKey ? apiKey.token : "{API_KEY_TOKEN}",
|
|
25
|
+
API_HOST: domains.apiHost ?? "",
|
|
26
|
+
ADMIN_HOST: domains.adminHost ?? "",
|
|
27
|
+
TENANT_ID: tenant.id
|
|
28
|
+
}).add("description", "{DESCRIPTION}").add("dotEnvStart", "```dotenv").add("dotEnvBody", envVars.join("\n")).add("dotEnvEnd", "```");
|
|
29
|
+
return builder;
|
|
30
|
+
}
|
|
31
|
+
async getDomains() {
|
|
32
|
+
const manifest = await ServiceDiscovery.load();
|
|
33
|
+
const domains = {
|
|
34
|
+
apiHost: null,
|
|
35
|
+
adminHost: null
|
|
36
|
+
};
|
|
37
|
+
if (!manifest) {
|
|
38
|
+
return domains;
|
|
39
|
+
}
|
|
40
|
+
const {
|
|
41
|
+
api,
|
|
42
|
+
admin
|
|
43
|
+
} = manifest;
|
|
44
|
+
if (api?.cloudfront) {
|
|
45
|
+
domains.apiHost = api.cloudfront.domain;
|
|
46
|
+
}
|
|
47
|
+
if (admin?.cloudfront) {
|
|
48
|
+
domains.adminHost = admin.cloudfront.domain;
|
|
49
|
+
}
|
|
50
|
+
return domains;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export const NextjsConfig = Abstraction.createImplementation({
|
|
54
|
+
implementation: NextjsConfigImpl,
|
|
55
|
+
dependencies: [TenantContext, ApiKeysRepository]
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=NextjsConfig.js.map
|