payload 3.0.0-beta.2 → 3.0.0-beta.21
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/dist/admin/RichText.d.ts +18 -10
- package/dist/admin/RichText.d.ts.map +1 -1
- package/dist/admin/RichText.js.map +1 -1
- package/dist/admin/elements/PreviewButton.d.ts +2 -1
- package/dist/admin/elements/PreviewButton.d.ts.map +1 -1
- package/dist/admin/elements/PreviewButton.js.map +1 -1
- package/dist/admin/elements/PublishButton.d.ts +2 -1
- package/dist/admin/elements/PublishButton.d.ts.map +1 -1
- package/dist/admin/elements/PublishButton.js.map +1 -1
- package/dist/admin/elements/SaveButton.d.ts +2 -1
- package/dist/admin/elements/SaveButton.d.ts.map +1 -1
- package/dist/admin/elements/SaveButton.js.map +1 -1
- package/dist/admin/elements/SaveDraftButton.d.ts +2 -1
- package/dist/admin/elements/SaveDraftButton.d.ts.map +1 -1
- package/dist/admin/elements/SaveDraftButton.js.map +1 -1
- package/dist/admin/elements/Tab.d.ts +3 -0
- package/dist/admin/elements/Tab.d.ts.map +1 -1
- package/dist/admin/elements/Tab.js.map +1 -1
- package/dist/admin/elements/WithServerSideProps.d.ts +5 -0
- package/dist/admin/elements/WithServerSideProps.d.ts.map +1 -0
- package/dist/admin/elements/WithServerSideProps.js +3 -0
- package/dist/admin/elements/WithServerSideProps.js.map +1 -0
- package/dist/admin/forms/FieldDescription.d.ts +4 -2
- package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
- package/dist/admin/forms/FieldDescription.js.map +1 -1
- package/dist/admin/forms/RowLabel.d.ts +2 -1
- package/dist/admin/forms/RowLabel.d.ts.map +1 -1
- package/dist/admin/forms/RowLabel.js.map +1 -1
- package/dist/admin/types.d.ts +2 -1
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/types.d.ts +2 -2
- package/dist/admin/views/types.d.ts.map +1 -1
- package/dist/admin/views/types.js.map +1 -1
- package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
- package/dist/auth/baseFields/apiKey.js +6 -4
- package/dist/auth/baseFields/apiKey.js.map +1 -1
- package/dist/auth/cookies.d.ts +16 -4
- package/dist/auth/cookies.d.ts.map +1 -1
- package/dist/auth/cookies.js +45 -14
- package/dist/auth/cookies.js.map +1 -1
- package/dist/auth/defaultAccess.d.ts +2 -2
- package/dist/auth/defaultAccess.d.ts.map +1 -1
- package/dist/auth/defaultAccess.js.map +1 -1
- package/dist/auth/executeAccess.d.ts +2 -2
- package/dist/auth/executeAccess.d.ts.map +1 -1
- package/dist/auth/executeAccess.js.map +1 -1
- package/dist/auth/executeAuthStrategies.d.ts +3 -2
- package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
- package/dist/auth/executeAuthStrategies.js.map +1 -1
- package/dist/auth/getAccessResults.d.ts +2 -2
- package/dist/auth/getAccessResults.d.ts.map +1 -1
- package/dist/auth/getAccessResults.js +1 -1
- package/dist/auth/getAccessResults.js.map +1 -1
- package/dist/auth/getFieldsToSign.d.ts +2 -2
- package/dist/auth/getFieldsToSign.d.ts.map +1 -1
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/operations/access.d.ts +2 -2
- package/dist/auth/operations/access.d.ts.map +1 -1
- package/dist/auth/operations/access.js.map +1 -1
- package/dist/auth/operations/auth.d.ts +5 -4
- package/dist/auth/operations/auth.d.ts.map +1 -1
- package/dist/auth/operations/auth.js.map +1 -1
- package/dist/auth/operations/forgotPassword.d.ts +2 -2
- package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/forgotPassword.js +6 -5
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- package/dist/auth/operations/init.d.ts +2 -2
- package/dist/auth/operations/init.d.ts.map +1 -1
- package/dist/auth/operations/init.js.map +1 -1
- package/dist/auth/operations/local/auth.js.map +1 -1
- package/dist/auth/operations/local/forgotPassword.d.ts +2 -2
- package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/local/forgotPassword.js.map +1 -1
- package/dist/auth/operations/local/login.d.ts +2 -2
- package/dist/auth/operations/local/login.d.ts.map +1 -1
- package/dist/auth/operations/local/login.js.map +1 -1
- package/dist/auth/operations/local/resetPassword.d.ts +2 -2
- package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/local/resetPassword.js.map +1 -1
- package/dist/auth/operations/local/unlock.d.ts +2 -2
- package/dist/auth/operations/local/unlock.d.ts.map +1 -1
- package/dist/auth/operations/local/unlock.js.map +1 -1
- package/dist/auth/operations/local/verifyEmail.d.ts +2 -2
- package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
- package/dist/auth/operations/local/verifyEmail.js.map +1 -1
- package/dist/auth/operations/login.d.ts +2 -2
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +17 -1
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/logout.d.ts +2 -2
- package/dist/auth/operations/logout.d.ts.map +1 -1
- package/dist/auth/operations/logout.js.map +1 -1
- package/dist/auth/operations/me.d.ts +2 -2
- package/dist/auth/operations/me.d.ts.map +1 -1
- package/dist/auth/operations/me.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts +2 -2
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/registerFirstUser.d.ts +2 -2
- package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
- package/dist/auth/operations/registerFirstUser.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts +2 -2
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/operations/unlock.d.ts +2 -2
- package/dist/auth/operations/unlock.d.ts.map +1 -1
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/auth/operations/verifyEmail.d.ts +2 -2
- package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
- package/dist/auth/operations/verifyEmail.js.map +1 -1
- package/dist/auth/sendVerificationEmail.d.ts +7 -8
- package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
- package/dist/auth/sendVerificationEmail.js +7 -7
- package/dist/auth/sendVerificationEmail.js.map +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
- package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
- package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
- package/dist/auth/strategies/local/register.d.ts +2 -2
- package/dist/auth/strategies/local/register.d.ts.map +1 -1
- package/dist/auth/strategies/local/register.js.map +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.d.ts +2 -2
- package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
- package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
- package/dist/auth/types.d.ts +5 -5
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/bin/loader/index.d.ts.map +1 -1
- package/dist/bin/loader/index.js +6 -1
- package/dist/bin/loader/index.js.map +1 -1
- package/dist/bin/loader/resolveOriginalPath.d.ts +10 -0
- package/dist/bin/loader/resolveOriginalPath.d.ts.map +1 -0
- package/dist/bin/loader/resolveOriginalPath.js +32 -0
- package/dist/bin/loader/resolveOriginalPath.js.map +1 -0
- package/dist/collections/config/client.d.ts +17 -13
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +3 -1
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts +6 -5
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +1 -0
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts +2 -3
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +7 -4
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/schema.d.ts.map +1 -1
- package/dist/collections/config/schema.js +3 -0
- package/dist/collections/config/schema.js.map +1 -1
- package/dist/collections/config/types.d.ts +33 -23
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/dataloader.d.ts.map +1 -1
- package/dist/collections/dataloader.js +4 -6
- package/dist/collections/dataloader.js.map +1 -1
- package/dist/collections/operations/count.d.ts +13 -0
- package/dist/collections/operations/count.d.ts.map +1 -0
- package/dist/collections/operations/count.js +75 -0
- package/dist/collections/operations/count.js.map +1 -0
- package/dist/collections/operations/create.d.ts +2 -2
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +4 -8
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts +2 -2
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts +2 -2
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/docAccess.d.ts +2 -2
- package/dist/collections/operations/docAccess.d.ts.map +1 -1
- package/dist/collections/operations/docAccess.js.map +1 -1
- package/dist/collections/operations/duplicate.d.ts +2 -2
- package/dist/collections/operations/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/duplicate.js.map +1 -1
- package/dist/collections/operations/find.d.ts +2 -2
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/find.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts +2 -2
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts +2 -2
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.d.ts +2 -2
- package/dist/collections/operations/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/local/count.d.ts +20 -0
- package/dist/collections/operations/local/count.d.ts.map +1 -0
- package/dist/collections/operations/local/count.js +19 -0
- package/dist/collections/operations/local/count.js.map +1 -0
- package/dist/collections/operations/local/create.d.ts +4 -4
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +4 -4
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +4 -4
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.d.ts +4 -4
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.d.ts +4 -4
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +4 -4
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.d.ts +4 -4
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/index.d.ts +2 -0
- package/dist/collections/operations/local/index.d.ts.map +1 -1
- package/dist/collections/operations/local/index.js +2 -0
- package/dist/collections/operations/local/index.js.map +1 -1
- package/dist/collections/operations/local/restoreVersion.d.ts +4 -4
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +4 -4
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts +2 -2
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.d.ts +2 -2
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +3 -3
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +2 -2
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +2 -2
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utils.d.ts +8 -2
- package/dist/collections/operations/utils.d.ts.map +1 -1
- package/dist/collections/operations/utils.js.map +1 -1
- package/dist/config/build.d.ts.map +1 -1
- package/dist/config/build.js +3 -4
- package/dist/config/build.js.map +1 -1
- package/dist/config/client.d.ts +2 -1
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +2 -1
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/find.d.ts.map +1 -1
- package/dist/config/find.js +20 -9
- package/dist/config/find.js.map +1 -1
- package/dist/config/sanitize.d.ts +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +28 -7
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +2 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/types.d.ts +40 -54
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +3 -12
- package/dist/config/types.js.map +1 -1
- package/dist/database/migrations/migrate.js.map +1 -1
- package/dist/database/migrations/migrateDown.js.map +1 -1
- package/dist/database/migrations/migrateRefresh.js.map +1 -1
- package/dist/database/migrations/migrateReset.js.map +1 -1
- package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -2
- package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.d.ts +2 -2
- package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
- package/dist/database/types.d.ts +29 -19
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/email/consoleEmailAdapter.d.ts +3 -0
- package/dist/email/consoleEmailAdapter.d.ts.map +1 -0
- package/dist/email/consoleEmailAdapter.js +17 -0
- package/dist/email/consoleEmailAdapter.js.map +1 -0
- package/dist/email/defaults.d.ts +2 -2
- package/dist/email/defaults.d.ts.map +1 -1
- package/dist/email/defaults.js +3 -3
- package/dist/email/defaults.js.map +1 -1
- package/dist/email/getStringifiedToAddress.d.ts +3 -0
- package/dist/email/getStringifiedToAddress.d.ts.map +1 -0
- package/dist/email/getStringifiedToAddress.js +20 -0
- package/dist/email/getStringifiedToAddress.js.map +1 -0
- package/dist/email/sendEmail.d.ts +3 -2
- package/dist/email/sendEmail.d.ts.map +1 -1
- package/dist/email/sendEmail.js +8 -4
- package/dist/email/sendEmail.js.map +1 -1
- package/dist/email/types.d.ts +26 -18
- package/dist/email/types.d.ts.map +1 -1
- package/dist/email/types.js +5 -1
- package/dist/email/types.js.map +1 -1
- package/dist/errors/APIError.d.ts +2 -2
- package/dist/errors/APIError.d.ts.map +1 -1
- package/dist/errors/APIError.js +1 -2
- package/dist/errors/APIError.js.map +1 -1
- package/dist/errors/AuthenticationError.d.ts +2 -3
- package/dist/errors/AuthenticationError.d.ts.map +1 -1
- package/dist/errors/AuthenticationError.js +2 -3
- package/dist/errors/AuthenticationError.js.map +1 -1
- package/dist/errors/DuplicateCollection.d.ts +2 -3
- package/dist/errors/DuplicateCollection.d.ts.map +1 -1
- package/dist/errors/DuplicateCollection.js +2 -3
- package/dist/errors/DuplicateCollection.js.map +1 -1
- package/dist/errors/DuplicateFieldName.d.ts +2 -3
- package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
- package/dist/errors/DuplicateFieldName.js +2 -3
- package/dist/errors/DuplicateFieldName.js.map +1 -1
- package/dist/errors/DuplicateGlobal.d.ts +2 -3
- package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
- package/dist/errors/DuplicateGlobal.js +2 -3
- package/dist/errors/DuplicateGlobal.js.map +1 -1
- package/dist/errors/ErrorDeletingFile.d.ts +2 -3
- package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
- package/dist/errors/ErrorDeletingFile.js +2 -3
- package/dist/errors/ErrorDeletingFile.js.map +1 -1
- package/dist/errors/FileRetrievalError.d.ts +6 -0
- package/dist/errors/FileRetrievalError.d.ts.map +1 -0
- package/dist/errors/FileRetrievalError.js +13 -0
- package/dist/errors/FileRetrievalError.js.map +1 -0
- package/dist/errors/FileUploadError.d.ts +2 -3
- package/dist/errors/FileUploadError.d.ts.map +1 -1
- package/dist/errors/FileUploadError.js +2 -3
- package/dist/errors/FileUploadError.js.map +1 -1
- package/dist/errors/Forbidden.d.ts +2 -3
- package/dist/errors/Forbidden.d.ts.map +1 -1
- package/dist/errors/Forbidden.js +2 -3
- package/dist/errors/Forbidden.js.map +1 -1
- package/dist/errors/InvalidConfiguration.d.ts +2 -3
- package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
- package/dist/errors/InvalidConfiguration.js +2 -3
- package/dist/errors/InvalidConfiguration.js.map +1 -1
- package/dist/errors/InvalidFieldName.d.ts +2 -3
- package/dist/errors/InvalidFieldName.d.ts.map +1 -1
- package/dist/errors/InvalidFieldName.js +2 -3
- package/dist/errors/InvalidFieldName.js.map +1 -1
- package/dist/errors/InvalidFieldRelationship.d.ts +2 -3
- package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
- package/dist/errors/InvalidFieldRelationship.js +2 -3
- package/dist/errors/InvalidFieldRelationship.js.map +1 -1
- package/dist/errors/InvalidSchema.d.ts +2 -3
- package/dist/errors/InvalidSchema.d.ts.map +1 -1
- package/dist/errors/InvalidSchema.js +2 -3
- package/dist/errors/InvalidSchema.js.map +1 -1
- package/dist/errors/LockedAuth.d.ts +2 -3
- package/dist/errors/LockedAuth.d.ts.map +1 -1
- package/dist/errors/LockedAuth.js +2 -3
- package/dist/errors/LockedAuth.js.map +1 -1
- package/dist/errors/MissingCollectionLabel.d.ts +2 -3
- package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
- package/dist/errors/MissingCollectionLabel.js +2 -3
- package/dist/errors/MissingCollectionLabel.js.map +1 -1
- package/dist/errors/MissingEditorProp.d.ts +2 -3
- package/dist/errors/MissingEditorProp.d.ts.map +1 -1
- package/dist/errors/MissingEditorProp.js +2 -3
- package/dist/errors/MissingEditorProp.js.map +1 -1
- package/dist/errors/MissingFieldInputOptions.d.ts +2 -3
- package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
- package/dist/errors/MissingFieldInputOptions.js +2 -3
- package/dist/errors/MissingFieldInputOptions.js.map +1 -1
- package/dist/errors/MissingFieldType.d.ts +2 -3
- package/dist/errors/MissingFieldType.d.ts.map +1 -1
- package/dist/errors/MissingFieldType.js +2 -3
- package/dist/errors/MissingFieldType.js.map +1 -1
- package/dist/errors/MissingFile.d.ts +2 -3
- package/dist/errors/MissingFile.d.ts.map +1 -1
- package/dist/errors/MissingFile.js +2 -3
- package/dist/errors/MissingFile.js.map +1 -1
- package/dist/errors/NotFound.d.ts +2 -3
- package/dist/errors/NotFound.d.ts.map +1 -1
- package/dist/errors/NotFound.js +2 -3
- package/dist/errors/NotFound.js.map +1 -1
- package/dist/errors/QueryError.d.ts +2 -3
- package/dist/errors/QueryError.d.ts.map +1 -1
- package/dist/errors/QueryError.js +2 -3
- package/dist/errors/QueryError.js.map +1 -1
- package/dist/errors/TimestampsRequired.d.ts +2 -3
- package/dist/errors/TimestampsRequired.d.ts.map +1 -1
- package/dist/errors/TimestampsRequired.js +2 -3
- package/dist/errors/TimestampsRequired.js.map +1 -1
- package/dist/errors/UnathorizedError.d.ts +2 -3
- package/dist/errors/UnathorizedError.d.ts.map +1 -1
- package/dist/errors/UnathorizedError.js +2 -3
- package/dist/errors/UnathorizedError.js.map +1 -1
- package/dist/errors/ValidationError.d.ts +2 -3
- package/dist/errors/ValidationError.d.ts.map +1 -1
- package/dist/errors/ValidationError.js +2 -3
- package/dist/errors/ValidationError.js.map +1 -1
- package/dist/errors/index.d.ts +20 -19
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +20 -19
- package/dist/errors/index.js.map +1 -1
- package/dist/exports/auth.d.ts +1 -0
- package/dist/exports/auth.d.ts.map +1 -1
- package/dist/exports/auth.js +1 -0
- package/dist/exports/auth.js.map +1 -1
- package/dist/exports/database.d.ts +1 -1
- package/dist/exports/database.d.ts.map +1 -1
- package/dist/exports/database.js.map +1 -1
- package/dist/exports/i18n.d.ts +2 -0
- package/dist/exports/i18n.d.ts.map +1 -0
- package/dist/exports/i18n.js +3 -0
- package/dist/exports/i18n.js.map +1 -0
- package/dist/exports/node.d.ts +3 -0
- package/dist/exports/node.d.ts.map +1 -1
- package/dist/exports/node.js +3 -1
- package/dist/exports/node.js.map +1 -1
- package/dist/exports/operations.d.ts +1 -0
- package/dist/exports/operations.d.ts.map +1 -1
- package/dist/exports/operations.js +1 -0
- package/dist/exports/operations.js.map +1 -1
- package/dist/exports/types.d.ts +1 -0
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js.map +1 -1
- package/dist/exports/utilities.d.ts +7 -2
- package/dist/exports/utilities.d.ts.map +1 -1
- package/dist/exports/utilities.js +7 -3
- package/dist/exports/utilities.js.map +1 -1
- package/dist/fields/config/client.d.ts +129 -104
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +2 -1
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts +7 -2
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +61 -33
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitize.spec.js +76 -82
- package/dist/fields/config/sanitize.spec.js.map +1 -1
- package/dist/fields/config/schema.d.ts.map +1 -1
- package/dist/fields/config/schema.js +7 -1
- package/dist/fields/config/schema.js.map +1 -1
- package/dist/fields/config/types.d.ts +69 -57
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/getDefaultValue.d.ts +2 -2
- package/dist/fields/getDefaultValue.d.ts.map +1 -1
- package/dist/fields/getDefaultValue.js.map +1 -1
- package/dist/fields/hooks/afterChange/index.d.ts +2 -2
- package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/index.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.d.ts +2 -2
- package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.d.ts +2 -2
- package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts +2 -2
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +5 -2
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +7 -16
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +2 -2
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +5 -2
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeChange/index.d.ts +2 -2
- package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/index.js.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts +2 -2
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +3 -1
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +14 -2
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.d.ts +2 -2
- package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts +8 -2
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +2 -0
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +8 -2
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
- package/dist/fields/validations.d.ts +6 -4
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +52 -10
- package/dist/fields/validations.js.map +1 -1
- package/dist/fields/validations.spec.js +6 -1
- package/dist/fields/validations.spec.js.map +1 -1
- package/dist/globals/config/client.d.ts +1 -1
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/client.js +2 -1
- package/dist/globals/config/client.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts +2 -3
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +36 -35
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/config/schema.d.ts.map +1 -1
- package/dist/globals/config/schema.js +1 -0
- package/dist/globals/config/schema.js.map +1 -1
- package/dist/globals/config/types.d.ts +10 -9
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/docAccess.d.ts +2 -2
- package/dist/globals/operations/docAccess.d.ts.map +1 -1
- package/dist/globals/operations/docAccess.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts +2 -3
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts +2 -2
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.d.ts +2 -2
- package/dist/globals/operations/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +4 -4
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +4 -4
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.d.ts +4 -4
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.d.ts +4 -4
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +4 -4
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/restoreVersion.d.ts +2 -2
- package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/restoreVersion.js.map +1 -1
- package/dist/globals/operations/update.d.ts +2 -2
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.d.ts +17 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -14
- package/dist/index.js.map +1 -1
- package/dist/preferences/deleteUserPreferences.d.ts +2 -2
- package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
- package/dist/preferences/deleteUserPreferences.js.map +1 -1
- package/dist/preferences/operations/delete.js +2 -2
- package/dist/preferences/operations/delete.js.map +1 -1
- package/dist/preferences/operations/update.d.ts +1 -1
- package/dist/preferences/operations/update.js +1 -1
- package/dist/preferences/operations/update.js.map +1 -1
- package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
- package/dist/preferences/requestHandlers/delete.js +18 -5
- package/dist/preferences/requestHandlers/delete.js.map +1 -1
- package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
- package/dist/preferences/requestHandlers/findOne.js +18 -5
- package/dist/preferences/requestHandlers/findOne.js.map +1 -1
- package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
- package/dist/preferences/requestHandlers/update.js +19 -7
- package/dist/preferences/requestHandlers/update.js.map +1 -1
- package/dist/preferences/types.d.ts +3 -4
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/types/index.d.ts +21 -17
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.d.ts +2 -2
- package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/docWithFilenameExists.d.ts +2 -2
- package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
- package/dist/uploads/docWithFilenameExists.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts +2 -2
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +5 -4
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getExternalFile.d.ts +5 -4
- package/dist/uploads/getExternalFile.d.ts.map +1 -1
- package/dist/uploads/getExternalFile.js +10 -6
- package/dist/uploads/getExternalFile.js.map +1 -1
- package/dist/uploads/getFileByPath.d.ts +2 -2
- package/dist/uploads/getFileByPath.d.ts.map +1 -1
- package/dist/uploads/getFileByPath.js.map +1 -1
- package/dist/uploads/getImageSize.d.ts +2 -2
- package/dist/uploads/getImageSize.d.ts.map +1 -1
- package/dist/uploads/getImageSize.js +19 -5
- package/dist/uploads/getImageSize.js.map +1 -1
- package/dist/uploads/getSafeFilename.d.ts +2 -2
- package/dist/uploads/getSafeFilename.d.ts.map +1 -1
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/uploads/imageResizer.d.ts +3 -3
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js.map +1 -1
- package/dist/uploads/tempFile.d.ts +7 -0
- package/dist/uploads/tempFile.d.ts.map +1 -0
- package/dist/uploads/tempFile.js +39 -0
- package/dist/uploads/tempFile.js.map +1 -0
- package/dist/uploads/types.d.ts +12 -2
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/unlinkTempFiles.d.ts +2 -2
- package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
- package/dist/uploads/unlinkTempFiles.js.map +1 -1
- package/dist/uploads/uploadFiles.d.ts +2 -2
- package/dist/uploads/uploadFiles.d.ts.map +1 -1
- package/dist/uploads/uploadFiles.js.map +1 -1
- package/dist/utilities/checkDuplicateCollections.js +1 -1
- package/dist/utilities/checkDuplicateCollections.js.map +1 -1
- package/dist/utilities/commitTransaction.d.ts +2 -2
- package/dist/utilities/commitTransaction.d.ts.map +1 -1
- package/dist/utilities/commitTransaction.js.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +56 -1
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/configToJSONSchema.spec.js +2 -2
- package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
- package/dist/utilities/createLocalReq.d.ts +3 -3
- package/dist/utilities/createLocalReq.d.ts.map +1 -1
- package/dist/utilities/createLocalReq.js +4 -2
- package/dist/utilities/createLocalReq.js.map +1 -1
- package/dist/utilities/getEntityPolicies.d.ts +2 -2
- package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
- package/dist/utilities/getEntityPolicies.js.map +1 -1
- package/dist/utilities/importWithoutClientFiles.d.ts.map +1 -1
- package/dist/utilities/importWithoutClientFiles.js +7 -4
- package/dist/utilities/importWithoutClientFiles.js.map +1 -1
- package/dist/utilities/initTransaction.d.ts +2 -2
- package/dist/utilities/initTransaction.d.ts.map +1 -1
- package/dist/utilities/initTransaction.js.map +1 -1
- package/dist/utilities/isEntityHidden.d.ts +2 -2
- package/dist/utilities/isEntityHidden.d.ts.map +1 -1
- package/dist/utilities/isEntityHidden.js.map +1 -1
- package/dist/utilities/isReactComponent.d.ts +2 -0
- package/dist/utilities/isReactComponent.d.ts.map +1 -1
- package/dist/utilities/isReactComponent.js +8 -2
- package/dist/utilities/isReactComponent.js.map +1 -1
- package/dist/utilities/killTransaction.d.ts +2 -2
- package/dist/utilities/killTransaction.d.ts.map +1 -1
- package/dist/utilities/killTransaction.js.map +1 -1
- package/dist/utilities/parseCookies.js +1 -1
- package/dist/utilities/parseCookies.js.map +1 -1
- package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
- package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
- package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
- package/dist/utilities/telemetry/index.d.ts +9 -0
- package/dist/utilities/telemetry/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/index.js +62 -14
- package/dist/utilities/telemetry/index.js.map +1 -1
- package/dist/versions/deleteCollectionVersions.d.ts +2 -2
- package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
- package/dist/versions/deleteCollectionVersions.js.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +2 -2
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/enforceMaxVersions.d.ts +2 -2
- package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts +2 -2
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts +2 -2
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/saveVersion.d.ts +2 -2
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +1 -1
- package/dist/versions/saveVersion.js.map +1 -1
- package/package.json +71 -65
- package/auth.d.ts +0 -6
- package/auth.js +0 -6
- package/config.d.ts +0 -14
- package/config.js +0 -14
- package/database.d.ts +0 -23
- package/database.js +0 -22
- package/dist/email/build.d.ts +0 -5
- package/dist/email/build.d.ts.map +0 -1
- package/dist/email/build.js +0 -63
- package/dist/email/build.js.map +0 -1
- package/dist/email/mockHandler.d.ts +0 -5
- package/dist/email/mockHandler.d.ts.map +0 -1
- package/dist/email/mockHandler.js +0 -24
- package/dist/email/mockHandler.js.map +0 -1
- package/dist/utilities/getIDType.d.ts +0 -4
- package/dist/utilities/getIDType.d.ts.map +0 -1
- package/dist/utilities/getIDType.js +0 -8
- package/dist/utilities/getIDType.js.map +0 -1
- package/errors.d.ts +0 -2
- package/errors.js +0 -3
- package/node.d.ts +0 -3
- package/node.js +0 -4
- package/operations.d.ts +0 -30
- package/operations.js +0 -31
- package/src/index.ts +0 -486
- package/types.d.ts +0 -17
- package/types.js +0 -5
- package/uploads.d.ts +0 -2
- package/uploads.js +0 -3
- package/utilities.d.ts +0 -32
- package/utilities.js +0 -33
- package/versions.d.ts +0 -9
- package/versions.js +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport type { Field, FieldBase } from '../../fields/config/types.js'\n\nexport type ClientFieldConfig = Omit<Field, 'access' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldProperties =\n | 'editor' // This is a `richText` only property\n | 'filterOptions' // This is a `relationship` and `upload` only property\n | 'label'\n | keyof Pick<FieldBase, 'access' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n 'components' | 'condition' | 'description'\n>\n\nexport const createClientFieldConfig = ({\n field: incomingField,\n t,\n}: {\n field: Field\n t: TFunction\n}) => {\n const field = { ...incomingField }\n\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'label',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n // are all handled separately\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in field) {\n delete field[key]\n }\n })\n\n if ('options' in field && Array.isArray(field.options)) {\n field.options = field.options.map((option) => {\n if (typeof option === 'object' && typeof option.label === 'function') {\n return {\n label: option.label({ t }),\n value: option.value,\n }\n }\n\n return option\n })\n }\n\n if ('fields' in field) {\n field.fields = createClientFieldConfigs({ fields: field.fields, t })\n }\n\n if ('blocks' in field) {\n field.blocks = field.blocks.map((block) => {\n const sanitized = { ...block }\n sanitized.fields = createClientFieldConfigs({ fields: sanitized.fields, t })\n return sanitized\n })\n }\n\n if ('tabs' in field) {\n // @ts-expect-error\n field.tabs = field.tabs.map((tab) => createClientFieldConfig({ field: tab, t }))\n }\n\n if ('admin' in field) {\n field.admin = { ...field.admin }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'components',\n 'condition',\n 'description',\n ]\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in field.admin) {\n delete field.admin[key]\n }\n })\n }\n\n return field\n}\n\nexport const createClientFieldConfigs = ({\n fields,\n t,\n}: {\n fields: Field[]\n t: TFunction\n}): Field[] => fields.map((field) => createClientFieldConfig({ field, t }))\n"],"names":["createClientFieldConfig","field","incomingField","t","serverOnlyFieldProperties","forEach","key","Array","isArray","options","map","option","label","value","fields","createClientFieldConfigs","blocks","block","sanitized","tabs","tab","admin","serverOnlyFieldAdminProperties"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport type { Field, FieldBase } from '../../fields/config/types.js'\n\nexport type ClientFieldConfig = Omit<Field, 'access' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldProperties =\n | 'editor' // This is a `richText` only property\n | 'filterOptions' // This is a `relationship` and `upload` only property\n | 'label'\n | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n 'components' | 'condition' | 'description'\n>\n\nexport const createClientFieldConfig = ({\n field: incomingField,\n t,\n}: {\n field: Field\n t: TFunction\n}) => {\n const field = { ...incomingField }\n\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'label',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n 'custom',\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n // are all handled separately\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in field) {\n delete field[key]\n }\n })\n\n if ('options' in field && Array.isArray(field.options)) {\n field.options = field.options.map((option) => {\n if (typeof option === 'object' && typeof option.label === 'function') {\n return {\n label: option.label({ t }),\n value: option.value,\n }\n }\n\n return option\n })\n }\n\n if ('fields' in field) {\n field.fields = createClientFieldConfigs({ fields: field.fields, t })\n }\n\n if ('blocks' in field) {\n field.blocks = field.blocks.map((block) => {\n const sanitized = { ...block }\n sanitized.fields = createClientFieldConfigs({ fields: sanitized.fields, t })\n return sanitized\n })\n }\n\n if ('tabs' in field) {\n // @ts-expect-error\n field.tabs = field.tabs.map((tab) => createClientFieldConfig({ field: tab, t }))\n }\n\n if ('admin' in field) {\n field.admin = { ...field.admin }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'components',\n 'condition',\n 'description',\n ]\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in field.admin) {\n delete field.admin[key]\n }\n })\n }\n\n return field\n}\n\nexport const createClientFieldConfigs = ({\n fields,\n t,\n}: {\n fields: Field[]\n t: TFunction\n}): Field[] => fields.map((field) => createClientFieldConfig({ field, t }))\n"],"names":["createClientFieldConfig","field","incomingField","t","serverOnlyFieldProperties","forEach","key","Array","isArray","options","map","option","label","value","fields","createClientFieldConfigs","blocks","block","sanitized","tabs","tab","admin","serverOnlyFieldAdminProperties"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAiBA,OAAO,MAAMA,0BAA0B,CAAC,EACtCC,OAAOC,aAAa,EACpBC,CAAC,EAIF;IACC,MAAMF,QAAQ;QAAE,GAAGC,aAAa;IAAC;IAEjC,MAAME,4BAAkE;QACtE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KAMD;IAEDA,0BAA0BC,OAAO,CAAC,CAACC;QACjC,IAAIA,OAAOL,OAAO;YAChB,OAAOA,KAAK,CAACK,IAAI;QACnB;IACF;IAEA,IAAI,aAAaL,SAASM,MAAMC,OAAO,CAACP,MAAMQ,OAAO,GAAG;QACtDR,MAAMQ,OAAO,GAAGR,MAAMQ,OAAO,CAACC,GAAG,CAAC,CAACC;YACjC,IAAI,OAAOA,WAAW,YAAY,OAAOA,OAAOC,KAAK,KAAK,YAAY;gBACpE,OAAO;oBACLA,OAAOD,OAAOC,KAAK,CAAC;wBAAET;oBAAE;oBACxBU,OAAOF,OAAOE,KAAK;gBACrB;YACF;YAEA,OAAOF;QACT;IACF;IAEA,IAAI,YAAYV,OAAO;QACrBA,MAAMa,MAAM,GAAGC,yBAAyB;YAAED,QAAQb,MAAMa,MAAM;YAAEX;QAAE;IACpE;IAEA,IAAI,YAAYF,OAAO;QACrBA,MAAMe,MAAM,GAAGf,MAAMe,MAAM,CAACN,GAAG,CAAC,CAACO;YAC/B,MAAMC,YAAY;gBAAE,GAAGD,KAAK;YAAC;YAC7BC,UAAUJ,MAAM,GAAGC,yBAAyB;gBAAED,QAAQI,UAAUJ,MAAM;gBAAEX;YAAE;YAC1E,OAAOe;QACT;IACF;IAEA,IAAI,UAAUjB,OAAO;QACnB,mBAAmB;QACnBA,MAAMkB,IAAI,GAAGlB,MAAMkB,IAAI,CAACT,GAAG,CAAC,CAACU,MAAQpB,wBAAwB;gBAAEC,OAAOmB;gBAAKjB;YAAE;IAC/E;IAEA,IAAI,WAAWF,OAAO;QACpBA,MAAMoB,KAAK,GAAG;YAAE,GAAGpB,MAAMoB,KAAK;QAAC;QAE/B,MAAMC,iCAA4E;YAChF;YACA;YACA;SACD;QAEDA,+BAA+BjB,OAAO,CAAC,CAACC;YACtC,IAAIA,OAAOL,MAAMoB,KAAK,EAAE;gBACtB,OAAOpB,MAAMoB,KAAK,CAACf,IAAI;YACzB;QACF;IACF;IAEA,OAAOL;AACT,EAAC;AAED,OAAO,MAAMc,2BAA2B,CAAC,EACvCD,MAAM,EACNX,CAAC,EAIF,GAAcW,OAAOJ,GAAG,CAAC,CAACT,QAAUD,wBAAwB;YAAEC;YAAOE;QAAE,IAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Config } from '../../config/types.js';
|
|
1
|
+
import type { Config, SanitizedConfig } from '../../config/types.js';
|
|
2
2
|
import type { Field } from './types.js';
|
|
3
3
|
type Args = {
|
|
4
4
|
config: Config;
|
|
@@ -10,12 +10,17 @@ type Args = {
|
|
|
10
10
|
* @default false
|
|
11
11
|
*/
|
|
12
12
|
requireFieldLevelRichTextEditor?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises
|
|
15
|
+
* so that you can sanitize them together, after the config has been sanitized.
|
|
16
|
+
*/
|
|
17
|
+
richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>;
|
|
13
18
|
/**
|
|
14
19
|
* If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.
|
|
15
20
|
* This validation will be skipped if validRelationships is null.
|
|
16
21
|
*/
|
|
17
22
|
validRelationships: null | string[];
|
|
18
23
|
};
|
|
19
|
-
export declare const sanitizeFields: ({ config, existingFieldNames, fields, requireFieldLevelRichTextEditor, validRelationships, }: Args) => Field[]
|
|
24
|
+
export declare const sanitizeFields: ({ config, existingFieldNames, fields, requireFieldLevelRichTextEditor, richTextSanitizationPromises, validRelationships, }: Args) => Promise<Field[]>;
|
|
20
25
|
export {};
|
|
21
26
|
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAgBvC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhF;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,+HAOxB,IAAI,KAAG,QAAQ,KAAK,EAAE,CAoMxB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import MissingEditorProp from '../../errors/MissingEditorProp.js';
|
|
1
|
+
import { MissingEditorProp } from '../../errors/MissingEditorProp.js';
|
|
2
2
|
import { DuplicateFieldName, InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors/index.js';
|
|
3
3
|
import { formatLabels, toWords } from '../../utilities/formatLabels.js';
|
|
4
4
|
import { baseBlockFields } from '../baseFields/baseBlockFields.js';
|
|
@@ -6,25 +6,15 @@ import { baseIDField } from '../baseFields/baseIDField.js';
|
|
|
6
6
|
import { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js';
|
|
7
7
|
import validations from '../validations.js';
|
|
8
8
|
import { fieldAffectsData, tabHasName } from './types.js';
|
|
9
|
-
export const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, requireFieldLevelRichTextEditor = false, validRelationships })=>{
|
|
9
|
+
export const sanitizeFields = async ({ config, existingFieldNames = new Set(), fields, requireFieldLevelRichTextEditor = false, richTextSanitizationPromises, validRelationships })=>{
|
|
10
10
|
if (!fields) return [];
|
|
11
|
-
|
|
12
|
-
const field =
|
|
13
|
-
...unsanitizedField
|
|
14
|
-
};
|
|
11
|
+
for(let i = 0; i < fields.length; i++){
|
|
12
|
+
const field = fields[i];
|
|
15
13
|
if (!field.type) throw new MissingFieldType(field);
|
|
16
14
|
// assert that field names do not contain forbidden characters
|
|
17
15
|
if (fieldAffectsData(field) && field.name.includes('.')) {
|
|
18
16
|
throw new InvalidFieldName(field, field.name);
|
|
19
17
|
}
|
|
20
|
-
// Make sure that the richText field has an editor
|
|
21
|
-
if (field.type === 'richText' && !field.editor) {
|
|
22
|
-
if (config.editor && !requireFieldLevelRichTextEditor) {
|
|
23
|
-
field.editor = config.editor;
|
|
24
|
-
} else {
|
|
25
|
-
throw new MissingEditorProp(field);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
18
|
// Auto-label
|
|
29
19
|
if ('name' in field && field.name && typeof field.label !== 'object' && typeof field.label !== 'string' && field.label !== false) {
|
|
30
20
|
field.label = toWords(field.name);
|
|
@@ -94,51 +84,89 @@ export const sanitizeFields = ({ config, existingFieldNames = new Set(), fields,
|
|
|
94
84
|
if (!field.admin) {
|
|
95
85
|
field.admin = {};
|
|
96
86
|
}
|
|
87
|
+
// Make sure that the richText field has an editor
|
|
88
|
+
if (field.type === 'richText') {
|
|
89
|
+
const sanitizeRichText = async (_config)=>{
|
|
90
|
+
if (!field.editor) {
|
|
91
|
+
if (_config.editor && !requireFieldLevelRichTextEditor) {
|
|
92
|
+
// config.editor should be sanitized at this point
|
|
93
|
+
field.editor = _config.editor;
|
|
94
|
+
} else {
|
|
95
|
+
throw new MissingEditorProp(field);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (typeof field.editor === 'function') {
|
|
99
|
+
field.editor = await field.editor({
|
|
100
|
+
config: _config
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Add editor adapter hooks to field hooks
|
|
104
|
+
if (!field.hooks) field.hooks = {};
|
|
105
|
+
const mergeHooks = (hookName)=>{
|
|
106
|
+
if (typeof field.editor === 'function') return;
|
|
107
|
+
if (field.editor?.hooks?.[hookName]?.length) {
|
|
108
|
+
field.hooks[hookName] = field.hooks[hookName] ? field.hooks[hookName].concat(field.editor.hooks[hookName]) : [
|
|
109
|
+
...field.editor.hooks[hookName]
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
mergeHooks('afterRead');
|
|
114
|
+
mergeHooks('afterChange');
|
|
115
|
+
mergeHooks('beforeChange');
|
|
116
|
+
mergeHooks('beforeValidate');
|
|
117
|
+
mergeHooks('beforeDuplicate');
|
|
118
|
+
};
|
|
119
|
+
if (richTextSanitizationPromises) {
|
|
120
|
+
richTextSanitizationPromises.push(sanitizeRichText);
|
|
121
|
+
} else {
|
|
122
|
+
await sanitizeRichText(config);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
97
125
|
if ('fields' in field && field.fields) {
|
|
98
|
-
field.fields = sanitizeFields({
|
|
126
|
+
field.fields = await sanitizeFields({
|
|
99
127
|
config,
|
|
100
128
|
existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,
|
|
101
129
|
fields: field.fields,
|
|
102
130
|
requireFieldLevelRichTextEditor,
|
|
131
|
+
richTextSanitizationPromises,
|
|
103
132
|
validRelationships
|
|
104
133
|
});
|
|
105
134
|
}
|
|
106
135
|
if (field.type === 'tabs') {
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
...tab
|
|
110
|
-
};
|
|
136
|
+
for(let j = 0; j < field.tabs.length; j++){
|
|
137
|
+
const tab = field.tabs[j];
|
|
111
138
|
if (tabHasName(tab) && typeof tab.label === 'undefined') {
|
|
112
|
-
|
|
139
|
+
tab.label = toWords(tab.name);
|
|
113
140
|
}
|
|
114
|
-
|
|
141
|
+
tab.fields = await sanitizeFields({
|
|
115
142
|
config,
|
|
116
143
|
existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,
|
|
117
144
|
fields: tab.fields,
|
|
118
145
|
requireFieldLevelRichTextEditor,
|
|
146
|
+
richTextSanitizationPromises,
|
|
119
147
|
validRelationships
|
|
120
148
|
});
|
|
121
|
-
|
|
122
|
-
}
|
|
149
|
+
field.tabs[j] = tab;
|
|
150
|
+
}
|
|
123
151
|
}
|
|
124
152
|
if ('blocks' in field && field.blocks) {
|
|
125
|
-
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
unsanitizedBlock.labels = !unsanitizedBlock.labels ? formatLabels(unsanitizedBlock.slug) : unsanitizedBlock.labels;
|
|
130
|
-
unsanitizedBlock.fields = sanitizeFields({
|
|
153
|
+
for(let j = 0; j < field.blocks.length; j++){
|
|
154
|
+
const block = field.blocks[j];
|
|
155
|
+
block.labels = !block.labels ? formatLabels(block.slug) : block.labels;
|
|
156
|
+
block.fields = await sanitizeFields({
|
|
131
157
|
config,
|
|
132
158
|
existingFieldNames: new Set(),
|
|
133
159
|
fields: block.fields,
|
|
134
160
|
requireFieldLevelRichTextEditor,
|
|
161
|
+
richTextSanitizationPromises,
|
|
135
162
|
validRelationships
|
|
136
163
|
});
|
|
137
|
-
|
|
138
|
-
}
|
|
164
|
+
field.blocks[j] = block;
|
|
165
|
+
}
|
|
139
166
|
}
|
|
140
|
-
|
|
141
|
-
}
|
|
167
|
+
fields[i] = field;
|
|
168
|
+
}
|
|
169
|
+
return fields;
|
|
142
170
|
};
|
|
143
171
|
|
|
144
172
|
//# sourceMappingURL=sanitize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type { Config } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport MissingEditorProp from '../../errors/MissingEditorProp.js'\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = ({\n config,\n existingFieldNames = new Set(),\n fields,\n requireFieldLevelRichTextEditor = false,\n validRelationships,\n}: Args): Field[] => {\n if (!fields) return []\n\n return fields.map((unsanitizedField) => {\n const field: Field = { ...unsanitizedField }\n\n if (!field.type) throw new MissingFieldType(field)\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText' && !field.editor) {\n if (config.editor && !requireFieldLevelRichTextEditor) {\n field.editor = config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.type === 'relationship') {\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n field.blocks = field.blocks.map((block) => ({\n ...block,\n fields: block.fields.concat(baseBlockFields),\n }))\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (field.localized && !config.localization) delete field.localized\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = () => true\n }\n }\n\n if (!field.hooks) field.hooks = {}\n if (!field.access) field.access = {}\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if ('fields' in field && field.fields) {\n field.fields = sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n requireFieldLevelRichTextEditor,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n field.tabs = field.tabs.map((tab) => {\n const unsanitizedTab = { ...tab }\n if (tabHasName(tab) && typeof tab.label === 'undefined') {\n unsanitizedTab.label = toWords(tab.name)\n }\n\n unsanitizedTab.fields = sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n requireFieldLevelRichTextEditor,\n validRelationships,\n })\n\n return unsanitizedTab\n })\n }\n\n if ('blocks' in field && field.blocks) {\n field.blocks = field.blocks.map((block) => {\n const unsanitizedBlock = { ...block }\n unsanitizedBlock.labels = !unsanitizedBlock.labels\n ? formatLabels(unsanitizedBlock.slug)\n : unsanitizedBlock.labels\n\n unsanitizedBlock.fields = sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n requireFieldLevelRichTextEditor,\n validRelationships,\n })\n\n return unsanitizedBlock\n })\n }\n\n return field\n })\n}\n"],"names":["MissingEditorProp","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","requireFieldLevelRichTextEditor","validRelationships","map","unsanitizedField","field","type","name","includes","editor","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","blocks","block","concat","push","labels","has","add","localized","localization","validate","defaultValidate","val","options","hooks","access","admin","tabs","tab","unsanitizedTab","unsanitizedBlock","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = async ({\n config,\n existingFieldNames = new Set(),\n fields,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n validRelationships,\n}: Args): Promise<Field[]> => {\n if (!fields) return []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n if (!field.type) throw new MissingFieldType(field)\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.type === 'relationship') {\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n field.blocks = field.blocks.map((block) => ({\n ...block,\n fields: block.fields.concat(baseBlockFields),\n }))\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (field.localized && !config.localization) delete field.localized\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = () => true\n }\n }\n\n if (!field.hooks) field.hooks = {}\n if (!field.access) field.access = {}\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({ config: _config })\n }\n\n // Add editor adapter hooks to field hooks\n if (!field.hooks) field.hooks = {}\n\n const mergeHooks = (hookName: keyof typeof field.editor.hooks) => {\n if (typeof field.editor === 'function') return\n\n if (field.editor?.hooks?.[hookName]?.length) {\n field.hooks[hookName] = field.hooks[hookName]\n ? field.hooks[hookName].concat(field.editor.hooks[hookName])\n : [...field.editor.hooks[hookName]]\n }\n }\n\n mergeHooks('afterRead')\n mergeHooks('afterChange')\n mergeHooks('beforeChange')\n mergeHooks('beforeValidate')\n mergeHooks('beforeDuplicate')\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]\n if (tabHasName(tab) && typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n\n tab.fields = await sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.tabs[j] = tab\n }\n }\n\n if ('blocks' in field && field.blocks) {\n for (let j = 0; j < field.blocks.length; j++) {\n const block = field.blocks[j]\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.blocks[j] = block\n }\n }\n\n fields[i] = field\n }\n\n return fields\n}\n"],"names":["MissingEditorProp","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","requireFieldLevelRichTextEditor","richTextSanitizationPromises","validRelationships","i","length","field","type","name","includes","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","blocks","map","block","concat","push","labels","has","add","localized","localization","validate","defaultValidate","val","options","hooks","access","admin","sanitizeRichText","_config","editor","mergeHooks","hookName","j","tabs","tab","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,30 +1,24 @@
|
|
|
1
|
-
import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors';
|
|
2
|
-
import { sanitizeFields } from './sanitize';
|
|
3
|
-
const dummyConfig = {
|
|
4
|
-
collections: [],
|
|
5
|
-
db: ()=>({})
|
|
6
|
-
};
|
|
1
|
+
import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors/index.js';
|
|
2
|
+
import { sanitizeFields } from './sanitize.js';
|
|
7
3
|
describe('sanitizeFields', ()=>{
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// @ts-ignore
|
|
4
|
+
const config = {};
|
|
5
|
+
it('should throw on missing type field', async ()=>{
|
|
11
6
|
const fields = [
|
|
7
|
+
// @ts-expect-error
|
|
12
8
|
{
|
|
13
9
|
label: 'some-collection',
|
|
14
10
|
name: 'Some Collection'
|
|
15
11
|
}
|
|
16
12
|
];
|
|
17
|
-
expect(()=>{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
sanitizeFields({
|
|
21
|
-
config: dummyConfig,
|
|
13
|
+
await expect(async ()=>{
|
|
14
|
+
await sanitizeFields({
|
|
15
|
+
config,
|
|
22
16
|
fields,
|
|
23
17
|
validRelationships: []
|
|
24
18
|
});
|
|
25
|
-
}).toThrow(MissingFieldType);
|
|
19
|
+
}).rejects.toThrow(MissingFieldType);
|
|
26
20
|
});
|
|
27
|
-
it('should throw on invalid field name', ()=>{
|
|
21
|
+
it('should throw on invalid field name', async ()=>{
|
|
28
22
|
const fields = [
|
|
29
23
|
{
|
|
30
24
|
label: 'some.collection',
|
|
@@ -32,32 +26,32 @@ describe('sanitizeFields', ()=>{
|
|
|
32
26
|
type: 'text'
|
|
33
27
|
}
|
|
34
28
|
];
|
|
35
|
-
expect(()=>{
|
|
36
|
-
sanitizeFields({
|
|
37
|
-
config
|
|
29
|
+
await expect(async ()=>{
|
|
30
|
+
await sanitizeFields({
|
|
31
|
+
config,
|
|
38
32
|
fields,
|
|
39
33
|
validRelationships: []
|
|
40
34
|
});
|
|
41
|
-
}).toThrow(InvalidFieldName);
|
|
35
|
+
}).rejects.toThrow(InvalidFieldName);
|
|
42
36
|
});
|
|
43
37
|
describe('auto-labeling', ()=>{
|
|
44
|
-
it('should populate label if missing', ()=>{
|
|
38
|
+
it('should populate label if missing', async ()=>{
|
|
45
39
|
const fields = [
|
|
46
40
|
{
|
|
47
41
|
name: 'someField',
|
|
48
42
|
type: 'text'
|
|
49
43
|
}
|
|
50
44
|
];
|
|
51
|
-
const sanitizedField = sanitizeFields({
|
|
52
|
-
config
|
|
45
|
+
const sanitizedField = (await sanitizeFields({
|
|
46
|
+
config,
|
|
53
47
|
fields,
|
|
54
48
|
validRelationships: []
|
|
55
|
-
})[0];
|
|
49
|
+
}))[0];
|
|
56
50
|
expect(sanitizedField.name).toStrictEqual('someField');
|
|
57
51
|
expect(sanitizedField.label).toStrictEqual('Some Field');
|
|
58
52
|
expect(sanitizedField.type).toStrictEqual('text');
|
|
59
53
|
});
|
|
60
|
-
it('should allow auto-label override', ()=>{
|
|
54
|
+
it('should allow auto-label override', async ()=>{
|
|
61
55
|
const fields = [
|
|
62
56
|
{
|
|
63
57
|
label: 'Do not label',
|
|
@@ -65,17 +59,17 @@ describe('sanitizeFields', ()=>{
|
|
|
65
59
|
type: 'text'
|
|
66
60
|
}
|
|
67
61
|
];
|
|
68
|
-
const sanitizedField = sanitizeFields({
|
|
69
|
-
config
|
|
62
|
+
const sanitizedField = (await sanitizeFields({
|
|
63
|
+
config,
|
|
70
64
|
fields,
|
|
71
65
|
validRelationships: []
|
|
72
|
-
})[0];
|
|
66
|
+
}))[0];
|
|
73
67
|
expect(sanitizedField.name).toStrictEqual('someField');
|
|
74
68
|
expect(sanitizedField.label).toStrictEqual('Do not label');
|
|
75
69
|
expect(sanitizedField.type).toStrictEqual('text');
|
|
76
70
|
});
|
|
77
71
|
describe('opt-out', ()=>{
|
|
78
|
-
it('should allow label opt-out', ()=>{
|
|
72
|
+
it('should allow label opt-out', async ()=>{
|
|
79
73
|
const fields = [
|
|
80
74
|
{
|
|
81
75
|
label: false,
|
|
@@ -83,16 +77,16 @@ describe('sanitizeFields', ()=>{
|
|
|
83
77
|
type: 'text'
|
|
84
78
|
}
|
|
85
79
|
];
|
|
86
|
-
const sanitizedField = sanitizeFields({
|
|
87
|
-
config
|
|
80
|
+
const sanitizedField = (await sanitizeFields({
|
|
81
|
+
config,
|
|
88
82
|
fields,
|
|
89
83
|
validRelationships: []
|
|
90
|
-
})[0];
|
|
84
|
+
}))[0];
|
|
91
85
|
expect(sanitizedField.name).toStrictEqual('someField');
|
|
92
86
|
expect(sanitizedField.label).toStrictEqual(false);
|
|
93
87
|
expect(sanitizedField.type).toStrictEqual('text');
|
|
94
88
|
});
|
|
95
|
-
it('should allow label opt-out for arrays', ()=>{
|
|
89
|
+
it('should allow label opt-out for arrays', async ()=>{
|
|
96
90
|
const arrayField = {
|
|
97
91
|
fields: [
|
|
98
92
|
{
|
|
@@ -104,19 +98,19 @@ describe('sanitizeFields', ()=>{
|
|
|
104
98
|
name: 'items',
|
|
105
99
|
type: 'array'
|
|
106
100
|
};
|
|
107
|
-
const sanitizedField = sanitizeFields({
|
|
108
|
-
config
|
|
101
|
+
const sanitizedField = (await sanitizeFields({
|
|
102
|
+
config,
|
|
109
103
|
fields: [
|
|
110
104
|
arrayField
|
|
111
105
|
],
|
|
112
106
|
validRelationships: []
|
|
113
|
-
})[0];
|
|
107
|
+
}))[0];
|
|
114
108
|
expect(sanitizedField.name).toStrictEqual('items');
|
|
115
109
|
expect(sanitizedField.label).toStrictEqual(false);
|
|
116
110
|
expect(sanitizedField.type).toStrictEqual('array');
|
|
117
111
|
expect(sanitizedField.labels).toBeUndefined();
|
|
118
112
|
});
|
|
119
|
-
it('should allow label opt-out for blocks', ()=>{
|
|
113
|
+
it('should allow label opt-out for blocks', async ()=>{
|
|
120
114
|
const fields = [
|
|
121
115
|
{
|
|
122
116
|
blocks: [
|
|
@@ -135,18 +129,18 @@ describe('sanitizeFields', ()=>{
|
|
|
135
129
|
type: 'blocks'
|
|
136
130
|
}
|
|
137
131
|
];
|
|
138
|
-
const sanitizedField = sanitizeFields({
|
|
139
|
-
config
|
|
132
|
+
const sanitizedField = (await sanitizeFields({
|
|
133
|
+
config,
|
|
140
134
|
fields,
|
|
141
135
|
validRelationships: []
|
|
142
|
-
})[0];
|
|
136
|
+
}))[0];
|
|
143
137
|
expect(sanitizedField.name).toStrictEqual('noLabelBlock');
|
|
144
138
|
expect(sanitizedField.label).toStrictEqual(false);
|
|
145
139
|
expect(sanitizedField.type).toStrictEqual('blocks');
|
|
146
140
|
expect(sanitizedField.labels).toBeUndefined();
|
|
147
141
|
});
|
|
148
142
|
});
|
|
149
|
-
it('should label arrays with plural and singular', ()=>{
|
|
143
|
+
it('should label arrays with plural and singular', async ()=>{
|
|
150
144
|
const fields = [
|
|
151
145
|
{
|
|
152
146
|
fields: [
|
|
@@ -159,11 +153,11 @@ describe('sanitizeFields', ()=>{
|
|
|
159
153
|
type: 'array'
|
|
160
154
|
}
|
|
161
155
|
];
|
|
162
|
-
const sanitizedField = sanitizeFields({
|
|
163
|
-
config
|
|
156
|
+
const sanitizedField = (await sanitizeFields({
|
|
157
|
+
config,
|
|
164
158
|
fields,
|
|
165
159
|
validRelationships: []
|
|
166
|
-
})[0];
|
|
160
|
+
}))[0];
|
|
167
161
|
expect(sanitizedField.name).toStrictEqual('items');
|
|
168
162
|
expect(sanitizedField.label).toStrictEqual('Items');
|
|
169
163
|
expect(sanitizedField.type).toStrictEqual('array');
|
|
@@ -172,7 +166,7 @@ describe('sanitizeFields', ()=>{
|
|
|
172
166
|
singular: 'Item'
|
|
173
167
|
});
|
|
174
168
|
});
|
|
175
|
-
it('should label blocks with plural and singular', ()=>{
|
|
169
|
+
it('should label blocks with plural and singular', async ()=>{
|
|
176
170
|
const fields = [
|
|
177
171
|
{
|
|
178
172
|
blocks: [
|
|
@@ -190,11 +184,11 @@ describe('sanitizeFields', ()=>{
|
|
|
190
184
|
type: 'blocks'
|
|
191
185
|
}
|
|
192
186
|
];
|
|
193
|
-
const sanitizedField = sanitizeFields({
|
|
194
|
-
config
|
|
187
|
+
const sanitizedField = (await sanitizeFields({
|
|
188
|
+
config,
|
|
195
189
|
fields,
|
|
196
190
|
validRelationships: []
|
|
197
|
-
})[0];
|
|
191
|
+
}))[0];
|
|
198
192
|
expect(sanitizedField.name).toStrictEqual('specialBlock');
|
|
199
193
|
expect(sanitizedField.label).toStrictEqual('Special Block');
|
|
200
194
|
expect(sanitizedField.type).toStrictEqual('blocks');
|
|
@@ -206,7 +200,7 @@ describe('sanitizeFields', ()=>{
|
|
|
206
200
|
});
|
|
207
201
|
});
|
|
208
202
|
describe('relationships', ()=>{
|
|
209
|
-
it('should not throw on valid relationship', ()=>{
|
|
203
|
+
it('should not throw on valid relationship', async ()=>{
|
|
210
204
|
const validRelationships = [
|
|
211
205
|
'some-collection'
|
|
212
206
|
];
|
|
@@ -218,15 +212,15 @@ describe('sanitizeFields', ()=>{
|
|
|
218
212
|
type: 'relationship'
|
|
219
213
|
}
|
|
220
214
|
];
|
|
221
|
-
expect(()=>{
|
|
222
|
-
sanitizeFields({
|
|
223
|
-
config
|
|
215
|
+
await expect(async ()=>{
|
|
216
|
+
await sanitizeFields({
|
|
217
|
+
config,
|
|
224
218
|
fields,
|
|
225
219
|
validRelationships
|
|
226
220
|
});
|
|
227
221
|
}).not.toThrow();
|
|
228
222
|
});
|
|
229
|
-
it('should not throw on valid relationship - multiple', ()=>{
|
|
223
|
+
it('should not throw on valid relationship - multiple', async ()=>{
|
|
230
224
|
const validRelationships = [
|
|
231
225
|
'some-collection',
|
|
232
226
|
'another-collection'
|
|
@@ -242,15 +236,15 @@ describe('sanitizeFields', ()=>{
|
|
|
242
236
|
type: 'relationship'
|
|
243
237
|
}
|
|
244
238
|
];
|
|
245
|
-
expect(()=>{
|
|
246
|
-
sanitizeFields({
|
|
247
|
-
config
|
|
239
|
+
await expect(async ()=>{
|
|
240
|
+
await sanitizeFields({
|
|
241
|
+
config,
|
|
248
242
|
fields,
|
|
249
243
|
validRelationships
|
|
250
244
|
});
|
|
251
245
|
}).not.toThrow();
|
|
252
246
|
});
|
|
253
|
-
it('should not throw on valid relationship inside blocks', ()=>{
|
|
247
|
+
it('should not throw on valid relationship inside blocks', async ()=>{
|
|
254
248
|
const validRelationships = [
|
|
255
249
|
'some-collection'
|
|
256
250
|
];
|
|
@@ -275,15 +269,15 @@ describe('sanitizeFields', ()=>{
|
|
|
275
269
|
type: 'blocks'
|
|
276
270
|
}
|
|
277
271
|
];
|
|
278
|
-
expect(()=>{
|
|
279
|
-
sanitizeFields({
|
|
280
|
-
config
|
|
272
|
+
await expect(async ()=>{
|
|
273
|
+
await sanitizeFields({
|
|
274
|
+
config,
|
|
281
275
|
fields,
|
|
282
276
|
validRelationships
|
|
283
277
|
});
|
|
284
278
|
}).not.toThrow();
|
|
285
279
|
});
|
|
286
|
-
it('should throw on invalid relationship', ()=>{
|
|
280
|
+
it('should throw on invalid relationship', async ()=>{
|
|
287
281
|
const validRelationships = [
|
|
288
282
|
'some-collection'
|
|
289
283
|
];
|
|
@@ -295,15 +289,15 @@ describe('sanitizeFields', ()=>{
|
|
|
295
289
|
type: 'relationship'
|
|
296
290
|
}
|
|
297
291
|
];
|
|
298
|
-
expect(()=>{
|
|
299
|
-
sanitizeFields({
|
|
300
|
-
config
|
|
292
|
+
await expect(async ()=>{
|
|
293
|
+
await sanitizeFields({
|
|
294
|
+
config,
|
|
301
295
|
fields,
|
|
302
296
|
validRelationships
|
|
303
297
|
});
|
|
304
|
-
}).toThrow(InvalidFieldRelationship);
|
|
298
|
+
}).rejects.toThrow(InvalidFieldRelationship);
|
|
305
299
|
});
|
|
306
|
-
it('should throw on invalid relationship - multiple', ()=>{
|
|
300
|
+
it('should throw on invalid relationship - multiple', async ()=>{
|
|
307
301
|
const validRelationships = [
|
|
308
302
|
'some-collection',
|
|
309
303
|
'another-collection'
|
|
@@ -319,15 +313,15 @@ describe('sanitizeFields', ()=>{
|
|
|
319
313
|
type: 'relationship'
|
|
320
314
|
}
|
|
321
315
|
];
|
|
322
|
-
expect(()=>{
|
|
323
|
-
sanitizeFields({
|
|
324
|
-
config
|
|
316
|
+
await expect(async ()=>{
|
|
317
|
+
await sanitizeFields({
|
|
318
|
+
config,
|
|
325
319
|
fields,
|
|
326
320
|
validRelationships
|
|
327
321
|
});
|
|
328
|
-
}).toThrow(InvalidFieldRelationship);
|
|
322
|
+
}).rejects.toThrow(InvalidFieldRelationship);
|
|
329
323
|
});
|
|
330
|
-
it('should throw on invalid relationship inside blocks', ()=>{
|
|
324
|
+
it('should throw on invalid relationship inside blocks', async ()=>{
|
|
331
325
|
const validRelationships = [
|
|
332
326
|
'some-collection'
|
|
333
327
|
];
|
|
@@ -352,15 +346,15 @@ describe('sanitizeFields', ()=>{
|
|
|
352
346
|
type: 'blocks'
|
|
353
347
|
}
|
|
354
348
|
];
|
|
355
|
-
expect(()=>{
|
|
356
|
-
sanitizeFields({
|
|
357
|
-
config
|
|
349
|
+
await expect(async ()=>{
|
|
350
|
+
await sanitizeFields({
|
|
351
|
+
config,
|
|
358
352
|
fields,
|
|
359
353
|
validRelationships
|
|
360
354
|
});
|
|
361
|
-
}).toThrow(InvalidFieldRelationship);
|
|
355
|
+
}).rejects.toThrow(InvalidFieldRelationship);
|
|
362
356
|
});
|
|
363
|
-
it('should defaultValue of checkbox to false if required and undefined', ()=>{
|
|
357
|
+
it('should defaultValue of checkbox to false if required and undefined', async ()=>{
|
|
364
358
|
const fields = [
|
|
365
359
|
{
|
|
366
360
|
name: 'My Checkbox',
|
|
@@ -368,16 +362,16 @@ describe('sanitizeFields', ()=>{
|
|
|
368
362
|
type: 'checkbox'
|
|
369
363
|
}
|
|
370
364
|
];
|
|
371
|
-
const sanitizedField = sanitizeFields({
|
|
372
|
-
config
|
|
365
|
+
const sanitizedField = (await sanitizeFields({
|
|
366
|
+
config,
|
|
373
367
|
fields,
|
|
374
368
|
validRelationships: []
|
|
375
|
-
})[0];
|
|
369
|
+
}))[0];
|
|
376
370
|
expect(sanitizedField.defaultValue).toStrictEqual(false);
|
|
377
371
|
});
|
|
378
|
-
it('should return empty field array if no fields', ()=>{
|
|
379
|
-
const sanitizedFields = sanitizeFields({
|
|
380
|
-
config
|
|
372
|
+
it('should return empty field array if no fields', async ()=>{
|
|
373
|
+
const sanitizedFields = await sanitizeFields({
|
|
374
|
+
config,
|
|
381
375
|
fields: [],
|
|
382
376
|
validRelationships: []
|
|
383
377
|
});
|