payload 3.0.0-beta.2 → 3.0.0-beta.20
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 +15 -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 +1 -0
- 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.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 +4 -0
- package/dist/bin/loader/index.js.map +1 -1
- 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 +1 -2
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +2 -3
- 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/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.map +1 -1
- package/dist/config/sanitize.js +8 -2
- 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 +36 -53
- 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/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 +128 -103
- 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.map +1 -1
- package/dist/fields/config/sanitize.js +26 -9
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitize.spec.js +4 -1
- 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 +65 -54
- 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 +4 -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 +49 -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/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 +53 -1
- package/dist/utilities/configToJSONSchema.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 +3 -1
- 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 +8 -5
- 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 +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;AACnD,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,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,iGAMxB,IAAI,KAAG,KAAK,
|
|
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;AACnD,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,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,iGAMxB,IAAI,KAAG,KAAK,EA6Ld,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';
|
|
@@ -17,14 +17,6 @@ export const sanitizeFields = ({ config, existingFieldNames = new Set(), fields,
|
|
|
17
17
|
if (fieldAffectsData(field) && field.name.includes('.')) {
|
|
18
18
|
throw new InvalidFieldName(field, field.name);
|
|
19
19
|
}
|
|
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
20
|
// Auto-label
|
|
29
21
|
if ('name' in field && field.name && typeof field.label !== 'object' && typeof field.label !== 'string' && field.label !== false) {
|
|
30
22
|
field.label = toWords(field.name);
|
|
@@ -94,6 +86,31 @@ export const sanitizeFields = ({ config, existingFieldNames = new Set(), fields,
|
|
|
94
86
|
if (!field.admin) {
|
|
95
87
|
field.admin = {};
|
|
96
88
|
}
|
|
89
|
+
// Make sure that the richText field has an editor
|
|
90
|
+
if (field.type === 'richText') {
|
|
91
|
+
if (!field.editor) {
|
|
92
|
+
if (config.editor && !requireFieldLevelRichTextEditor) {
|
|
93
|
+
field.editor = config.editor;
|
|
94
|
+
} else {
|
|
95
|
+
throw new MissingEditorProp(field);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Add editor adapter hooks to field hooks
|
|
99
|
+
if (!field.hooks) field.hooks = {};
|
|
100
|
+
if (field?.editor?.hooks?.afterRead?.length) {
|
|
101
|
+
field.hooks.afterRead = field.hooks.afterRead ? field.hooks.afterRead.concat(field.editor.hooks.afterRead) : field.editor.hooks.afterRead;
|
|
102
|
+
}
|
|
103
|
+
if (field?.editor?.hooks?.beforeChange?.length) {
|
|
104
|
+
field.hooks.beforeChange = field.hooks.beforeChange ? field.hooks.beforeChange.concat(field.editor.hooks.beforeChange) : field.editor.hooks.beforeChange;
|
|
105
|
+
}
|
|
106
|
+
if (field?.editor?.hooks?.beforeValidate?.length) {
|
|
107
|
+
field.hooks.beforeValidate = field.hooks.beforeValidate ? field.hooks.beforeValidate.concat(field.editor.hooks.beforeValidate) : field.editor.hooks.beforeValidate;
|
|
108
|
+
}
|
|
109
|
+
if (field?.editor?.hooks?.beforeChange?.length) {
|
|
110
|
+
field.hooks.beforeChange = field.hooks.beforeChange ? field.hooks.beforeChange.concat(field.editor.hooks.beforeChange) : field.editor.hooks.beforeChange;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// TODO: Handle sanitization for any lexical sub-fields here as well
|
|
97
114
|
if ('fields' in field && field.fields) {
|
|
98
115
|
field.fields = sanitizeFields({
|
|
99
116
|
config,
|
|
@@ -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 } 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 // 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 if (!field.editor) {\n if (config.editor && !requireFieldLevelRichTextEditor) {\n field.editor = config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n // Add editor adapter hooks to field hooks\n if (!field.hooks) field.hooks = {}\n\n if (field?.editor?.hooks?.afterRead?.length) {\n field.hooks.afterRead = field.hooks.afterRead\n ? field.hooks.afterRead.concat(field.editor.hooks.afterRead)\n : field.editor.hooks.afterRead\n }\n if (field?.editor?.hooks?.beforeChange?.length) {\n field.hooks.beforeChange = field.hooks.beforeChange\n ? field.hooks.beforeChange.concat(field.editor.hooks.beforeChange)\n : field.editor.hooks.beforeChange\n }\n if (field?.editor?.hooks?.beforeValidate?.length) {\n field.hooks.beforeValidate = field.hooks.beforeValidate\n ? field.hooks.beforeValidate.concat(field.editor.hooks.beforeValidate)\n : field.editor.hooks.beforeValidate\n }\n if (field?.editor?.hooks?.beforeChange?.length) {\n field.hooks.beforeChange = field.hooks.beforeChange\n ? field.hooks.beforeChange.concat(field.editor.hooks.beforeChange)\n : field.editor.hooks.beforeChange\n }\n }\n\n // TODO: Handle sanitization for any lexical sub-fields here as well\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","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","editor","afterRead","length","beforeChange","beforeValidate","tabs","tab","unsanitizedTab","unsanitizedBlock","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -2,7 +2,10 @@ import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '..
|
|
|
2
2
|
import { sanitizeFields } from './sanitize';
|
|
3
3
|
const dummyConfig = {
|
|
4
4
|
collections: [],
|
|
5
|
-
db:
|
|
5
|
+
db: {
|
|
6
|
+
defaultIDType: 'text',
|
|
7
|
+
init: ()=>({})
|
|
8
|
+
}
|
|
6
9
|
};
|
|
7
10
|
describe('sanitizeFields', ()=>{
|
|
8
11
|
it('should throw on missing type field', ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/sanitize.spec.ts"],"sourcesContent":["import type {\n ArrayField,\n Block,\n BlockField,\n CheckboxField,\n Field,\n NumberField,\n TextField,\n} from './types'\nimport { Config } from '../../config/types'\nimport { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors'\nimport { sanitizeFields } from './sanitize'\nimport type { BaseDatabaseAdapter } from '../../database/types.js'\n\nconst dummyConfig: Config = {\n collections: [],\n db: () => ({}) as BaseDatabaseAdapter,\n}\n\ndescribe('sanitizeFields', () => {\n it('should throw on missing type field', () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const fields: Field[] = [\n {\n label: 'some-collection',\n name: 'Some Collection',\n },\n ]\n expect(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })\n }).toThrow(MissingFieldType)\n })\n it('should throw on invalid field name', () => {\n const fields: Field[] = [\n {\n label: 'some.collection',\n name: 'some.collection',\n type: 'text',\n },\n ]\n expect(() => {\n sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })\n }).toThrow(InvalidFieldName)\n })\n\n describe('auto-labeling', () => {\n it('should populate label if missing', () => {\n const fields: Field[] = [\n {\n name: 'someField',\n type: 'text',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as TextField\n expect(sanitizedField.name).toStrictEqual('someField')\n expect(sanitizedField.label).toStrictEqual('Some Field')\n expect(sanitizedField.type).toStrictEqual('text')\n })\n it('should allow auto-label override', () => {\n const fields: Field[] = [\n {\n label: 'Do not label',\n name: 'someField',\n type: 'text',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as TextField\n expect(sanitizedField.name).toStrictEqual('someField')\n expect(sanitizedField.label).toStrictEqual('Do not label')\n expect(sanitizedField.type).toStrictEqual('text')\n })\n\n describe('opt-out', () => {\n it('should allow label opt-out', () => {\n const fields: Field[] = [\n {\n label: false,\n name: 'someField',\n type: 'text',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as TextField\n expect(sanitizedField.name).toStrictEqual('someField')\n expect(sanitizedField.label).toStrictEqual(false)\n expect(sanitizedField.type).toStrictEqual('text')\n })\n\n it('should allow label opt-out for arrays', () => {\n const arrayField: ArrayField = {\n fields: [\n {\n name: 'itemName',\n type: 'text',\n },\n ],\n label: false,\n name: 'items',\n type: 'array',\n }\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields: [arrayField],\n validRelationships: [],\n })[0] as ArrayField\n expect(sanitizedField.name).toStrictEqual('items')\n expect(sanitizedField.label).toStrictEqual(false)\n expect(sanitizedField.type).toStrictEqual('array')\n expect(sanitizedField.labels).toBeUndefined()\n })\n it('should allow label opt-out for blocks', () => {\n const fields: Field[] = [\n {\n blocks: [\n {\n fields: [\n {\n name: 'testNumber',\n type: 'number',\n },\n ],\n slug: 'number',\n },\n ],\n label: false,\n name: 'noLabelBlock',\n type: 'blocks',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as BlockField\n expect(sanitizedField.name).toStrictEqual('noLabelBlock')\n expect(sanitizedField.label).toStrictEqual(false)\n expect(sanitizedField.type).toStrictEqual('blocks')\n expect(sanitizedField.labels).toBeUndefined()\n })\n })\n\n it('should label arrays with plural and singular', () => {\n const fields: Field[] = [\n {\n fields: [\n {\n name: 'itemName',\n type: 'text',\n },\n ],\n name: 'items',\n type: 'array',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as ArrayField\n expect(sanitizedField.name).toStrictEqual('items')\n expect(sanitizedField.label).toStrictEqual('Items')\n expect(sanitizedField.type).toStrictEqual('array')\n expect(sanitizedField.labels).toMatchObject({ plural: 'Items', singular: 'Item' })\n })\n\n it('should label blocks with plural and singular', () => {\n const fields: Field[] = [\n {\n blocks: [\n {\n fields: [{ name: 'testNumber', type: 'number' }],\n slug: 'number',\n },\n ],\n name: 'specialBlock',\n type: 'blocks',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as BlockField\n expect(sanitizedField.name).toStrictEqual('specialBlock')\n expect(sanitizedField.label).toStrictEqual('Special Block')\n expect(sanitizedField.type).toStrictEqual('blocks')\n expect(sanitizedField.labels).toMatchObject({\n plural: 'Special Blocks',\n singular: 'Special Block',\n })\n expect((sanitizedField.blocks[0].fields[0] as NumberField).label).toStrictEqual('Test Number')\n })\n })\n\n describe('relationships', () => {\n it('should not throw on valid relationship', () => {\n const validRelationships = ['some-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'some-collection',\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).not.toThrow()\n })\n\n it('should not throw on valid relationship - multiple', () => {\n const validRelationships = ['some-collection', 'another-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: ['some-collection', 'another-collection'],\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).not.toThrow()\n })\n\n it('should not throw on valid relationship inside blocks', () => {\n const validRelationships = ['some-collection']\n const relationshipBlock: Block = {\n fields: [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'some-collection',\n type: 'relationship',\n },\n ],\n slug: 'relationshipBlock',\n }\n const fields: Field[] = [\n {\n blocks: [relationshipBlock],\n label: 'Layout Blocks',\n name: 'layout',\n type: 'blocks',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).not.toThrow()\n })\n\n it('should throw on invalid relationship', () => {\n const validRelationships = ['some-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'not-valid',\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).toThrow(InvalidFieldRelationship)\n })\n\n it('should throw on invalid relationship - multiple', () => {\n const validRelationships = ['some-collection', 'another-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: ['some-collection', 'not-valid'],\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).toThrow(InvalidFieldRelationship)\n })\n\n it('should throw on invalid relationship inside blocks', () => {\n const validRelationships = ['some-collection']\n const relationshipBlock: Block = {\n fields: [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'not-valid',\n type: 'relationship',\n },\n ],\n slug: 'relationshipBlock',\n }\n const fields: Field[] = [\n {\n blocks: [relationshipBlock],\n label: 'Layout Blocks',\n name: 'layout',\n type: 'blocks',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).toThrow(InvalidFieldRelationship)\n })\n\n it('should defaultValue of checkbox to false if required and undefined', () => {\n const fields: Field[] = [\n {\n name: 'My Checkbox',\n required: true,\n type: 'checkbox',\n },\n ]\n\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as CheckboxField\n expect(sanitizedField.defaultValue).toStrictEqual(false)\n })\n\n it('should return empty field array if no fields', () => {\n const sanitizedFields = sanitizeFields({\n config: dummyConfig,\n fields: [],\n validRelationships: [],\n })\n expect(sanitizedFields).toStrictEqual([])\n })\n })\n})\n"],"names":["InvalidFieldName","InvalidFieldRelationship","MissingFieldType","sanitizeFields","dummyConfig","collections","db","describe","it","fields","label","name","expect","config","validRelationships","toThrow","type","sanitizedField","toStrictEqual","arrayField","labels","toBeUndefined","blocks","slug","toMatchObject","plural","singular","relationTo","not","relationshipBlock","required","defaultValue","sanitizedFields"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/sanitize.spec.ts"],"sourcesContent":["import type {\n ArrayField,\n Block,\n BlockField,\n CheckboxField,\n Field,\n NumberField,\n TextField,\n} from './types'\nimport { Config } from '../../config/types'\nimport { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors'\nimport { sanitizeFields } from './sanitize'\nimport type { BaseDatabaseAdapter } from '../../database/types.js'\n\nconst dummyConfig: Config = {\n collections: [],\n db: {\n defaultIDType: 'text',\n init: () => ({}) as BaseDatabaseAdapter['init'],\n } as BaseDatabaseAdapter,\n}\n\ndescribe('sanitizeFields', () => {\n it('should throw on missing type field', () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const fields: Field[] = [\n {\n label: 'some-collection',\n name: 'Some Collection',\n },\n ]\n expect(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })\n }).toThrow(MissingFieldType)\n })\n it('should throw on invalid field name', () => {\n const fields: Field[] = [\n {\n label: 'some.collection',\n name: 'some.collection',\n type: 'text',\n },\n ]\n expect(() => {\n sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })\n }).toThrow(InvalidFieldName)\n })\n\n describe('auto-labeling', () => {\n it('should populate label if missing', () => {\n const fields: Field[] = [\n {\n name: 'someField',\n type: 'text',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as TextField\n expect(sanitizedField.name).toStrictEqual('someField')\n expect(sanitizedField.label).toStrictEqual('Some Field')\n expect(sanitizedField.type).toStrictEqual('text')\n })\n it('should allow auto-label override', () => {\n const fields: Field[] = [\n {\n label: 'Do not label',\n name: 'someField',\n type: 'text',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as TextField\n expect(sanitizedField.name).toStrictEqual('someField')\n expect(sanitizedField.label).toStrictEqual('Do not label')\n expect(sanitizedField.type).toStrictEqual('text')\n })\n\n describe('opt-out', () => {\n it('should allow label opt-out', () => {\n const fields: Field[] = [\n {\n label: false,\n name: 'someField',\n type: 'text',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as TextField\n expect(sanitizedField.name).toStrictEqual('someField')\n expect(sanitizedField.label).toStrictEqual(false)\n expect(sanitizedField.type).toStrictEqual('text')\n })\n\n it('should allow label opt-out for arrays', () => {\n const arrayField: ArrayField = {\n fields: [\n {\n name: 'itemName',\n type: 'text',\n },\n ],\n label: false,\n name: 'items',\n type: 'array',\n }\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields: [arrayField],\n validRelationships: [],\n })[0] as ArrayField\n expect(sanitizedField.name).toStrictEqual('items')\n expect(sanitizedField.label).toStrictEqual(false)\n expect(sanitizedField.type).toStrictEqual('array')\n expect(sanitizedField.labels).toBeUndefined()\n })\n it('should allow label opt-out for blocks', () => {\n const fields: Field[] = [\n {\n blocks: [\n {\n fields: [\n {\n name: 'testNumber',\n type: 'number',\n },\n ],\n slug: 'number',\n },\n ],\n label: false,\n name: 'noLabelBlock',\n type: 'blocks',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as BlockField\n expect(sanitizedField.name).toStrictEqual('noLabelBlock')\n expect(sanitizedField.label).toStrictEqual(false)\n expect(sanitizedField.type).toStrictEqual('blocks')\n expect(sanitizedField.labels).toBeUndefined()\n })\n })\n\n it('should label arrays with plural and singular', () => {\n const fields: Field[] = [\n {\n fields: [\n {\n name: 'itemName',\n type: 'text',\n },\n ],\n name: 'items',\n type: 'array',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as ArrayField\n expect(sanitizedField.name).toStrictEqual('items')\n expect(sanitizedField.label).toStrictEqual('Items')\n expect(sanitizedField.type).toStrictEqual('array')\n expect(sanitizedField.labels).toMatchObject({ plural: 'Items', singular: 'Item' })\n })\n\n it('should label blocks with plural and singular', () => {\n const fields: Field[] = [\n {\n blocks: [\n {\n fields: [{ name: 'testNumber', type: 'number' }],\n slug: 'number',\n },\n ],\n name: 'specialBlock',\n type: 'blocks',\n },\n ]\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as BlockField\n expect(sanitizedField.name).toStrictEqual('specialBlock')\n expect(sanitizedField.label).toStrictEqual('Special Block')\n expect(sanitizedField.type).toStrictEqual('blocks')\n expect(sanitizedField.labels).toMatchObject({\n plural: 'Special Blocks',\n singular: 'Special Block',\n })\n expect((sanitizedField.blocks[0].fields[0] as NumberField).label).toStrictEqual('Test Number')\n })\n })\n\n describe('relationships', () => {\n it('should not throw on valid relationship', () => {\n const validRelationships = ['some-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'some-collection',\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).not.toThrow()\n })\n\n it('should not throw on valid relationship - multiple', () => {\n const validRelationships = ['some-collection', 'another-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: ['some-collection', 'another-collection'],\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).not.toThrow()\n })\n\n it('should not throw on valid relationship inside blocks', () => {\n const validRelationships = ['some-collection']\n const relationshipBlock: Block = {\n fields: [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'some-collection',\n type: 'relationship',\n },\n ],\n slug: 'relationshipBlock',\n }\n const fields: Field[] = [\n {\n blocks: [relationshipBlock],\n label: 'Layout Blocks',\n name: 'layout',\n type: 'blocks',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).not.toThrow()\n })\n\n it('should throw on invalid relationship', () => {\n const validRelationships = ['some-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'not-valid',\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).toThrow(InvalidFieldRelationship)\n })\n\n it('should throw on invalid relationship - multiple', () => {\n const validRelationships = ['some-collection', 'another-collection']\n const fields: Field[] = [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: ['some-collection', 'not-valid'],\n type: 'relationship',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).toThrow(InvalidFieldRelationship)\n })\n\n it('should throw on invalid relationship inside blocks', () => {\n const validRelationships = ['some-collection']\n const relationshipBlock: Block = {\n fields: [\n {\n label: 'my-relationship',\n name: 'My Relationship',\n relationTo: 'not-valid',\n type: 'relationship',\n },\n ],\n slug: 'relationshipBlock',\n }\n const fields: Field[] = [\n {\n blocks: [relationshipBlock],\n label: 'Layout Blocks',\n name: 'layout',\n type: 'blocks',\n },\n ]\n expect(() => {\n sanitizeFields({ config: dummyConfig, fields, validRelationships })\n }).toThrow(InvalidFieldRelationship)\n })\n\n it('should defaultValue of checkbox to false if required and undefined', () => {\n const fields: Field[] = [\n {\n name: 'My Checkbox',\n required: true,\n type: 'checkbox',\n },\n ]\n\n const sanitizedField = sanitizeFields({\n config: dummyConfig,\n fields,\n validRelationships: [],\n })[0] as CheckboxField\n expect(sanitizedField.defaultValue).toStrictEqual(false)\n })\n\n it('should return empty field array if no fields', () => {\n const sanitizedFields = sanitizeFields({\n config: dummyConfig,\n fields: [],\n validRelationships: [],\n })\n expect(sanitizedFields).toStrictEqual([])\n })\n })\n})\n"],"names":["InvalidFieldName","InvalidFieldRelationship","MissingFieldType","sanitizeFields","dummyConfig","collections","db","defaultIDType","init","describe","it","fields","label","name","expect","config","validRelationships","toThrow","type","sanitizedField","toStrictEqual","arrayField","labels","toBeUndefined","blocks","slug","toMatchObject","plural","singular","relationTo","not","relationshipBlock","required","defaultValue","sanitizedFields"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/fields/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,eAAO,MAAM,wBAAwB,uBAOvB,CAAA;AAEd,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/fields/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAA;AAIrB,eAAO,MAAM,wBAAwB,uBAOvB,CAAA;AAEd,eAAO,MAAM,eAAe,uBAgB1B,CAAA;AAEF,eAAO,MAAM,SAAS,uBAoCV,CAAA;AAEZ,eAAO,MAAM,OAAO,uBAKlB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAsBf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAiBnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAgBhB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,IAAI,uBAYf,CAAA;AAEF,eAAO,MAAM,MAAM,uBAgCjB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA4BhB,CAAA;AAEF,eAAO,MAAM,GAAG,uBAId,CAAA;AAEF,eAAO,MAAM,WAAW,uBAKtB,CAAA;AAeF,eAAO,MAAM,IAAI,uBAQf,CAAA;AAEF,eAAO,MAAM,KAAK,uBAShB,CAAA;AAEF,eAAO,MAAM,KAAK,uBA0BhB,CAAA;AAEF,eAAO,MAAM,MAAM,uBAajB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAYnB,CAAA;AAEF,eAAO,MAAM,KAAK,uBAYhB,CAAA;AAEF,eAAO,MAAM,YAAY,uBA+BvB,CAAA;AAEF,eAAO,MAAM,MAAM,uBA0CjB,CAAA;AAEF,eAAO,MAAM,QAAQ,uBAqBnB,CAAA;AAEF,eAAO,MAAM,IAAI,uBAyBf,CAAA;AAEF,eAAO,MAAM,EAAE,uBAqBb,CAAA;AAEF,QAAA,MAAM,WAAW,6BAyBH,CAAA;AAEd,eAAe,WAAW,CAAA"}
|
|
@@ -9,6 +9,7 @@ export const baseAdminFields = joi.object().keys({
|
|
|
9
9
|
className: joi.string(),
|
|
10
10
|
components: baseAdminComponentFields,
|
|
11
11
|
condition: joi.func(),
|
|
12
|
+
custom: joi.object().pattern(joi.string(), joi.any()),
|
|
12
13
|
description: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [
|
|
13
14
|
joi.string()
|
|
14
15
|
]), componentSchema),
|
|
@@ -176,7 +177,8 @@ export const json = baseField.keys({
|
|
|
176
177
|
}),
|
|
177
178
|
editorOptions: joi.object().unknown()
|
|
178
179
|
}),
|
|
179
|
-
defaultValue: joi.alternatives().try(joi.array(), joi.object())
|
|
180
|
+
defaultValue: joi.alternatives().try(joi.array(), joi.object()),
|
|
181
|
+
jsonSchema: joi.object().unknown()
|
|
180
182
|
});
|
|
181
183
|
export const select = baseField.keys({
|
|
182
184
|
name: joi.string().required(),
|
|
@@ -379,6 +381,9 @@ export const blocks = baseField.keys({
|
|
|
379
381
|
type: joi.string().valid('blocks').required(),
|
|
380
382
|
blocks: joi.array().items(joi.object({
|
|
381
383
|
slug: joi.string().required(),
|
|
384
|
+
admin: joi.object().keys({
|
|
385
|
+
custom: joi.object().pattern(joi.string(), joi.any())
|
|
386
|
+
}),
|
|
382
387
|
custom: joi.object().pattern(joi.string(), joi.any()),
|
|
383
388
|
dbName: joi.alternatives().try(joi.string(), joi.func()),
|
|
384
389
|
fields: joi.array().items(joi.link('#field')),
|
|
@@ -463,6 +468,7 @@ export const ui = joi.object().keys({
|
|
|
463
468
|
Field: componentSchema
|
|
464
469
|
}).default({}),
|
|
465
470
|
condition: joi.func(),
|
|
471
|
+
custom: joi.object().pattern(joi.string(), joi.any()),
|
|
466
472
|
position: joi.string().valid('sidebar'),
|
|
467
473
|
width: joi.string()
|
|
468
474
|
}).default(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { componentSchema } from '../../config/shared/componentSchema.js'\n\nexport const baseAdminComponentFields = joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n Filter: componentSchema,\n })\n .default({})\n\nexport const baseAdminFields = joi.object().keys({\n className: joi.string(),\n components: baseAdminComponentFields,\n condition: joi.func(),\n description: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]), componentSchema),\n disableBulkEdit: joi.boolean().default(false),\n disabled: joi.boolean().default(false),\n hidden: joi.boolean().default(false),\n initCollapsed: joi.boolean().default(false),\n position: joi.string().valid('sidebar'),\n readOnly: joi.boolean().default(false),\n style: joi.object().unknown(),\n width: joi.string(),\n})\n\nexport const baseField = joi\n .object()\n .keys({\n access: joi.object().keys({\n create: joi.func(),\n read: joi.func(),\n update: joi.func(),\n }),\n admin: baseAdminFields.default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n hidden: joi.boolean().default(false),\n hooks: joi\n .object()\n .keys({\n afterChange: joi.array().items(joi.func()).default([]),\n afterRead: joi.array().items(joi.func()).default([]),\n beforeChange: joi.array().items(joi.func()).default([]),\n beforeDuplicate: joi.array().items(joi.func()).default([]),\n beforeValidate: joi.array().items(joi.func()).default([]),\n })\n .default(),\n index: joi.boolean().default(false),\n label: joi\n .alternatives()\n .try(\n joi.func(),\n joi.object().pattern(joi.string(), [joi.string()]),\n joi.string(),\n joi.valid(false),\n ),\n localized: joi.boolean().default(false),\n required: joi.boolean().default(false),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()).default(false),\n unique: joi.boolean().default(false),\n validate: joi.func(),\n })\n .default()\n\nexport const idField = baseField.keys({\n name: joi.string().valid('id'),\n type: joi.string().valid('text', 'number'),\n localized: joi.invalid(true),\n required: joi.not(false, 0).default(true),\n})\n\nexport const text = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('text').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi\n .alternatives()\n .try(joi.object().pattern(joi.string(), [joi.string()]), joi.string()),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n maxLength: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n minLength: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const number = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('number').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n beforeInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n }),\n placeholder: joi.string(),\n step: joi.number(),\n }),\n defaultValue: joi\n .alternatives()\n .try(\n joi.number(),\n joi.func(),\n joi.array().when('hasMany', { not: true, then: joi.forbidden() }),\n ),\n hasMany: joi.boolean().default(false),\n max: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const textarea = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('textarea').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n rows: joi.number(),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const email = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('email').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const code = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('code').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n language: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const json = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('json').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n }),\n defaultValue: joi.alternatives().try(joi.array(), joi.object()),\n})\n\nexport const select = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('select').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isClearable: joi.boolean().default(false),\n isSortable: joi.boolean().default(false),\n }),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi\n .alternatives()\n .try(joi.string().allow(''), joi.array().items(joi.string().allow('')), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const radio = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('radio').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n layout: joi.string().valid('vertical', 'horizontal'),\n }),\n defaultValue: joi.alternatives().try(joi.string().allow(''), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .required(),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const row = baseField.keys({\n type: joi.string().valid('row').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n})\n\nexport const collapsible = baseField.keys({\n type: joi.string().valid('collapsible').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n label: joi.alternatives().try(joi.string(), componentSchema),\n})\n\nconst tab = baseField.keys({\n name: joi.string().when('localized', { is: joi.exist(), then: joi.required() }),\n description: joi.alternatives().try(joi.string(), componentSchema),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string().when('name', { not: joi.exist(), then: joi.forbidden() }),\n label: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .when('name', { is: joi.not(), then: joi.required() }),\n localized: joi.boolean(),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()),\n})\n\nexport const tabs = baseField.keys({\n type: joi.string().valid('tabs').required(),\n admin: baseAdminFields.keys({\n description: joi.forbidden(),\n }),\n fields: joi.forbidden(),\n localized: joi.forbidden(),\n tabs: joi.array().items(tab).required(),\n})\n\nexport const group = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('group').required(),\n admin: baseAdminFields.keys({\n hideGutter: joi.boolean().default(true),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n interfaceName: joi.string(),\n})\n\nexport const array = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('array').required(),\n admin: baseAdminFields\n .keys({\n components: baseAdminComponentFields\n .keys({\n RowLabel: componentSchema,\n })\n .default({}),\n })\n .default({}),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const upload = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('upload').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n maxDepth: joi.number(),\n relationTo: joi.string().required(),\n})\n\nexport const checkbox = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('checkbox').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.boolean(), joi.func()),\n})\n\nexport const point = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('point').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.number()).max(2).min(2), joi.func()),\n})\n\nexport const relationship = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('relationship').required(),\n admin: baseAdminFields.keys({\n allowCreate: joi.boolean().default(true),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isSortable: joi.boolean().default(false),\n sortOptions: joi.alternatives().conditional(joi.ref('...relationTo'), {\n is: joi.string(),\n otherwise: joi.object().pattern(joi.string(), joi.string()),\n then: joi.string(),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n hasMany: joi.boolean().default(false),\n max: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use maxRows instead.' }),\n maxDepth: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use minRows instead.' }),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n relationTo: joi.alternatives().try(joi.string().required(), joi.array().items(joi.string())),\n})\n\nexport const blocks = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('blocks').required(),\n blocks: joi\n .array()\n .items(\n joi.object({\n slug: joi.string().required(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n graphQL: joi.object().keys({\n singularName: joi.string(),\n }),\n imageAltText: joi.string(),\n imageURL: joi.string(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n }),\n )\n .required(),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const richText = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('richText').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func(), joi.object()),\n editor: joi\n .object()\n .keys({\n CellComponent: componentSchema.optional(),\n FieldComponent: componentSchema.optional(),\n afterReadPromise: joi.func().optional(),\n outputSchema: joi.func().optional(),\n populationPromise: joi.func().optional(),\n validate: joi.func().required(),\n })\n .unknown(),\n})\n\nexport const date = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('date').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n date: joi.object({\n displayFormat: joi.string(),\n maxDate: joi.date(),\n maxTime: joi.date(),\n minDate: joi.date(),\n minTime: joi.date(),\n monthsToShow: joi.number(),\n overrides: joi.object().unknown(),\n pickerAppearance: joi.string(),\n timeFormat: joi.string(),\n timeIntervals: joi.number(),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const ui = joi.object().keys({\n name: joi.string().required(),\n type: joi.string().valid('ui').required(),\n admin: joi\n .object()\n .keys({\n components: joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n })\n .default({}),\n condition: joi.func(),\n position: joi.string().valid('sidebar'),\n width: joi.string(),\n })\n .default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n})\n\nconst fieldSchema = joi\n .alternatives()\n .try(\n text,\n number,\n textarea,\n email,\n code,\n json,\n select,\n group,\n array,\n row,\n collapsible,\n tabs,\n radio,\n relationship,\n checkbox,\n upload,\n richText,\n blocks,\n date,\n point,\n ui,\n )\n .id('field')\n\nexport default fieldSchema\n"],"names":["joi","componentSchema","baseAdminComponentFields","object","keys","Cell","Field","Filter","default","baseAdminFields","className","string","components","condition","func","description","alternatives","try","pattern","disableBulkEdit","boolean","disabled","hidden","initCollapsed","position","valid","readOnly","style","unknown","width","baseField","access","create","read","update","admin","custom","any","hooks","afterChange","array","items","afterRead","beforeChange","beforeDuplicate","beforeValidate","index","label","localized","required","saveToJWT","unique","validate","idField","name","type","invalid","not","text","autoComplete","Error","Label","afterInput","beforeInput","placeholder","rtl","defaultValue","hasMany","maxLength","number","maxRows","when","is","then","forbidden","minLength","minRows","otherwise","step","max","min","textarea","rows","email","code","editorOptions","language","json","select","isClearable","isSortable","dbName","allow","enumName","options","value","radio","layout","row","fields","link","collapsible","tab","exist","interfaceName","tabs","group","hideGutter","RowLabel","labels","plural","singular","upload","filterOptions","maxDepth","relationTo","checkbox","point","relationship","allowCreate","sortOptions","conditional","ref","warning","message","blocks","slug","graphQL","singularName","imageAltText","imageURL","richText","editor","CellComponent","optional","FieldComponent","afterReadPromise","outputSchema","populationPromise","date","displayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","overrides","pickerAppearance","timeFormat","timeIntervals","ui","fieldSchema","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/schema.ts"],"sourcesContent":["import joi from 'joi'\n\nimport { componentSchema } from '../../config/shared/componentSchema.js'\n\nexport const baseAdminComponentFields = joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n Filter: componentSchema,\n })\n .default({})\n\nexport const baseAdminFields = joi.object().keys({\n className: joi.string(),\n components: baseAdminComponentFields,\n condition: joi.func(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n description: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]), componentSchema),\n disableBulkEdit: joi.boolean().default(false),\n disabled: joi.boolean().default(false),\n hidden: joi.boolean().default(false),\n initCollapsed: joi.boolean().default(false),\n position: joi.string().valid('sidebar'),\n readOnly: joi.boolean().default(false),\n style: joi.object().unknown(),\n width: joi.string(),\n})\n\nexport const baseField = joi\n .object()\n .keys({\n access: joi.object().keys({\n create: joi.func(),\n read: joi.func(),\n update: joi.func(),\n }),\n admin: baseAdminFields.default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n hidden: joi.boolean().default(false),\n hooks: joi\n .object()\n .keys({\n afterChange: joi.array().items(joi.func()).default([]),\n afterRead: joi.array().items(joi.func()).default([]),\n beforeChange: joi.array().items(joi.func()).default([]),\n beforeDuplicate: joi.array().items(joi.func()).default([]),\n beforeValidate: joi.array().items(joi.func()).default([]),\n })\n .default(),\n index: joi.boolean().default(false),\n label: joi\n .alternatives()\n .try(\n joi.func(),\n joi.object().pattern(joi.string(), [joi.string()]),\n joi.string(),\n joi.valid(false),\n ),\n localized: joi.boolean().default(false),\n required: joi.boolean().default(false),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()).default(false),\n unique: joi.boolean().default(false),\n validate: joi.func(),\n })\n .default()\n\nexport const idField = baseField.keys({\n name: joi.string().valid('id'),\n type: joi.string().valid('text', 'number'),\n localized: joi.invalid(true),\n required: joi.not(false, 0).default(true),\n})\n\nexport const text = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('text').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi\n .alternatives()\n .try(joi.object().pattern(joi.string(), [joi.string()]), joi.string()),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n maxLength: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n minLength: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const number = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('number').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n beforeInput: joi\n .array()\n .items(componentSchema)\n .when('hasMany', { not: true, otherwise: joi.forbidden() }),\n }),\n placeholder: joi.string(),\n step: joi.number(),\n }),\n defaultValue: joi\n .alternatives()\n .try(\n joi.number(),\n joi.func(),\n joi.array().when('hasMany', { not: true, then: joi.forbidden() }),\n ),\n hasMany: joi.boolean().default(false),\n max: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi.number(),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n})\n\nexport const textarea = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('textarea').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n rows: joi.number(),\n rtl: joi.boolean(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const email = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('email').required(),\n admin: baseAdminFields.keys({\n autoComplete: joi.string(),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n maxLength: joi.number(),\n minLength: joi.number(),\n})\n\nexport const code = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('code').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n language: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const json = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('json').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n editorOptions: joi.object().unknown(), // Editor['options'] @monaco-editor/react\n }),\n defaultValue: joi.alternatives().try(joi.array(), joi.object()),\n jsonSchema: joi.object().unknown(),\n})\n\nexport const select = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('select').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isClearable: joi.boolean().default(false),\n isSortable: joi.boolean().default(false),\n }),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi\n .alternatives()\n .try(joi.string().allow(''), joi.array().items(joi.string().allow('')), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n hasMany: joi.boolean().default(false),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const radio = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('radio').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n layout: joi.string().valid('vertical', 'horizontal'),\n }),\n defaultValue: joi.alternatives().try(joi.string().allow(''), joi.func()),\n enumName: joi.alternatives().try(joi.string(), joi.func()),\n options: joi\n .array()\n .min(1)\n .items(\n joi.alternatives().try(\n joi.string(),\n joi.object({\n label: joi\n .alternatives()\n .try(joi.func(), joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .required(),\n value: joi.string().required().allow(''),\n }),\n ),\n )\n .required(),\n})\n\nexport const row = baseField.keys({\n type: joi.string().valid('row').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n})\n\nexport const collapsible = baseField.keys({\n type: joi.string().valid('collapsible').required(),\n admin: baseAdminFields.default(),\n fields: joi.array().items(joi.link('#field')),\n label: joi.alternatives().try(joi.string(), componentSchema),\n})\n\nconst tab = baseField.keys({\n name: joi.string().when('localized', { is: joi.exist(), then: joi.required() }),\n description: joi.alternatives().try(joi.string(), componentSchema),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string().when('name', { not: joi.exist(), then: joi.forbidden() }),\n label: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()]))\n .when('name', { is: joi.not(), then: joi.required() }),\n localized: joi.boolean(),\n saveToJWT: joi.alternatives().try(joi.boolean(), joi.string()),\n})\n\nexport const tabs = baseField.keys({\n type: joi.string().valid('tabs').required(),\n admin: baseAdminFields.keys({\n description: joi.forbidden(),\n }),\n fields: joi.forbidden(),\n localized: joi.forbidden(),\n tabs: joi.array().items(tab).required(),\n})\n\nexport const group = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('group').required(),\n admin: baseAdminFields.keys({\n hideGutter: joi.boolean().default(true),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n interfaceName: joi.string(),\n})\n\nexport const array = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('array').required(),\n admin: baseAdminFields\n .keys({\n components: baseAdminComponentFields\n .keys({\n RowLabel: componentSchema,\n })\n .default({}),\n })\n .default({}),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n fields: joi.array().items(joi.link('#field')).required(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const upload = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('upload').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.object(), joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n maxDepth: joi.number(),\n relationTo: joi.string().required(),\n})\n\nexport const checkbox = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('checkbox').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.boolean(), joi.func()),\n})\n\nexport const point = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('point').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.number()).max(2).min(2), joi.func()),\n})\n\nexport const relationship = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('relationship').required(),\n admin: baseAdminFields.keys({\n allowCreate: joi.boolean().default(true),\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n isSortable: joi.boolean().default(false),\n sortOptions: joi.alternatives().conditional(joi.ref('...relationTo'), {\n is: joi.string(),\n otherwise: joi.object().pattern(joi.string(), joi.string()),\n then: joi.string(),\n }),\n }),\n defaultValue: joi.alternatives().try(joi.func()),\n filterOptions: joi.alternatives().try(joi.object(), joi.func()),\n hasMany: joi.boolean().default(false),\n max: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use maxRows instead.' }),\n maxDepth: joi.number(),\n maxRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n min: joi\n .number()\n .when('hasMany', { is: joi.not(true), then: joi.forbidden() })\n .warning('deprecated', { message: 'Use minRows instead.' }),\n minRows: joi.number().when('hasMany', { is: joi.not(true), then: joi.forbidden() }),\n relationTo: joi.alternatives().try(joi.string().required(), joi.array().items(joi.string())),\n})\n\nexport const blocks = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('blocks').required(),\n blocks: joi\n .array()\n .items(\n joi.object({\n slug: joi.string().required(),\n admin: joi.object().keys({\n custom: joi.object().pattern(joi.string(), joi.any()),\n }),\n custom: joi.object().pattern(joi.string(), joi.any()),\n dbName: joi.alternatives().try(joi.string(), joi.func()),\n fields: joi.array().items(joi.link('#field')),\n graphQL: joi.object().keys({\n singularName: joi.string(),\n }),\n imageAltText: joi.string(),\n imageURL: joi.string(),\n interfaceName: joi.string(),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n }),\n )\n .required(),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func()),\n labels: joi.object({\n plural: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n singular: joi\n .alternatives()\n .try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n }),\n maxRows: joi.number(),\n minRows: joi.number(),\n})\n\nexport const richText = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('richText').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n }),\n }),\n defaultValue: joi.alternatives().try(joi.array().items(joi.object()), joi.func(), joi.object()),\n editor: joi\n .object()\n .keys({\n CellComponent: componentSchema.optional(),\n FieldComponent: componentSchema.optional(),\n afterReadPromise: joi.func().optional(),\n outputSchema: joi.func().optional(),\n populationPromise: joi.func().optional(),\n validate: joi.func().required(),\n })\n .unknown(),\n})\n\nexport const date = baseField.keys({\n name: joi.string().required(),\n type: joi.string().valid('date').required(),\n admin: baseAdminFields.keys({\n components: baseAdminComponentFields.keys({\n Error: componentSchema,\n Label: componentSchema,\n afterInput: joi.array().items(componentSchema),\n beforeInput: joi.array().items(componentSchema),\n }),\n date: joi.object({\n displayFormat: joi.string(),\n maxDate: joi.date(),\n maxTime: joi.date(),\n minDate: joi.date(),\n minTime: joi.date(),\n monthsToShow: joi.number(),\n overrides: joi.object().unknown(),\n pickerAppearance: joi.string(),\n timeFormat: joi.string(),\n timeIntervals: joi.number(),\n }),\n placeholder: joi.string(),\n }),\n defaultValue: joi.alternatives().try(joi.string(), joi.func()),\n})\n\nexport const ui = joi.object().keys({\n name: joi.string().required(),\n type: joi.string().valid('ui').required(),\n admin: joi\n .object()\n .keys({\n components: joi\n .object()\n .keys({\n Cell: componentSchema,\n Field: componentSchema,\n })\n .default({}),\n condition: joi.func(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n position: joi.string().valid('sidebar'),\n width: joi.string(),\n })\n .default(),\n custom: joi.object().pattern(joi.string(), joi.any()),\n label: joi.alternatives().try(joi.string(), joi.object().pattern(joi.string(), [joi.string()])),\n})\n\nconst fieldSchema = joi\n .alternatives()\n .try(\n text,\n number,\n textarea,\n email,\n code,\n json,\n select,\n group,\n array,\n row,\n collapsible,\n tabs,\n radio,\n relationship,\n checkbox,\n upload,\n richText,\n blocks,\n date,\n point,\n ui,\n )\n .id('field')\n\nexport default fieldSchema\n"],"names":["joi","componentSchema","baseAdminComponentFields","object","keys","Cell","Field","Filter","default","baseAdminFields","className","string","components","condition","func","custom","pattern","any","description","alternatives","try","disableBulkEdit","boolean","disabled","hidden","initCollapsed","position","valid","readOnly","style","unknown","width","baseField","access","create","read","update","admin","hooks","afterChange","array","items","afterRead","beforeChange","beforeDuplicate","beforeValidate","index","label","localized","required","saveToJWT","unique","validate","idField","name","type","invalid","not","text","autoComplete","Error","Label","afterInput","beforeInput","placeholder","rtl","defaultValue","hasMany","maxLength","number","maxRows","when","is","then","forbidden","minLength","minRows","otherwise","step","max","min","textarea","rows","email","code","editorOptions","language","json","jsonSchema","select","isClearable","isSortable","dbName","allow","enumName","options","value","radio","layout","row","fields","link","collapsible","tab","exist","interfaceName","tabs","group","hideGutter","RowLabel","labels","plural","singular","upload","filterOptions","maxDepth","relationTo","checkbox","point","relationship","allowCreate","sortOptions","conditional","ref","warning","message","blocks","slug","graphQL","singularName","imageAltText","imageURL","richText","editor","CellComponent","optional","FieldComponent","afterReadPromise","outputSchema","populationPromise","date","displayFormat","maxDate","maxTime","minDate","minTime","monthsToShow","overrides","pickerAppearance","timeFormat","timeIntervals","ui","fieldSchema","id"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|