@websolutespa/payload-plugin-bowl 2.0.1 → 3.0.1
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/CHANGELOG.md +23 -4
- package/README.md +1 -1
- package/dist/blocks/MenuItem.js +219 -0
- package/dist/blocks/MenuItem.js.map +1 -0
- package/dist/blocks/index.js +4 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/withComponentBlock.js +31 -0
- package/dist/blocks/withComponentBlock.js.map +1 -0
- package/dist/bowl.js +331 -0
- package/dist/bowl.js.map +1 -0
- package/dist/collections/Address.js +7 -0
- package/dist/collections/Address.js.map +1 -0
- package/dist/collections/Category.js +94 -0
- package/dist/collections/Category.js.map +1 -0
- package/dist/collections/ConsentPreference.js +34 -0
- package/dist/collections/ConsentPreference.js.map +1 -0
- package/dist/collections/Continent.js +24 -0
- package/dist/collections/Continent.js.map +1 -0
- package/dist/collections/Country.js +66 -0
- package/dist/collections/Country.js.map +1 -0
- package/dist/collections/CountryZone.js +24 -0
- package/dist/collections/CountryZone.js.map +1 -0
- package/dist/collections/EmailConfig.js +84 -0
- package/dist/collections/EmailConfig.js.map +1 -0
- package/dist/collections/EndUsers.js +24 -0
- package/dist/collections/EndUsers.js.map +1 -0
- package/dist/collections/Label.js +26 -0
- package/dist/collections/Label.js.map +1 -0
- package/dist/collections/Language.js +35 -0
- package/dist/collections/Language.js.map +1 -0
- package/dist/collections/LegalNotice.js +29 -0
- package/dist/collections/LegalNotice.js.map +1 -0
- package/dist/collections/Market.js +106 -0
- package/dist/collections/Market.js.map +1 -0
- package/dist/collections/Media.js +40 -0
- package/dist/collections/Media.js.map +1 -0
- package/dist/collections/Menu.js +49 -0
- package/dist/collections/Menu.js.map +1 -0
- package/dist/collections/Municipality.js +68 -0
- package/dist/collections/Municipality.js.map +1 -0
- package/dist/collections/Province.js +59 -0
- package/dist/collections/Province.js.map +1 -0
- package/dist/collections/Redirect.js +90 -0
- package/dist/collections/Redirect.js.map +1 -0
- package/dist/collections/Region.js +45 -0
- package/dist/collections/Region.js.map +1 -0
- package/dist/collections/SubContinent.js +36 -0
- package/dist/collections/SubContinent.js.map +1 -0
- package/dist/collections/Template.js +79 -0
- package/dist/collections/Template.js.map +1 -0
- package/dist/collections/Users.js +11 -0
- package/dist/collections/Users.js.map +1 -0
- package/dist/components/Category/CategoryMenu.js +47 -0
- package/dist/components/Category/CategoryMenu.js.map +1 -0
- package/dist/components/Category/CategoryTree.js +430 -0
- package/dist/components/Category/CategoryTree.js.map +1 -0
- package/dist/components/Category/CategoryTree.scss +330 -0
- package/dist/components/Category/CategoryTreeRoute.js +51 -0
- package/dist/components/Category/CategoryTreeRoute.js.map +1 -0
- package/dist/components/Category/category.service.js +32 -0
- package/dist/components/Category/category.service.js.map +1 -0
- package/dist/components/DataTree/DataTree.js +281 -0
- package/dist/components/DataTree/DataTree.js.map +1 -0
- package/dist/components/DataTree/DataTree.scss +363 -0
- package/dist/components/DataTree/DataTreeProvider.js +67 -0
- package/dist/components/DataTree/DataTreeProvider.js.map +1 -0
- package/dist/components/DataTree/EventEmitter.js +38 -0
- package/dist/components/DataTree/EventEmitter.js.map +1 -0
- package/dist/components/DataTree/useDataTree.js +52 -0
- package/dist/components/DataTree/useDataTree.js.map +1 -0
- package/dist/components/DecoratedList/DecoratedList.js +17 -0
- package/dist/components/DecoratedList/DecoratedList.js.map +1 -0
- package/dist/components/IconServer/IconServer.js +15 -0
- package/dist/components/IconServer/IconServer.js.map +1 -0
- package/dist/components/IconServer/IconServer.scss +14 -0
- package/dist/components/ImportExport/ImportExportList.js +91 -0
- package/dist/components/ImportExport/ImportExportList.js.map +1 -0
- package/dist/components/ImportExport/ImportExportList.scss +70 -0
- package/dist/components/ImportExport/ImportExportRedirect.js +142 -0
- package/dist/components/ImportExport/ImportExportRedirect.js.map +1 -0
- package/dist/components/ImportExport/ImportModal.js +458 -0
- package/dist/components/ImportExport/ImportModal.js.map +1 -0
- package/dist/components/ImportExport/ImportModal.scss +99 -0
- package/dist/components/ImportExport/types.js +3 -0
- package/dist/components/ImportExport/types.js.map +1 -0
- package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js +83 -0
- package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js.map +1 -0
- package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.scss +46 -0
- package/dist/components/LeaveWithoutSaving/usePreventLeave.js +119 -0
- package/dist/components/LeaveWithoutSaving/usePreventLeave.js.map +1 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js +15 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js.map +1 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js +13 -0
- package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js.map +1 -0
- package/dist/components/LogoServer/LogoServer.js +20 -0
- package/dist/components/LogoServer/LogoServer.js.map +1 -0
- package/dist/components/LogoServer/LogoServer.scss +21 -0
- package/dist/core/access/access.js +181 -0
- package/dist/core/access/access.js.map +1 -0
- package/dist/core/access/access.test.js +454 -0
- package/dist/core/access/access.test.js.map +1 -0
- package/dist/core/access/index.js +3 -0
- package/dist/core/access/index.js.map +1 -0
- package/dist/core/api/action.service.js +441 -0
- package/dist/core/api/action.service.js.map +1 -0
- package/dist/core/api/action.service.test.js +218 -0
- package/dist/core/api/action.service.test.js.map +1 -0
- package/dist/core/api/cache.service.js +33 -0
- package/dist/core/api/cache.service.js.map +1 -0
- package/dist/core/api/cache.service.test.js +33 -0
- package/dist/core/api/cache.service.test.js.map +1 -0
- package/dist/core/api/category.service.js +53 -0
- package/dist/core/api/category.service.js.map +1 -0
- package/dist/core/api/collection.service.js +457 -0
- package/dist/core/api/collection.service.js.map +1 -0
- package/dist/core/api/collection.service.test.js +318 -0
- package/dist/core/api/collection.service.test.js.map +1 -0
- package/dist/core/api/email.service.js +84 -0
- package/dist/core/api/email.service.js.map +1 -0
- package/dist/core/api/global.service.js +18 -0
- package/dist/core/api/global.service.js.map +1 -0
- package/dist/core/api/health.service.js +12 -0
- package/dist/core/api/health.service.js.map +1 -0
- package/dist/core/api/index.js +16 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/locale.service.js +58 -0
- package/dist/core/api/locale.service.js.map +1 -0
- package/dist/core/api/locale.service.test.js +46 -0
- package/dist/core/api/locale.service.test.js.map +1 -0
- package/dist/core/api/menu.service.js +81 -0
- package/dist/core/api/menu.service.js.map +1 -0
- package/dist/core/api/menu.service.test.js +300 -0
- package/dist/core/api/menu.service.test.js.map +1 -0
- package/dist/core/api/page.service.js +171 -0
- package/dist/core/api/page.service.js.map +1 -0
- package/dist/core/api/page.service.test.js +68 -0
- package/dist/core/api/page.service.test.js.map +1 -0
- package/dist/core/api/pagination.service.js +29 -0
- package/dist/core/api/pagination.service.js.map +1 -0
- package/dist/core/api/pagination.service.test.js +175 -0
- package/dist/core/api/pagination.service.test.js.map +1 -0
- package/dist/core/api/redirect.service.js +106 -0
- package/dist/core/api/redirect.service.js.map +1 -0
- package/dist/core/api/redirect.service.test.js +106 -0
- package/dist/core/api/redirect.service.test.js.map +1 -0
- package/dist/core/api/route.service.js +451 -0
- package/dist/core/api/route.service.js.map +1 -0
- package/dist/core/api/route.service.test.js +214 -0
- package/dist/core/api/route.service.test.js.map +1 -0
- package/dist/core/api/static.service.js +249 -0
- package/dist/core/api/static.service.js.map +1 -0
- package/dist/core/api/static.service.test.js +240 -0
- package/dist/core/api/static.service.test.js.map +1 -0
- package/dist/core/api/store.service.js +336 -0
- package/dist/core/api/store.service.js.map +1 -0
- package/dist/core/api/store.service.test.js +105 -0
- package/dist/core/api/store.service.test.js.map +1 -0
- package/dist/core/api/types.js +21 -0
- package/dist/core/api/types.js.map +1 -0
- package/dist/core/api/utils.js +83 -0
- package/dist/core/api/utils.js.map +1 -0
- package/dist/core/api/where.service.js +231 -0
- package/dist/core/api/where.service.js.map +1 -0
- package/dist/core/collections/index.js +12 -0
- package/dist/core/collections/index.js.map +1 -0
- package/dist/core/collections/withAction.js +91 -0
- package/dist/core/collections/withAction.js.map +1 -0
- package/dist/core/collections/withAction.test.js +68 -0
- package/dist/core/collections/withAction.test.js.map +1 -0
- package/dist/core/collections/withAddress.js +122 -0
- package/dist/core/collections/withAddress.js.map +1 -0
- package/dist/core/collections/withBlock.js +17 -0
- package/dist/core/collections/withBlock.js.map +1 -0
- package/dist/core/collections/withBlock.test.js +68 -0
- package/dist/core/collections/withBlock.test.js.map +1 -0
- package/dist/core/collections/withCollection.js +61 -0
- package/dist/core/collections/withCollection.js.map +1 -0
- package/dist/core/collections/withCollection.test.js +64 -0
- package/dist/core/collections/withCollection.test.js.map +1 -0
- package/dist/core/collections/withEndUser.js +301 -0
- package/dist/core/collections/withEndUser.js.map +1 -0
- package/dist/core/collections/withGlobal.js +27 -0
- package/dist/core/collections/withGlobal.js.map +1 -0
- package/dist/core/collections/withGlobal.test.js +57 -0
- package/dist/core/collections/withGlobal.test.js.map +1 -0
- package/dist/core/collections/withMenu.js +19 -0
- package/dist/core/collections/withMenu.js.map +1 -0
- package/dist/core/collections/withMenu.test.js +63 -0
- package/dist/core/collections/withMenu.test.js.map +1 -0
- package/dist/core/collections/withPage.js +126 -0
- package/dist/core/collections/withPage.js.map +1 -0
- package/dist/core/collections/withPage.test.js +103 -0
- package/dist/core/collections/withPage.test.js.map +1 -0
- package/dist/core/collections/withStaticCollection.js +60 -0
- package/dist/core/collections/withStaticCollection.js.map +1 -0
- package/dist/core/collections/withStaticCollection.test.js +84 -0
- package/dist/core/collections/withStaticCollection.test.js.map +1 -0
- package/dist/core/collections/withUser.js +56 -0
- package/dist/core/collections/withUser.js.map +1 -0
- package/dist/core/decorators/category.js +28 -0
- package/dist/core/decorators/category.js.map +1 -0
- package/dist/core/decorators/components.js +9 -0
- package/dist/core/decorators/components.js.map +1 -0
- package/dist/core/decorators/href.js +25 -0
- package/dist/core/decorators/href.js.map +1 -0
- package/dist/core/decorators/index.js +11 -0
- package/dist/core/decorators/index.js.map +1 -0
- package/dist/core/decorators/localize.js +27 -0
- package/dist/core/decorators/localize.js.map +1 -0
- package/dist/core/decorators/menu.js +246 -0
- package/dist/core/decorators/menu.js.map +1 -0
- package/dist/core/decorators/nav.js +42 -0
- package/dist/core/decorators/nav.js.map +1 -0
- package/dist/core/decorators/rich-text.js +39 -0
- package/dist/core/decorators/rich-text.js.map +1 -0
- package/dist/core/decorators/schema.js +16 -0
- package/dist/core/decorators/schema.js.map +1 -0
- package/dist/core/decorators/upload.js +44 -0
- package/dist/core/decorators/upload.js.map +1 -0
- package/dist/core/encryption/encryption.js +66 -0
- package/dist/core/encryption/encryption.js.map +1 -0
- package/dist/core/encryption/index.js +3 -0
- package/dist/core/encryption/index.js.map +1 -0
- package/dist/core/fields/index.js +28 -0
- package/dist/core/fields/index.js.map +1 -0
- package/dist/core/fields/withAbstract.js +15 -0
- package/dist/core/fields/withAbstract.js.map +1 -0
- package/dist/core/fields/withAbstract.test.js +72 -0
- package/dist/core/fields/withAbstract.test.js.map +1 -0
- package/dist/core/fields/withAnchor.js +56 -0
- package/dist/core/fields/withAnchor.js.map +1 -0
- package/dist/core/fields/withCategory.js +21 -0
- package/dist/core/fields/withCategory.js.map +1 -0
- package/dist/core/fields/withCategory.test.js +63 -0
- package/dist/core/fields/withCategory.test.js.map +1 -0
- package/dist/core/fields/withCheckbox.js +19 -0
- package/dist/core/fields/withCheckbox.js.map +1 -0
- package/dist/core/fields/withCheckbox.test.js +59 -0
- package/dist/core/fields/withCheckbox.test.js.map +1 -0
- package/dist/core/fields/withComponents.js +17 -0
- package/dist/core/fields/withComponents.js.map +1 -0
- package/dist/core/fields/withComponents.test.js +62 -0
- package/dist/core/fields/withComponents.test.js.map +1 -0
- package/dist/core/fields/withDate.js +18 -0
- package/dist/core/fields/withDate.js.map +1 -0
- package/dist/core/fields/withDate.test.js +56 -0
- package/dist/core/fields/withDate.test.js.map +1 -0
- package/dist/core/fields/withDescription.js +15 -0
- package/dist/core/fields/withDescription.js.map +1 -0
- package/dist/core/fields/withDescription.test.js +72 -0
- package/dist/core/fields/withDescription.test.js.map +1 -0
- package/dist/core/fields/withId.js +19 -0
- package/dist/core/fields/withId.js.map +1 -0
- package/dist/core/fields/withId.test.js +61 -0
- package/dist/core/fields/withId.test.js.map +1 -0
- package/dist/core/fields/withIsActive.js +15 -0
- package/dist/core/fields/withIsActive.js.map +1 -0
- package/dist/core/fields/withIsActive.test.js +59 -0
- package/dist/core/fields/withIsActive.test.js.map +1 -0
- package/dist/core/fields/withIsDefault.js +15 -0
- package/dist/core/fields/withIsDefault.js.map +1 -0
- package/dist/core/fields/withIsDefault.test.js +59 -0
- package/dist/core/fields/withIsDefault.test.js.map +1 -0
- package/dist/core/fields/withLink.js +116 -0
- package/dist/core/fields/withLink.js.map +1 -0
- package/dist/core/fields/withLink.test.js +144 -0
- package/dist/core/fields/withLink.test.js.map +1 -0
- package/dist/core/fields/withMarkets.js +21 -0
- package/dist/core/fields/withMarkets.js.map +1 -0
- package/dist/core/fields/withMarkets.test.js +65 -0
- package/dist/core/fields/withMarkets.test.js.map +1 -0
- package/dist/core/fields/withMedia.js +20 -0
- package/dist/core/fields/withMedia.js.map +1 -0
- package/dist/core/fields/withMedia.test.js +41 -0
- package/dist/core/fields/withMedia.test.js.map +1 -0
- package/dist/core/fields/withMedias.js +25 -0
- package/dist/core/fields/withMedias.js.map +1 -0
- package/dist/core/fields/withMedias.test.js +46 -0
- package/dist/core/fields/withMedias.test.js.map +1 -0
- package/dist/core/fields/withName.js +17 -0
- package/dist/core/fields/withName.js.map +1 -0
- package/dist/core/fields/withName.test.js +59 -0
- package/dist/core/fields/withName.test.js.map +1 -0
- package/dist/core/fields/withNav.js +28 -0
- package/dist/core/fields/withNav.js.map +1 -0
- package/dist/core/fields/withNavs.js +53 -0
- package/dist/core/fields/withNavs.js.map +1 -0
- package/dist/core/fields/withOrder.js +80 -0
- package/dist/core/fields/withOrder.js.map +1 -0
- package/dist/core/fields/withOrder.test.js +56 -0
- package/dist/core/fields/withOrder.test.js.map +1 -0
- package/dist/core/fields/withRelated.js +18 -0
- package/dist/core/fields/withRelated.js.map +1 -0
- package/dist/core/fields/withRelated.test.js +62 -0
- package/dist/core/fields/withRelated.test.js.map +1 -0
- package/dist/core/fields/withRichText.js +68 -0
- package/dist/core/fields/withRichText.js.map +1 -0
- package/dist/core/fields/withRichText.test.js +72 -0
- package/dist/core/fields/withRichText.test.js.map +1 -0
- package/dist/core/fields/withRoles.js +27 -0
- package/dist/core/fields/withRoles.js.map +1 -0
- package/dist/core/fields/withRoles.test.js +49 -0
- package/dist/core/fields/withRoles.test.js.map +1 -0
- package/dist/core/fields/withSelect.js +23 -0
- package/dist/core/fields/withSelect.js.map +1 -0
- package/dist/core/fields/withSelect.test.js +59 -0
- package/dist/core/fields/withSelect.test.js.map +1 -0
- package/dist/core/fields/withSeoWeight.js +19 -0
- package/dist/core/fields/withSeoWeight.js.map +1 -0
- package/dist/core/fields/withSlug.js +33 -0
- package/dist/core/fields/withSlug.js.map +1 -0
- package/dist/core/fields/withSlug.test.js +71 -0
- package/dist/core/fields/withSlug.test.js.map +1 -0
- package/dist/core/fields/withTemplate.js +49 -0
- package/dist/core/fields/withTemplate.js.map +1 -0
- package/dist/core/fields/withTemplate.test.js +93 -0
- package/dist/core/fields/withTemplate.test.js.map +1 -0
- package/dist/core/fields/withTenants.js +21 -0
- package/dist/core/fields/withTenants.js.map +1 -0
- package/dist/core/fields/withTenants.test.js +42 -0
- package/dist/core/fields/withTenants.test.js.map +1 -0
- package/dist/core/fields/withText.js +18 -0
- package/dist/core/fields/withText.js.map +1 -0
- package/dist/core/fields/withText.test.js +56 -0
- package/dist/core/fields/withText.test.js.map +1 -0
- package/dist/core/fields/withTitle.js +17 -0
- package/dist/core/fields/withTitle.js.map +1 -0
- package/dist/core/fields/withTitle.test.js +58 -0
- package/dist/core/fields/withTitle.test.js.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger/index.js +3 -0
- package/dist/core/logger/index.js.map +1 -0
- package/dist/core/logger/logger.js +9 -0
- package/dist/core/logger/logger.js.map +1 -0
- package/dist/core/translations/index.js +3 -0
- package/dist/core/translations/index.js.map +1 -0
- package/dist/core/translations/translations.js +137 -0
- package/dist/core/translations/translations.js.map +1 -0
- package/dist/core/translations/translations.test.js +72 -0
- package/dist/core/translations/translations.test.js.map +1 -0
- package/dist/core/utils/findByIDHandler.js +28 -0
- package/dist/core/utils/findByIDHandler.js.map +1 -0
- package/dist/core/utils/findHandler.js +31 -0
- package/dist/core/utils/findHandler.js.map +1 -0
- package/dist/core/utils/getPreviewURL.js +45 -0
- package/dist/core/utils/getPreviewURL.js.map +1 -0
- package/dist/core/utils/getRequestCollection.js +49 -0
- package/dist/core/utils/getRequestCollection.js.map +1 -0
- package/dist/core/utils/index.js +7 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/mergeCollections.js +18 -0
- package/dist/core/utils/mergeCollections.js.map +1 -0
- package/dist/core/utils/mergeFields.js +20 -0
- package/dist/core/utils/mergeFields.js.map +1 -0
- package/dist/core/utils/mergeGlobals.js +17 -0
- package/dist/core/utils/mergeGlobals.js.map +1 -0
- package/dist/core/utils/richText.js +29 -0
- package/dist/core/utils/richText.js.map +1 -0
- package/dist/core/utils/sortByGroup.js +36 -0
- package/dist/core/utils/sortByGroup.js.map +1 -0
- package/dist/debug.js +25 -0
- package/dist/debug.js.map +1 -0
- package/dist/declaration.d.js +3 -0
- package/dist/declaration.d.js.map +1 -0
- package/dist/exports/client.d.ts +36 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +8 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/rsc.d.ts +18 -0
- package/dist/exports/rsc.d.ts.map +1 -0
- package/dist/exports/rsc.js +5 -0
- package/dist/exports/rsc.js.map +1 -0
- package/dist/fields/color-picker/ColorCell.js +19 -0
- package/dist/fields/color-picker/ColorCell.js.map +1 -0
- package/dist/fields/color-picker/ColorField.js +131 -0
- package/dist/fields/color-picker/ColorField.js.map +1 -0
- package/dist/fields/color-picker/index.js +26 -0
- package/dist/fields/color-picker/index.js.map +1 -0
- package/dist/fields/color-picker/styles.scss +113 -0
- package/dist/fields/color-picker/utils.js +6 -0
- package/dist/fields/color-picker/utils.js.map +1 -0
- package/dist/fields/index.js +3 -0
- package/dist/fields/index.js.map +1 -0
- package/dist/globals/App.js +97 -0
- package/dist/globals/App.js.map +1 -0
- package/dist/globals/Locale.js +82 -0
- package/dist/globals/Locale.js.map +1 -0
- package/dist/globals/LocaleRowLabel.js +16 -0
- package/dist/globals/LocaleRowLabel.js.map +1 -0
- package/dist/index.d.ts +891 -844
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -9263
- package/dist/index.js.map +1 -0
- package/dist/mapper.js +199 -0
- package/dist/mapper.js.map +1 -0
- package/dist/options.js +76 -0
- package/dist/options.js.map +1 -0
- package/dist/test/blocks/blocks.js +13 -0
- package/dist/test/blocks/blocks.js.map +1 -0
- package/dist/test/collections/ActionCollection.js +12 -0
- package/dist/test/collections/ActionCollection.js.map +1 -0
- package/dist/test/collections/AdminCollection.js +18 -0
- package/dist/test/collections/AdminCollection.js.map +1 -0
- package/dist/test/collections/BlockCollection.js +16 -0
- package/dist/test/collections/BlockCollection.js.map +1 -0
- package/dist/test/collections/Collection.js +12 -0
- package/dist/test/collections/Collection.js.map +1 -0
- package/dist/test/collections/FieldCollection.js +84 -0
- package/dist/test/collections/FieldCollection.js.map +1 -0
- package/dist/test/collections/GlobalCollection.js +12 -0
- package/dist/test/collections/GlobalCollection.js.map +1 -0
- package/dist/test/collections/LinkCollection.js +12 -0
- package/dist/test/collections/LinkCollection.js.map +1 -0
- package/dist/test/collections/MenuCollection.js +12 -0
- package/dist/test/collections/MenuCollection.js.map +1 -0
- package/dist/test/collections/PageCollection.js +12 -0
- package/dist/test/collections/PageCollection.js.map +1 -0
- package/dist/test/collections/RoleCollection.js +19 -0
- package/dist/test/collections/RoleCollection.js.map +1 -0
- package/dist/test/collections/RoleFieldCollection.js +40 -0
- package/dist/test/collections/RoleFieldCollection.js.map +1 -0
- package/dist/test/collections/StaticCollection.js +56 -0
- package/dist/test/collections/StaticCollection.js.map +1 -0
- package/dist/test/collections/StorePageCollection.js +12 -0
- package/dist/test/collections/StorePageCollection.js.map +1 -0
- package/dist/test/collections/TenantCollection.js +22 -0
- package/dist/test/collections/TenantCollection.js.map +1 -0
- package/dist/test/collections/TranslationCollection.js +16 -0
- package/dist/test/collections/TranslationCollection.js.map +1 -0
- package/dist/test/collections/TypeACollection.js +18 -0
- package/dist/test/collections/TypeACollection.js.map +1 -0
- package/dist/test/collections/TypeBCollection.js +18 -0
- package/dist/test/collections/TypeBCollection.js.map +1 -0
- package/dist/test/collections/actions/NewsletterAction.js +29 -0
- package/dist/test/collections/actions/NewsletterAction.js.map +1 -0
- package/dist/test/collections/actions/RegisterAction.js +44 -0
- package/dist/test/collections/actions/RegisterAction.js.map +1 -0
- package/dist/test/collections/users/EndUsers.js +40 -0
- package/dist/test/collections/users/EndUsers.js.map +1 -0
- package/dist/test/collections/users/Users.js +20 -0
- package/dist/test/collections/users/Users.js.map +1 -0
- package/dist/test/index.js +32 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/payload.config.js +106 -0
- package/dist/test/payload.config.js.map +1 -0
- package/dist/test/utils.js +52 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/translations.js +467 -0
- package/dist/translations.js.map +1 -0
- package/dist/types.js +31 -0
- package/dist/types.js.map +1 -0
- package/package.json +119 -37
- package/scss/styles.scss +0 -1
- package/dist/index.css +0 -796
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig } from '@/test';
|
|
2
|
+
import { textToSlug } from '@websolutespa/payload-utils';
|
|
3
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
4
|
+
import { v4 as uuid } from 'uuid';
|
|
5
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
6
|
+
describe('withSlug field', ()=>{
|
|
7
|
+
let payload;
|
|
8
|
+
let client;
|
|
9
|
+
let userToken;
|
|
10
|
+
let endUserToken;
|
|
11
|
+
let apiKey;
|
|
12
|
+
let testConfig;
|
|
13
|
+
beforeAll(async ()=>{
|
|
14
|
+
const context = await getContext(config);
|
|
15
|
+
payload = context.payload;
|
|
16
|
+
client = context.client;
|
|
17
|
+
userToken = await client.getToken('users', users.admin);
|
|
18
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
19
|
+
apiKey = users.api.apiKey;
|
|
20
|
+
testConfig = await getTestConfig(client, userToken);
|
|
21
|
+
});
|
|
22
|
+
afterAll(async ()=>{
|
|
23
|
+
await clearContext();
|
|
24
|
+
});
|
|
25
|
+
describe('Field config', ()=>{
|
|
26
|
+
let collection;
|
|
27
|
+
let field;
|
|
28
|
+
beforeAll(async ()=>{
|
|
29
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
30
|
+
});
|
|
31
|
+
it('should have a field named "slug" of type "text"', ()=>{
|
|
32
|
+
field = collection.fields.find((field)=>field.type === 'text' && field.name === 'slug');
|
|
33
|
+
expect(field).toBeDefined();
|
|
34
|
+
});
|
|
35
|
+
it('should be localized', ()=>{
|
|
36
|
+
expect(field.localized).toEqual(true);
|
|
37
|
+
});
|
|
38
|
+
it('should have a "beforeValidate" hook defined', ()=>{
|
|
39
|
+
expect(field.hooks.beforeValidate).toBeDefined();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('Document creation', ()=>{
|
|
43
|
+
it('should have a valid "slug" field', async ()=>{
|
|
44
|
+
const postData = {
|
|
45
|
+
_id: uuid(),
|
|
46
|
+
title: uuid(),
|
|
47
|
+
slug: uuid()
|
|
48
|
+
};
|
|
49
|
+
const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
50
|
+
headers: {
|
|
51
|
+
Authorization: `JWT ${userToken}`
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
expect(fieldsDoc.slug).toEqual(textToSlug(postData.slug));
|
|
55
|
+
});
|
|
56
|
+
it('should have a valid "slug" field (title field used as value fallback)', async ()=>{
|
|
57
|
+
const postData = {
|
|
58
|
+
_id: uuid(),
|
|
59
|
+
title: uuid()
|
|
60
|
+
};
|
|
61
|
+
const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
62
|
+
headers: {
|
|
63
|
+
Authorization: `JWT ${userToken}`
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
expect(fieldsDoc.slug).toEqual(textToSlug(postData.title));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=withSlug.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withSlug.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { textToSlug } from '@websolutespa/payload-utils';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, TextField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withSlug field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: TextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"slug\" of type \"text\"', () => {\r\n field = collection.fields.find(field => field.type === 'text' && field.name === 'slug') as TextField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should be localized', () => {\r\n expect(field.localized).toEqual(true);\r\n });\r\n\r\n it('should have a \"beforeValidate\" hook defined', () => {\r\n expect(field.hooks!.beforeValidate).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n it('should have a valid \"slug\" field', async () => {\r\n const postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n slug: uuid(),\r\n };\r\n\r\n const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n\r\n expect(fieldsDoc.slug).toEqual(textToSlug(postData.slug));\r\n });\r\n\r\n it('should have a valid \"slug\" field (title field used as value fallback)', async () => {\r\n const postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n };\r\n\r\n const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n\r\n expect(fieldsDoc.slug).toEqual(textToSlug(postData.title));\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","textToSlug","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","localized","toEqual","hooks","beforeValidate","postData","_id","title","doc","fieldsDoc","post","defaultLocale","headers","Authorization"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,UAAU,QAAQ,8BAA8B;AACzD,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,kBAAkB;IAEzB,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWN;QACjCe,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMlB,cAAcc,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQf,MAAM,CAAC4B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK9B,gBAAgB8B,IAAI;QACnF;QAEAjB,GAAG,mDAAmD;YACpDa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,UAAUN,MAAMO,IAAI,KAAK;YAChFrB,OAAOc,OAAOQ,WAAW;QAC3B;QAEArB,GAAG,uBAAuB;YACxBD,OAAOc,MAAMS,SAAS,EAAEC,OAAO,CAAC;QAClC;QAEAvB,GAAG,+CAA+C;YAChDD,OAAOc,MAAMW,KAAK,CAAEC,cAAc,EAAEJ,WAAW;QACjD;IACF;IAEAvB,SAAS,qBAAqB;QAC5BE,GAAG,oCAAoC;YACrC,MAAM0B,WAAW;gBACfC,KAAKhC;gBACLiC,OAAOjC;gBACPsB,MAAMtB;YACR;YAEA,MAAM,EAAEkC,KAAKC,SAAS,EAAE,GAAG,MAAM5B,OAAO6B,IAAI,CAAC,CAAC,CAAC,EAAE5C,gBAAgB8B,IAAI,CAAC,QAAQ,EAAEX,WAAW0B,aAAa,CAAC,CAAC,EAAEN,UAAU;gBACpHO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE/B,UAAU,CAAC;gBACnC;YACF;YAEAJ,OAAO+B,UAAUb,IAAI,EAAEM,OAAO,CAAClC,WAAWqC,SAAST,IAAI;QACzD;QAEAjB,GAAG,yEAAyE;YAC1E,MAAM0B,WAAW;gBACfC,KAAKhC;gBACLiC,OAAOjC;YACT;YAEA,MAAM,EAAEkC,KAAKC,SAAS,EAAE,GAAG,MAAM5B,OAAO6B,IAAI,CAAC,CAAC,CAAC,EAAE5C,gBAAgB8B,IAAI,CAAC,QAAQ,EAAEX,WAAW0B,aAAa,CAAC,CAAC,EAAEN,UAAU;gBACpHO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE/B,UAAU,CAAC;gBACnC;YACF;YAEAJ,OAAO+B,UAAUb,IAAI,EAAEM,OAAO,CAAClC,WAAWqC,SAASE,KAAK;QAC1D;IACF;AACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
import { options } from '../../options';
|
|
3
|
+
export const TemplateDefaults = {
|
|
4
|
+
name: 'template',
|
|
5
|
+
type: 'relationship',
|
|
6
|
+
relationTo: options.slug.template,
|
|
7
|
+
hasMany: false
|
|
8
|
+
};
|
|
9
|
+
const filterOptionsBySlug = (slug)=>()=>{
|
|
10
|
+
const where = {
|
|
11
|
+
or: [
|
|
12
|
+
{
|
|
13
|
+
hasCompatibleCollections: {
|
|
14
|
+
equals: false
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
and: [
|
|
19
|
+
{
|
|
20
|
+
hasCompatibleCollections: {
|
|
21
|
+
equals: true
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
compatibleCollections: {
|
|
26
|
+
contains: slug
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
};
|
|
33
|
+
return where;
|
|
34
|
+
};
|
|
35
|
+
export const withTemplate = ({ slugToUse, ...options })=>{
|
|
36
|
+
const field = deepMerge(TemplateDefaults, options);
|
|
37
|
+
field.filterOptions = filterOptionsBySlug(slugToUse);
|
|
38
|
+
return field;
|
|
39
|
+
};
|
|
40
|
+
export const withTemplateRequired = ({ slugToUse, ...options })=>{
|
|
41
|
+
const field = deepMerge({
|
|
42
|
+
...TemplateDefaults,
|
|
43
|
+
required: true
|
|
44
|
+
}, options);
|
|
45
|
+
field.filterOptions = filterOptionsBySlug(slugToUse);
|
|
46
|
+
return field;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=withTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withTemplate.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { FilterOptions, RelationshipField, Where } from 'payload';\r\nimport { options } from '../../options';\r\n\r\nexport type WithTemplateProps = (Omit<RelationshipField, 'type' | 'name' | 'relationTo'> & { slugToUse: string });\r\nexport type WithTemplate = WithTemplateProps & { type: 'withTemplate' };\r\n\r\nexport const TemplateDefaults: RelationshipField = {\r\n name: 'template',\r\n type: 'relationship',\r\n relationTo: options.slug.template,\r\n hasMany: false,\r\n};\r\n\r\nconst filterOptionsBySlug = (slug: string): FilterOptions => () => {\r\n const where: Where = {\r\n or: [\r\n {\r\n hasCompatibleCollections: { equals: false },\r\n },\r\n {\r\n and: [\r\n {\r\n hasCompatibleCollections: { equals: true },\r\n },\r\n {\r\n compatibleCollections: { contains: slug },\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n return where;\r\n};\r\n\r\nexport const withTemplate = ({ slugToUse, ...options }: WithTemplateProps): RelationshipField => {\r\n const field = deepMerge<RelationshipField>(TemplateDefaults, options as RelationshipField);\r\n field.filterOptions = filterOptionsBySlug(slugToUse);\r\n return field;\r\n};\r\n\r\nexport const withTemplateRequired = ({ slugToUse, ...options }: WithTemplateProps): RelationshipField => {\r\n const field = deepMerge<RelationshipField>({\r\n ...TemplateDefaults,\r\n required: true,\r\n }, options as RelationshipField);\r\n field.filterOptions = filterOptionsBySlug(slugToUse);\r\n return field;\r\n};\r\n\r\n"],"names":["deepMerge","options","TemplateDefaults","name","type","relationTo","slug","template","hasMany","filterOptionsBySlug","where","or","hasCompatibleCollections","equals","and","compatibleCollections","contains","withTemplate","slugToUse","field","filterOptions","withTemplateRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,OAAO,QAAQ,gBAAgB;AAKxC,OAAO,MAAMC,mBAAsC;IACjDC,MAAM;IACNC,MAAM;IACNC,YAAYJ,QAAQK,IAAI,CAACC,QAAQ;IACjCC,SAAS;AACX,EAAE;AAEF,MAAMC,sBAAsB,CAACH,OAAgC;QAC3D,MAAMI,QAAe;YACnBC,IAAI;gBACF;oBACEC,0BAA0B;wBAAEC,QAAQ;oBAAM;gBAC5C;gBACA;oBACEC,KAAK;wBACH;4BACEF,0BAA0B;gCAAEC,QAAQ;4BAAK;wBAC3C;wBACA;4BACEE,uBAAuB;gCAAEC,UAAUV;4BAAK;wBAC1C;qBACD;gBACH;aACD;QACH;QACA,OAAOI;IACT;AAEA,OAAO,MAAMO,eAAe,CAAC,EAAEC,SAAS,EAAE,GAAGjB,SAA4B;IACvE,MAAMkB,QAAQnB,UAA6BE,kBAAkBD;IAC7DkB,MAAMC,aAAa,GAAGX,oBAAoBS;IAC1C,OAAOC;AACT,EAAE;AAEF,OAAO,MAAME,uBAAuB,CAAC,EAAEH,SAAS,EAAE,GAAGjB,SAA4B;IAC/E,MAAMkB,QAAQnB,UAA6B;QACzC,GAAGE,gBAAgB;QACnBoB,UAAU;IACZ,GAAGrB;IACHkB,MAAMC,aAAa,GAAGX,oBAAoBS;IAC1C,OAAOC;AACT,EAAE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig, PageCollection } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
import { options } from '../../options';
|
|
6
|
+
describe('withTemplate field', ()=>{
|
|
7
|
+
let payload;
|
|
8
|
+
let client;
|
|
9
|
+
let userToken;
|
|
10
|
+
let endUserToken;
|
|
11
|
+
let apiKey;
|
|
12
|
+
let testConfig;
|
|
13
|
+
beforeAll(async ()=>{
|
|
14
|
+
const context = await getContext(config);
|
|
15
|
+
payload = context.payload;
|
|
16
|
+
client = context.client;
|
|
17
|
+
userToken = await client.getToken('users', users.admin);
|
|
18
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
19
|
+
apiKey = users.api.apiKey;
|
|
20
|
+
testConfig = await getTestConfig(client, userToken);
|
|
21
|
+
});
|
|
22
|
+
afterAll(async ()=>{
|
|
23
|
+
await clearContext();
|
|
24
|
+
});
|
|
25
|
+
describe('Field config', ()=>{
|
|
26
|
+
let collection;
|
|
27
|
+
let field;
|
|
28
|
+
beforeAll(async ()=>{
|
|
29
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
30
|
+
});
|
|
31
|
+
it('should have a field named "template" of type "relationship"', ()=>{
|
|
32
|
+
field = collection.fields.find((field)=>field.type === 'relationship' && field.name === 'template');
|
|
33
|
+
expect(field).toBeDefined();
|
|
34
|
+
});
|
|
35
|
+
it('should allow only one relation', ()=>{
|
|
36
|
+
expect(field.hasMany).toEqual(false);
|
|
37
|
+
});
|
|
38
|
+
it('should allow relationship with the "template" collection', ()=>{
|
|
39
|
+
expect(field.relationTo).toEqual(options.slug.template);
|
|
40
|
+
});
|
|
41
|
+
it('should filter the relationship options (filterOptions property)', ()=>{
|
|
42
|
+
expect(field.filterOptions).toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('Document creation', ()=>{
|
|
46
|
+
let fieldsDoc;
|
|
47
|
+
let postData;
|
|
48
|
+
beforeAll(async ()=>{
|
|
49
|
+
postData = {
|
|
50
|
+
_id: uuid(),
|
|
51
|
+
title: uuid(),
|
|
52
|
+
template: testConfig.documents.template.id
|
|
53
|
+
};
|
|
54
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
55
|
+
headers: {
|
|
56
|
+
Authorization: `JWT ${userToken}`
|
|
57
|
+
}
|
|
58
|
+
}));
|
|
59
|
+
});
|
|
60
|
+
it('should have a valid "template" field', async ()=>{
|
|
61
|
+
expect(fieldsDoc.template.id).toEqual(postData.template);
|
|
62
|
+
});
|
|
63
|
+
it('should not allow incompatible templates', async ()=>{
|
|
64
|
+
try {
|
|
65
|
+
const { doc: incompatibleTemplateDoc } = await client.post(`/${options.slug.template}?locale=${testConfig.defaultLocale}`, {
|
|
66
|
+
id: uuid(),
|
|
67
|
+
name: uuid(),
|
|
68
|
+
hasCompatibleCollections: true,
|
|
69
|
+
compatibleCollections: [
|
|
70
|
+
PageCollection.slug
|
|
71
|
+
]
|
|
72
|
+
}, {
|
|
73
|
+
headers: {
|
|
74
|
+
Authorization: `JWT ${userToken}`
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
postData._id = uuid();
|
|
78
|
+
postData.template = incompatibleTemplateDoc.id;
|
|
79
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
80
|
+
headers: {
|
|
81
|
+
Authorization: `JWT ${userToken}`
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
expect(fieldsDoc).toBeUndefined();
|
|
85
|
+
} catch (error) {
|
|
86
|
+
expect(error).toBeDefined();
|
|
87
|
+
expect(error.status).toBe(400);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
//# sourceMappingURL=withTemplate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withTemplate.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, PageCollection, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, RelationshipField, SanitizedCollectionConfig } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\nimport { options } from '../../options';\r\n\r\ndescribe('withTemplate field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: RelationshipField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"template\" of type \"relationship\"', () => {\r\n field = collection.fields.find(field => field.type === 'relationship' && field.name === 'template') as RelationshipField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should allow only one relation', () => {\r\n expect(field.hasMany).toEqual(false);\r\n });\r\n\r\n it('should allow relationship with the \"template\" collection', () => {\r\n expect(field.relationTo).toEqual(options.slug.template);\r\n });\r\n\r\n it('should filter the relationship options (filterOptions property)', () => {\r\n expect(field.filterOptions).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n template: testConfig.documents.template.id,\r\n };\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"template\" field', async () => {\r\n expect(fieldsDoc.template.id).toEqual(postData.template);\r\n });\r\n\r\n it('should not allow incompatible templates', async () => {\r\n try {\r\n const { doc: incompatibleTemplateDoc } = await client.post(`/${options.slug.template}?locale=${testConfig.defaultLocale}`, {\r\n id: uuid(),\r\n name: uuid(),\r\n hasCompatibleCollections: true,\r\n compatibleCollections: [PageCollection.slug],\r\n }, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n postData._id = uuid();\r\n postData.template = incompatibleTemplateDoc.id;\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n expect(fieldsDoc).toBeUndefined();\r\n } catch (error: any) {\r\n expect(error).toBeDefined();\r\n expect(error.status).toBe(400);\r\n }\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","PageCollection","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","options","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","hasMany","toEqual","relationTo","template","filterOptions","fieldsDoc","postData","_id","title","documents","id","doc","post","defaultLocale","headers","Authorization","incompatibleTemplateDoc","hasCompatibleCollections","compatibleCollections","toBeUndefined","error","status","toBe"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,EAAEC,cAAc,QAAoB,SAAS;AAC5F,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AACnE,SAASC,OAAO,QAAQ,gBAAgB;AAExCH,SAAS,sBAAsB;IAE7B,IAAII;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJV,UAAU;QACR,MAAMW,UAAU,MAAMhB,WAAWN;QACjCgB,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAAShB,MAAMiB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAalB,SAASoB,IAAI;QAC/DL,SAASb,MAAMmB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMnB,cAAce,QAAQC;IAC3C;IAEAR,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIe;QACJ,IAAIC;QAEJjB,UAAU;YACRgB,aAAaX,QAAQhB,MAAM,CAAC6B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK/B,gBAAgB+B,IAAI;QACnF;QAEAlB,GAAG,+DAA+D;YAChEc,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,kBAAkBN,MAAMO,IAAI,KAAK;YACxFtB,OAAOe,OAAOQ,WAAW;QAC3B;QAEAtB,GAAG,kCAAkC;YACnCD,OAAOe,MAAMS,OAAO,EAAEC,OAAO,CAAC;QAChC;QAEAxB,GAAG,4DAA4D;YAC7DD,OAAOe,MAAMW,UAAU,EAAED,OAAO,CAACvB,QAAQiB,IAAI,CAACQ,QAAQ;QACxD;QAEA1B,GAAG,mEAAmE;YACpED,OAAOe,MAAMa,aAAa,EAAEL,WAAW;QACzC;IACF;IAEAxB,SAAS,qBAAqB;QAC5B,IAAI8B;QACJ,IAAIC;QAEJhC,UAAU;YACRgC,WAAW;gBACTC,KAAKnC;gBACLoC,OAAOpC;gBACP+B,UAAUnB,WAAWyB,SAAS,CAACN,QAAQ,CAACO,EAAE;YAC5C;YACC,CAAA,EAAEC,KAAKN,SAAS,EAAE,GAAG,MAAMzB,OAAOgC,IAAI,CAAC,CAAC,CAAC,EAAEhD,gBAAgB+B,IAAI,CAAC,QAAQ,EAAEX,WAAW6B,aAAa,CAAC,CAAC,EAAEP,UAAU;gBAC/GQ,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAElC,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAJ,GAAG,wCAAwC;YACzCD,OAAO6B,UAAUF,QAAQ,CAACO,EAAE,EAAET,OAAO,CAACK,SAASH,QAAQ;QACzD;QAEA1B,GAAG,2CAA2C;YAC5C,IAAI;gBACF,MAAM,EAAEkC,KAAKK,uBAAuB,EAAE,GAAG,MAAMpC,OAAOgC,IAAI,CAAC,CAAC,CAAC,EAAElC,QAAQiB,IAAI,CAACQ,QAAQ,CAAC,QAAQ,EAAEnB,WAAW6B,aAAa,CAAC,CAAC,EAAE;oBACzHH,IAAItC;oBACJ0B,MAAM1B;oBACN6C,0BAA0B;oBAC1BC,uBAAuB;wBAACpD,eAAe6B,IAAI;qBAAC;gBAC9C,GAAG;oBACDmB,SAAS;wBACPC,eAAe,CAAC,IAAI,EAAElC,UAAU,CAAC;oBACnC;gBACF;gBACAyB,SAASC,GAAG,GAAGnC;gBACfkC,SAASH,QAAQ,GAAGa,wBAAwBN,EAAE;gBAC7C,CAAA,EAAEC,KAAKN,SAAS,EAAE,GAAG,MAAMzB,OAAOgC,IAAI,CAAC,CAAC,CAAC,EAAEhD,gBAAgB+B,IAAI,CAAC,QAAQ,EAAEX,WAAW6B,aAAa,CAAC,CAAC,EAAEP,UAAU;oBAC/GQ,SAAS;wBACPC,eAAe,CAAC,IAAI,EAAElC,UAAU,CAAC;oBACnC;gBACF,EAAC;gBACDL,OAAO6B,WAAWc,aAAa;YACjC,EAAE,OAAOC,OAAY;gBACnB5C,OAAO4C,OAAOrB,WAAW;gBACzBvB,OAAO4C,MAAMC,MAAM,EAAEC,IAAI,CAAC;YAC5B;QACF;IACF;AACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
import { options } from '../../options';
|
|
3
|
+
import { isAdmin } from '../access';
|
|
4
|
+
export const TenantsDefault = {
|
|
5
|
+
name: 'tenants',
|
|
6
|
+
type: 'relationship',
|
|
7
|
+
hasMany: true,
|
|
8
|
+
relationTo: [
|
|
9
|
+
options.slug.market
|
|
10
|
+
],
|
|
11
|
+
access: {
|
|
12
|
+
create: isAdmin,
|
|
13
|
+
update: isAdmin
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const withTenants = (srcOptions = {})=>{
|
|
17
|
+
const field = deepMerge(TenantsDefault, srcOptions);
|
|
18
|
+
return field;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=withTenants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withTenants.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { RelationshipField } from 'payload';\r\nimport { options } from '../../options';\r\nimport { isAdmin } from '../access';\r\n\r\nexport type WithTenantsProps = (Omit<RelationshipField, 'type' | 'name' | 'hasMany' | 'relationTo'> & { name?: string, relationTo?: string | string[] });\r\nexport type WithTenants = WithTenantsProps & { type: 'withTenants' };\r\n\r\nexport const TenantsDefault: RelationshipField = {\r\n name: 'tenants',\r\n type: 'relationship',\r\n hasMany: true,\r\n relationTo: [options.slug.market],\r\n access: {\r\n create: isAdmin,\r\n update: isAdmin,\r\n },\r\n};\r\n\r\nexport const withTenants = (srcOptions: WithTenantsProps = {}): RelationshipField => {\r\n const field = deepMerge<RelationshipField>(TenantsDefault, srcOptions as RelationshipField);\r\n return field;\r\n};\r\n"],"names":["deepMerge","options","isAdmin","TenantsDefault","name","type","hasMany","relationTo","slug","market","access","create","update","withTenants","srcOptions","field"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,OAAO,QAAQ,YAAY;AAKpC,OAAO,MAAMC,iBAAoC;IAC/CC,MAAM;IACNC,MAAM;IACNC,SAAS;IACTC,YAAY;QAACN,QAAQO,IAAI,CAACC,MAAM;KAAC;IACjCC,QAAQ;QACNC,QAAQT;QACRU,QAAQV;IACV;AACF,EAAE;AAEF,OAAO,MAAMW,cAAc,CAACC,aAA+B,CAAC,CAAC;IAC3D,MAAMC,QAAQf,UAA6BG,gBAAgBW;IAC3D,OAAOC;AACT,EAAE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { config } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
4
|
+
import { options } from '../../options';
|
|
5
|
+
describe('withTenants field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
beforeAll(async ()=>{
|
|
12
|
+
const context = await getContext(config);
|
|
13
|
+
payload = context.payload;
|
|
14
|
+
client = context.client;
|
|
15
|
+
userToken = await client.getToken('users', users.admin);
|
|
16
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
17
|
+
apiKey = users.api.apiKey;
|
|
18
|
+
});
|
|
19
|
+
afterAll(async ()=>{
|
|
20
|
+
await clearContext();
|
|
21
|
+
});
|
|
22
|
+
describe('Field config', ()=>{
|
|
23
|
+
let collection;
|
|
24
|
+
let field;
|
|
25
|
+
beforeAll(async ()=>{
|
|
26
|
+
collection = payload.config.collections.find((collection)=>collection.slug === options.slug.users);
|
|
27
|
+
});
|
|
28
|
+
it('Users collection should have a field named "tenants" of type "relationship"', ()=>{
|
|
29
|
+
field = collection.fields.find((field)=>field.type === 'relationship' && field.name === 'tenants');
|
|
30
|
+
expect(field).toBeDefined();
|
|
31
|
+
});
|
|
32
|
+
it('should allow multiple relations', ()=>{
|
|
33
|
+
expect(field.hasMany).toEqual(true);
|
|
34
|
+
});
|
|
35
|
+
it('should be editable only by admins', ()=>{
|
|
36
|
+
expect(field.access.create.name).toEqual('isAdmin');
|
|
37
|
+
expect(field.access.update.name).toEqual('isAdmin');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=withTenants.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withTenants.test.ts"],"sourcesContent":["import { config } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, RelationshipField, SanitizedCollectionConfig } from 'payload';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\nimport { options } from '../../options';\r\n\r\ndescribe('withTenants field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: RelationshipField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(collection => collection.slug === options.slug.users)!;\r\n });\r\n\r\n it('Users collection should have a field named \"tenants\" of type \"relationship\"', () => {\r\n field = collection.fields.find(field => field.type === 'relationship' && field.name === 'tenants') as RelationshipField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should allow multiple relations', () => {\r\n expect(field.hasMany).toEqual(true);\r\n });\r\n\r\n it('should be editable only by admins', () => {\r\n expect(field.access!.create!.name).toEqual('isAdmin');\r\n expect(field.access!.update!.name).toEqual('isAdmin');\r\n });\r\n });\r\n});\r\n"],"names":["config","clearContext","endUsers","getContext","users","afterAll","beforeAll","describe","expect","it","options","payload","client","userToken","endUserToken","apiKey","context","getToken","admin","user","api","collection","field","collections","find","slug","fields","type","name","toBeDefined","hasMany","toEqual","access","create","update"],"mappings":"AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AACnE,SAASC,OAAO,QAAQ,gBAAgB;AAExCH,SAAS,qBAAqB;IAE5B,IAAII;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMb,WAAWH;QACjCW,UAAUK,QAAQL,OAAO;QACzBC,SAASI,QAAQJ,MAAM;QACvBC,YAAY,MAAMD,OAAOK,QAAQ,CAAC,SAASb,MAAMc,KAAK;QACtDJ,eAAe,MAAMF,OAAOK,QAAQ,CAAC,aAAaf,SAASiB,IAAI;QAC/DJ,SAASX,MAAMgB,GAAG,CAACL,MAAM;IAC3B;IAEAV,SAAS;QACP,MAAMJ;IACR;IAEAM,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaV,QAAQX,MAAM,CAACuB,WAAW,CAACC,IAAI,CAACH,CAAAA,aAAcA,WAAWI,IAAI,KAAKf,QAAQe,IAAI,CAACrB,KAAK;QACnG;QAEAK,GAAG,+EAA+E;YAChFa,QAAQD,WAAWK,MAAM,CAACF,IAAI,CAACF,CAAAA,QAASA,MAAMK,IAAI,KAAK,kBAAkBL,MAAMM,IAAI,KAAK;YACxFpB,OAAOc,OAAOO,WAAW;QAC3B;QAEApB,GAAG,mCAAmC;YACpCD,OAAOc,MAAMQ,OAAO,EAAEC,OAAO,CAAC;QAChC;QAEAtB,GAAG,qCAAqC;YACtCD,OAAOc,MAAMU,MAAM,CAAEC,MAAM,CAAEL,IAAI,EAAEG,OAAO,CAAC;YAC3CvB,OAAOc,MAAMU,MAAM,CAAEE,MAAM,CAAEN,IAAI,EAAEG,OAAO,CAAC;QAC7C;IACF;AACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
export const TextDefaults = {
|
|
3
|
+
name: 'text',
|
|
4
|
+
type: 'text'
|
|
5
|
+
};
|
|
6
|
+
export const withText = (options = {})=>{
|
|
7
|
+
const field = deepMerge(TextDefaults, options);
|
|
8
|
+
return field;
|
|
9
|
+
};
|
|
10
|
+
export const withTextRequired = (options = {})=>{
|
|
11
|
+
const field = deepMerge({
|
|
12
|
+
...TextDefaults,
|
|
13
|
+
required: true
|
|
14
|
+
}, options);
|
|
15
|
+
return field;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=withText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withText.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { TextField } from 'payload';\r\n\r\nexport type WithTextProps = (Omit<TextField, 'type' | 'name' | 'hasMany'> & { name?: string });\r\nexport type WithText = WithTextProps & { type: 'withText' };\r\n\r\nexport const TextDefaults: TextField = {\r\n name: 'text',\r\n type: 'text',\r\n};\r\n\r\nexport const withText = (options: WithTextProps = {}): TextField => {\r\n const field = deepMerge<TextField>(TextDefaults, options as Partial<TextField>);\r\n return field;\r\n};\r\n\r\nexport const withTextRequired = (options: WithTextProps = {}): TextField => {\r\n const field = deepMerge<TextField>({\r\n ...TextDefaults,\r\n required: true,\r\n }, options as Partial<TextField>);\r\n return field;\r\n};\r\n"],"names":["deepMerge","TextDefaults","name","type","withText","options","field","withTextRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAMxD,OAAO,MAAMC,eAA0B;IACrCC,MAAM;IACNC,MAAM;AACR,EAAE;AAEF,OAAO,MAAMC,WAAW,CAACC,UAAyB,CAAC,CAAC;IAClD,MAAMC,QAAQN,UAAqBC,cAAcI;IACjD,OAAOC;AACT,EAAE;AAEF,OAAO,MAAMC,mBAAmB,CAACF,UAAyB,CAAC,CAAC;IAC1D,MAAMC,QAAQN,UAAqB;QACjC,GAAGC,YAAY;QACfO,UAAU;IACZ,GAAGH;IACH,OAAOC;AACT,EAAE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
describe('withText field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
let testConfig;
|
|
12
|
+
beforeAll(async ()=>{
|
|
13
|
+
const context = await getContext(config);
|
|
14
|
+
payload = context.payload;
|
|
15
|
+
client = context.client;
|
|
16
|
+
userToken = await client.getToken('users', users.admin);
|
|
17
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
18
|
+
apiKey = users.api.apiKey;
|
|
19
|
+
testConfig = await getTestConfig(client, userToken);
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "text" of type "text"', ()=>{
|
|
31
|
+
field = collection?.fields?.find((field)=>field.type === 'text' && field.name === 'text');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('Document creation', ()=>{
|
|
36
|
+
let fieldsDoc;
|
|
37
|
+
let postData;
|
|
38
|
+
beforeAll(async ()=>{
|
|
39
|
+
postData = {
|
|
40
|
+
_id: uuid(),
|
|
41
|
+
title: uuid(),
|
|
42
|
+
Text: uuid()
|
|
43
|
+
};
|
|
44
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
45
|
+
headers: {
|
|
46
|
+
Authorization: `JWT ${userToken}`
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
});
|
|
50
|
+
it('should have a valid "text" field', async ()=>{
|
|
51
|
+
expect(fieldsDoc.text).toEqual(postData.text);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=withText.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withText.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, TextField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withText field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: TextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"text\" of type \"text\"', () => {\r\n field = collection?.fields?.find(field => field.type === 'text' && field.name === 'text') as TextField;\r\n expect(field).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n Text: uuid(),\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"text\" field', async () => {\r\n expect(fieldsDoc.text).toEqual(postData.text);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","fieldsDoc","postData","_id","title","Text","doc","post","defaultLocale","headers","Authorization","text","toEqual"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,kBAAkB;IAEzB,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,mDAAmD;YACpDa,QAAQD,YAAYM,QAAQH,KAAKF,CAAAA,QAASA,MAAMM,IAAI,KAAK,UAAUN,MAAMO,IAAI,KAAK;YAClFrB,OAAOc,OAAOQ,WAAW;QAC3B;IACF;IAEAvB,SAAS,qBAAqB;QAC5B,IAAIwB;QACJ,IAAIC;QAEJ1B,UAAU;YACR0B,WAAW;gBACTC,KAAK7B;gBACL8B,OAAO9B;gBACP+B,MAAM/B;YACR;YAEC,CAAA,EAAEgC,KAAKL,SAAS,EAAE,GAAG,MAAMpB,OAAO0B,IAAI,CAAC,CAAC,CAAC,EAAExC,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAWuB,aAAa,CAAC,CAAC,EAAEN,UAAU;gBAC/GO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE5B,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAH,GAAG,oCAAoC;YACrCD,OAAOuB,UAAUU,IAAI,EAAEC,OAAO,CAACV,SAASS,IAAI;QAC9C;IACF;AACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { deepMerge } from '@websolutespa/payload-utils';
|
|
2
|
+
import { withText } from './withText';
|
|
3
|
+
export const withTitle = (options = {})=>{
|
|
4
|
+
return withText(deepMerge({
|
|
5
|
+
name: 'title',
|
|
6
|
+
localized: true
|
|
7
|
+
}, options));
|
|
8
|
+
};
|
|
9
|
+
export const withTitleRequired = (options = {})=>{
|
|
10
|
+
return withText(deepMerge({
|
|
11
|
+
name: 'title',
|
|
12
|
+
localized: true,
|
|
13
|
+
required: true
|
|
14
|
+
}, options));
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=withTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withTitle.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { TextField } from 'payload';\r\nimport { withText } from './withText';\r\n\r\nexport type WithTitleProps = (Omit<TextField, 'type' | 'name' | 'hasMany'> & { name?: string });\r\nexport type WithTitle = WithTitleProps & { type: 'withTitle' };\r\n\r\nexport const withTitle = (options: WithTitleProps = {}): TextField => {\r\n return withText(deepMerge<TextField>({\r\n name: 'title',\r\n localized: true,\r\n }, options as Partial<TextField>));\r\n};\r\n\r\nexport const withTitleRequired = (options: WithTitleProps = {}): TextField => {\r\n return withText(deepMerge<TextField>({\r\n name: 'title',\r\n localized: true,\r\n required: true,\r\n }, options as Partial<TextField>));\r\n};\r\n"],"names":["deepMerge","withText","withTitle","options","name","localized","withTitleRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,QAAQ,QAAQ,aAAa;AAKtC,OAAO,MAAMC,YAAY,CAACC,UAA0B,CAAC,CAAC;IACpD,OAAOF,SAASD,UAAqB;QACnCI,MAAM;QACNC,WAAW;IACb,GAAGF;AACL,EAAE;AAEF,OAAO,MAAMG,oBAAoB,CAACH,UAA0B,CAAC,CAAC;IAC5D,OAAOF,SAASD,UAAqB;QACnCI,MAAM;QACNC,WAAW;QACXE,UAAU;IACZ,GAAGJ;AACL,EAAE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { config, FieldCollection, getTestConfig } from '@/test';
|
|
2
|
+
import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
|
|
3
|
+
import { v4 as uuid } from 'uuid';
|
|
4
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
5
|
+
describe('withTitle field', ()=>{
|
|
6
|
+
let payload;
|
|
7
|
+
let client;
|
|
8
|
+
let userToken;
|
|
9
|
+
let endUserToken;
|
|
10
|
+
let apiKey;
|
|
11
|
+
let testConfig;
|
|
12
|
+
beforeAll(async ()=>{
|
|
13
|
+
const context = await getContext(config);
|
|
14
|
+
payload = context.payload;
|
|
15
|
+
client = context.client;
|
|
16
|
+
userToken = await client.getToken('users', users.admin);
|
|
17
|
+
endUserToken = await client.getToken('end_users', endUsers.user);
|
|
18
|
+
apiKey = users.api.apiKey;
|
|
19
|
+
testConfig = await getTestConfig(client, userToken);
|
|
20
|
+
});
|
|
21
|
+
afterAll(async ()=>{
|
|
22
|
+
await clearContext();
|
|
23
|
+
});
|
|
24
|
+
describe('Field config', ()=>{
|
|
25
|
+
let collection;
|
|
26
|
+
let field;
|
|
27
|
+
beforeAll(async ()=>{
|
|
28
|
+
collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
|
|
29
|
+
});
|
|
30
|
+
it('should have a field named "title" of type "text"', ()=>{
|
|
31
|
+
field = collection.fields.find((field)=>field.type === 'text' && field.name === 'title');
|
|
32
|
+
expect(field).toBeDefined();
|
|
33
|
+
});
|
|
34
|
+
it('should be localized', ()=>{
|
|
35
|
+
expect(field.localized).toEqual(true);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('Document creation', ()=>{
|
|
39
|
+
let fieldsDoc;
|
|
40
|
+
let postData;
|
|
41
|
+
beforeAll(async ()=>{
|
|
42
|
+
postData = {
|
|
43
|
+
_id: uuid(),
|
|
44
|
+
title: uuid()
|
|
45
|
+
};
|
|
46
|
+
({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
|
|
47
|
+
headers: {
|
|
48
|
+
Authorization: `JWT ${userToken}`
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
});
|
|
52
|
+
it('should have a valid "title" field', async ()=>{
|
|
53
|
+
expect(fieldsDoc.title).toEqual(postData.title);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=withTitle.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/fields/withTitle.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, TextField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withTitle field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: TextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"title\" of type \"text\"', () => {\r\n field = collection.fields.find(field => field.type === 'text' && field.name === 'title') as TextField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should be localized', () => {\r\n expect(field.localized).toEqual(true);\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"title\" field', async () => {\r\n expect(fieldsDoc.title).toEqual(postData.title);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","localized","toEqual","fieldsDoc","postData","_id","title","doc","post","defaultLocale","headers","Authorization"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,mBAAmB;IAE1B,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,oDAAoD;YACrDa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,UAAUN,MAAMO,IAAI,KAAK;YAChFrB,OAAOc,OAAOQ,WAAW;QAC3B;QAEArB,GAAG,uBAAuB;YACxBD,OAAOc,MAAMS,SAAS,EAAEC,OAAO,CAAC;QAClC;IACF;IAEAzB,SAAS,qBAAqB;QAC5B,IAAI0B;QACJ,IAAIC;QAEJ5B,UAAU;YACR4B,WAAW;gBACTC,KAAK/B;gBACLgC,OAAOhC;YACT;YAEC,CAAA,EAAEiC,KAAKJ,SAAS,EAAE,GAAG,MAAMtB,OAAO2B,IAAI,CAAC,CAAC,CAAC,EAAEzC,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAWwB,aAAa,CAAC,CAAC,EAAEL,UAAU;gBAC/GM,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE7B,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAH,GAAG,qCAAqC;YACtCD,OAAOyB,UAAUG,KAAK,EAAEJ,OAAO,CAACE,SAASE,KAAK;QAChD;IACF;AACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './access';
|
|
2
|
+
export * from './api';
|
|
3
|
+
export * from './collections';
|
|
4
|
+
export * from './decorators';
|
|
5
|
+
export * from './encryption';
|
|
6
|
+
export * from './fields';
|
|
7
|
+
export * from './logger';
|
|
8
|
+
export * from './translations';
|
|
9
|
+
export * from './utils';
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export * from './access';\r\nexport * from './api';\r\nexport * from './collections';\r\nexport * from './decorators';\r\nexport * from './encryption';\r\nexport * from './fields';\r\nexport * from './logger';\r\nexport * from './translations';\r\nexport * from './utils';\r\n\r\n"],"names":[],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,eAAe;AAC7B,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,iBAAiB;AAC/B,cAAc,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/logger/index.ts"],"sourcesContent":["export * from './logger';\r\n\r\n"],"names":[],"mappings":"AAAA,cAAc,WAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/logger/logger.ts"],"sourcesContent":["export function log(...rest: unknown[]): void {\r\n if (process.env.TS_JEST === '1') {\r\n return;\r\n }\r\n console.log(...rest);\r\n // console.log(process.env);\r\n}\r\n"],"names":["log","rest","process","env","TS_JEST","console"],"mappings":"AAAA,OAAO,SAASA,IAAI,GAAGC,IAAe;IACpC,IAAIC,QAAQC,GAAG,CAACC,OAAO,KAAK,KAAK;QAC/B;IACF;IACAC,QAAQL,GAAG,IAAIC;AACf,4BAA4B;AAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/translations/index.ts"],"sourcesContent":["export * from './translations';\r\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}
|