payload 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ee5d8bd
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/adapters/router.d.ts +1 -1
- package/dist/admin/adapters/router.d.ts.map +1 -1
- package/dist/admin/adapters/router.js.map +1 -1
- package/dist/admin/forms/Diff.d.ts +0 -4
- package/dist/admin/forms/Diff.d.ts.map +1 -1
- package/dist/admin/forms/Diff.js.map +1 -1
- package/dist/admin/forms/Form.d.ts +0 -2
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/initAdminContext.d.ts.map +1 -1
- package/dist/admin/initAdminContext.js +0 -10
- package/dist/admin/initAdminContext.js.map +1 -1
- package/dist/auth/createAuthToken.d.ts +26 -0
- package/dist/auth/createAuthToken.d.ts.map +1 -0
- package/dist/auth/createAuthToken.js +39 -0
- package/dist/auth/createAuthToken.js.map +1 -0
- package/dist/auth/endpoints/refresh.d.ts.map +1 -1
- package/dist/auth/endpoints/refresh.js +2 -1
- package/dist/auth/endpoints/refresh.js.map +1 -1
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/loginWithCookie.d.ts.map +1 -1
- package/dist/auth/loginWithCookie.js +1 -0
- package/dist/auth/loginWithCookie.js.map +1 -1
- package/dist/auth/operations/local/login.d.ts.map +1 -1
- package/dist/auth/operations/local/login.js +1 -0
- package/dist/auth/operations/local/login.js.map +1 -1
- package/dist/auth/operations/login.d.ts +2 -0
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +6 -19
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts +8 -0
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +50 -19
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +54 -20
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/refreshAuthToken.d.ts +32 -0
- package/dist/auth/refreshAuthToken.d.ts.map +1 -0
- package/dist/auth/refreshAuthToken.js +113 -0
- package/dist/auth/refreshAuthToken.js.map +1 -0
- package/dist/auth/serverFunctions/cookies.js.map +1 -1
- package/dist/auth/serverFunctions/login.js.map +1 -1
- package/dist/auth/sessions.d.ts +9 -2
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/sessions.js +6 -5
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/types.d.ts +25 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/cli/commands/data/utilities.d.ts +1 -1
- package/dist/cli/commands/data/utilities.d.ts.map +1 -1
- package/dist/cli/commands/data/utilities.js.map +1 -1
- package/dist/cli/defineCLICommand.js +1 -1
- package/dist/cli/defineCLICommand.js.map +1 -1
- package/dist/collections/config/client.d.ts +1 -1
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +0 -1
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts +2 -0
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +4 -0
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +3 -0
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.js +0 -9
- package/dist/collections/config/sanitizeCompoundIndexes.js.map +1 -1
- package/dist/collections/config/types.d.ts +4 -21
- 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 +1 -10
- package/dist/collections/dataloader.d.ts.map +1 -1
- package/dist/collections/dataloader.js +6 -14
- package/dist/collections/dataloader.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +0 -13
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +121 -638
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js +32 -238
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +0 -6
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/findDistinct.js +6 -7
- package/dist/collections/operations/findDistinct.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +7 -0
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.js +5 -0
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/local/count.d.ts +4 -9
- package/dist/collections/operations/local/count.d.ts.map +1 -1
- package/dist/collections/operations/local/count.js.map +1 -1
- package/dist/collections/operations/local/countVersions.d.ts +0 -4
- package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/countVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +4 -9
- 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 -9
- 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 +0 -5
- 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 -9
- 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 -9
- 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/findDistinct.d.ts +0 -5
- package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/local/findDistinct.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +0 -5
- 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 +0 -5
- 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/restoreVersion.d.ts +0 -5
- 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 -9
- 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/renameFile.js +1 -1
- package/dist/collections/operations/renameFile.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +76 -157
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +171 -357
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +0 -15
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +60 -265
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -1
- package/dist/collections/operations/utilities/buildBeforeOperation.js +0 -7
- package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -1
- package/dist/collections/operations/utilities/update.d.ts +1 -14
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +20 -92
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/collections/operations/validate.js +4 -4
- package/dist/collections/operations/validate.js.map +1 -1
- package/dist/config/client.d.ts +1 -3
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +1 -9
- 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/definePlugin.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +2 -40
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +13 -21
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/defaultCopy.d.ts.map +1 -1
- package/dist/database/defaultCopy.js +0 -1
- package/dist/database/defaultCopy.js.map +1 -1
- package/dist/database/types.d.ts +4 -75
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/exports/build-config.d.ts +9 -0
- package/dist/exports/build-config.d.ts.map +1 -0
- package/dist/exports/build-config.js +38 -0
- package/dist/exports/build-config.js.map +1 -0
- package/dist/exports/shared.d.ts +0 -2
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +0 -2
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/authorship/index.d.ts +1 -2
- package/dist/fields/baseFields/authorship/index.d.ts.map +1 -1
- package/dist/fields/baseFields/authorship/index.js +0 -12
- package/dist/fields/baseFields/authorship/index.js.map +1 -1
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
- package/dist/fields/config/reservedFieldNames.js.map +1 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts +0 -8
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.js +2 -6
- package/dist/fields/hooks/afterRead/index.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +1 -3
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +17 -41
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +0 -2
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +1 -3
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +2 -4
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js +0 -3
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
- package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +96 -22
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +0 -8
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +4 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/types.d.ts +2 -6
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
- package/dist/globals/operations/countGlobalVersions.js +0 -7
- package/dist/globals/operations/countGlobalVersions.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +0 -7
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.js +6 -6
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.js +4 -6
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/local/countVersions.d.ts +0 -5
- package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/countVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +0 -5
- 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 +0 -5
- 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 +0 -5
- 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 +0 -5
- 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 +0 -5
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +18 -61
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/restoreVersion.d.ts +2 -3
- package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/restoreVersion.js +24 -61
- package/dist/globals/operations/restoreVersion.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +8 -86
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/globals/operations/validate.js +1 -1
- package/dist/globals/operations/validate.js.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.js +32 -21
- package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
- package/dist/hierarchy/createFolderField.js.map +1 -1
- package/dist/hierarchy/getInitialTreeData.d.ts +1 -3
- package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
- package/dist/hierarchy/getInitialTreeData.js +1 -4
- package/dist/hierarchy/getInitialTreeData.js.map +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.js +9 -3
- package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
- package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
- package/dist/hierarchy/utils/computePaths.js.map +1 -1
- package/dist/index.bundled.d.ts +4336 -5501
- package/dist/index.d.ts +27 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -37
- package/dist/index.js.map +1 -1
- package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -1
- package/dist/llm-instructions/getInstructionsCollection.js +2 -0
- package/dist/llm-instructions/getInstructionsCollection.js.map +1 -1
- package/dist/preferences/keys.d.ts +4 -11
- package/dist/preferences/keys.d.ts.map +1 -1
- package/dist/preferences/keys.js +3 -10
- package/dist/preferences/keys.js.map +1 -1
- package/dist/preferences/types.d.ts +0 -19
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js +29 -108
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFile.js +0 -5
- package/dist/uploads/endpoints/getFile.js.map +1 -1
- package/dist/uploads/fileExists.d.ts.map +1 -1
- package/dist/uploads/fileExists.js +2 -5
- package/dist/uploads/fileExists.js.map +1 -1
- package/dist/uploads/fileVersioning/archive.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/archive.js +1 -15
- package/dist/uploads/fileVersioning/archive.js.map +1 -1
- package/dist/uploads/fileVersioning/cleanup.d.ts +0 -7
- package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/cleanup.js +0 -12
- package/dist/uploads/fileVersioning/cleanup.js.map +1 -1
- package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/cloudStorage.js +1 -16
- package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -1
- package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -1
- package/dist/uploads/formatFilesize.js +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts +0 -5
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +2 -74
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +29 -46
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getFileContentRequirement.js.map +1 -1
- package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
- package/dist/uploads/getSafeFilename.d.ts.map +1 -1
- package/dist/uploads/getSafeFilename.js +3 -5
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/uploads/safeFetch.js.map +1 -1
- package/dist/uploads/stagedUpload.js.map +1 -1
- package/dist/uploads/transformers/handleDynamicFileRequest.js +11 -2
- package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -1
- package/dist/uploads/types.d.ts +0 -11
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/uploadFiles.d.ts +1 -4
- package/dist/uploads/uploadFiles.d.ts.map +1 -1
- package/dist/uploads/uploadFiles.js +5 -29
- package/dist/uploads/uploadFiles.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
- package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -1
- package/dist/utilities/assertNoValidationWrite.js +0 -4
- package/dist/utilities/assertNoValidationWrite.js.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.d.ts +6 -15
- package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.js +11 -44
- package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
- package/dist/utilities/cloneValidationRequest.js.map +1 -1
- package/dist/utilities/commitTransaction.d.ts +0 -4
- package/dist/utilities/commitTransaction.d.ts.map +1 -1
- package/dist/utilities/commitTransaction.js +1 -41
- package/dist/utilities/commitTransaction.js.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +2 -18
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts +0 -5
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +3 -50
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +12 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.js +9 -5
- package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -1
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/documentMatchingWhereExists.js +1 -1
- package/dist/utilities/documentMatchingWhereExists.js.map +1 -1
- package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -1
- package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -1
- package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js +1 -0
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
- package/dist/utilities/getVersionsConfig.d.ts +4 -0
- package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
- package/dist/utilities/getVersionsConfig.js +5 -0
- package/dist/utilities/getVersionsConfig.js.map +1 -1
- package/dist/utilities/handleEndpoints.d.ts.map +1 -1
- package/dist/utilities/handleEndpoints.js +10 -9
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/httpStatus.d.ts +0 -2
- package/dist/utilities/httpStatus.d.ts.map +1 -1
- package/dist/utilities/httpStatus.js +1 -3
- package/dist/utilities/httpStatus.js.map +1 -1
- package/dist/utilities/initTransaction.d.ts.map +1 -1
- package/dist/utilities/initTransaction.js +7 -35
- package/dist/utilities/initTransaction.js.map +1 -1
- package/dist/utilities/killTransaction.d.ts.map +1 -1
- package/dist/utilities/killTransaction.js +0 -27
- package/dist/utilities/killTransaction.js.map +1 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseValidationLocale.js.map +1 -1
- package/dist/utilities/sanitizePopulateParam.js.map +1 -1
- package/dist/utilities/telemetry/conf/index.d.ts +4 -1
- package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -1
- package/dist/versions/allLocalesPublicationStatus.js.map +1 -1
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +0 -23
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +0 -14
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
- package/dist/versions/buildVersionCompoundIndexes.js +2 -8
- package/dist/versions/buildVersionCompoundIndexes.js.map +1 -1
- package/dist/versions/deleteCollectionVersions.d.ts +1 -2
- package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
- package/dist/versions/deleteCollectionVersions.js +8 -37
- package/dist/versions/deleteCollectionVersions.js.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.js +0 -4
- package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js +1 -9
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -8
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/enforceMaxVersions.d.ts +0 -1
- package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
- package/dist/versions/enforceMaxVersions.js +6 -22
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +2 -10
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts +2 -6
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +21 -65
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -1
- package/dist/versions/saveVersion.d.ts +0 -7
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +4 -27
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/updateLatestVersion.d.ts +0 -1
- package/dist/versions/updateLatestVersion.d.ts.map +1 -1
- package/dist/versions/updateLatestVersion.js +7 -24
- package/dist/versions/updateLatestVersion.js.map +1 -1
- package/package.json +30 -28
- package/skills/payload/reference/ENDPOINTS.md +3 -9
- package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +4 -4
- package/dist/admin/getAdminPreferences.d.ts +0 -10
- package/dist/admin/getAdminPreferences.d.ts.map +0 -1
- package/dist/admin/getAdminPreferences.js +0 -53
- package/dist/admin/getAdminPreferences.js.map +0 -1
- package/dist/admin/getRequestBranch.d.ts +0 -6
- package/dist/admin/getRequestBranch.d.ts.map +0 -1
- package/dist/admin/getRequestBranch.js +0 -17
- package/dist/admin/getRequestBranch.js.map +0 -1
- package/dist/branching/appendBranchFilter.d.ts +0 -30
- package/dist/branching/appendBranchFilter.d.ts.map +0 -1
- package/dist/branching/appendBranchFilter.js +0 -105
- package/dist/branching/appendBranchFilter.js.map +0 -1
- package/dist/branching/assertBranchAccess.d.ts +0 -10
- package/dist/branching/assertBranchAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchAccess.js +0 -36
- package/dist/branching/assertBranchAccess.js.map +0 -1
- package/dist/branching/assertBranchActionAccess.d.ts +0 -10
- package/dist/branching/assertBranchActionAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchActionAccess.js +0 -15
- package/dist/branching/assertBranchActionAccess.js.map +0 -1
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts +0 -53
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts.map +0 -1
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js +0 -833
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js.map +0 -1
- package/dist/branching/assertBranchReadable.d.ts +0 -36
- package/dist/branching/assertBranchReadable.d.ts.map +0 -1
- package/dist/branching/assertBranchReadable.js +0 -83
- package/dist/branching/assertBranchReadable.js.map +0 -1
- package/dist/branching/assertBranchUpdateAccess.d.ts +0 -8
- package/dist/branching/assertBranchUpdateAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchUpdateAccess.js +0 -12
- package/dist/branching/assertBranchUpdateAccess.js.map +0 -1
- package/dist/branching/assertBranchWritable.d.ts +0 -18
- package/dist/branching/assertBranchWritable.d.ts.map +0 -1
- package/dist/branching/assertBranchWritable.js +0 -46
- package/dist/branching/assertBranchWritable.js.map +0 -1
- package/dist/branching/branchIDs.d.ts +0 -38
- package/dist/branching/branchIDs.d.ts.map +0 -1
- package/dist/branching/branchIDs.js +0 -113
- package/dist/branching/branchIDs.js.map +0 -1
- package/dist/branching/branchSelect.d.ts +0 -42
- package/dist/branching/branchSelect.d.ts.map +0 -1
- package/dist/branching/branchSelect.js +0 -97
- package/dist/branching/branchSelect.js.map +0 -1
- package/dist/branching/checkFieldAccess.d.ts +0 -21
- package/dist/branching/checkFieldAccess.d.ts.map +0 -1
- package/dist/branching/checkFieldAccess.js +0 -238
- package/dist/branching/checkFieldAccess.js.map +0 -1
- package/dist/branching/collections.d.ts +0 -14
- package/dist/branching/collections.d.ts.map +0 -1
- package/dist/branching/collections.js +0 -713
- package/dist/branching/collections.js.map +0 -1
- package/dist/branching/combineBranchAccess.d.ts +0 -6
- package/dist/branching/combineBranchAccess.d.ts.map +0 -1
- package/dist/branching/combineBranchAccess.js +0 -22
- package/dist/branching/combineBranchAccess.js.map +0 -1
- package/dist/branching/copyUploadFilesToBranch.d.ts +0 -9
- package/dist/branching/copyUploadFilesToBranch.d.ts.map +0 -1
- package/dist/branching/copyUploadFilesToBranch.js +0 -126
- package/dist/branching/copyUploadFilesToBranch.js.map +0 -1
- package/dist/branching/createShadowRow.d.ts +0 -70
- package/dist/branching/createShadowRow.d.ts.map +0 -1
- package/dist/branching/createShadowRow.js +0 -296
- package/dist/branching/createShadowRow.js.map +0 -1
- package/dist/branching/discard.d.ts +0 -52
- package/dist/branching/discard.d.ts.map +0 -1
- package/dist/branching/discard.js +0 -428
- package/dist/branching/discard.js.map +0 -1
- package/dist/branching/effectiveOperations.d.ts +0 -55
- package/dist/branching/effectiveOperations.d.ts.map +0 -1
- package/dist/branching/effectiveOperations.js +0 -472
- package/dist/branching/effectiveOperations.js.map +0 -1
- package/dist/branching/endpoints/discard.d.ts +0 -15
- package/dist/branching/endpoints/discard.d.ts.map +0 -1
- package/dist/branching/endpoints/discard.js +0 -55
- package/dist/branching/endpoints/discard.js.map +0 -1
- package/dist/branching/endpoints/merge.d.ts +0 -34
- package/dist/branching/endpoints/merge.d.ts.map +0 -1
- package/dist/branching/endpoints/merge.js +0 -119
- package/dist/branching/endpoints/merge.js.map +0 -1
- package/dist/branching/forkDocument.d.ts +0 -20
- package/dist/branching/forkDocument.d.ts.map +0 -1
- package/dist/branching/forkDocument.js +0 -169
- package/dist/branching/forkDocument.js.map +0 -1
- package/dist/branching/globalMergeWrites.d.ts +0 -21
- package/dist/branching/globalMergeWrites.d.ts.map +0 -1
- package/dist/branching/globalMergeWrites.js +0 -146
- package/dist/branching/globalMergeWrites.js.map +0 -1
- package/dist/branching/globals.d.ts +0 -49
- package/dist/branching/globals.d.ts.map +0 -1
- package/dist/branching/globals.js +0 -197
- package/dist/branching/globals.js.map +0 -1
- package/dist/branching/hooks.d.ts +0 -24
- package/dist/branching/hooks.d.ts.map +0 -1
- package/dist/branching/hooks.js +0 -92
- package/dist/branching/hooks.js.map +0 -1
- package/dist/branching/injectBranchFields.d.ts +0 -40
- package/dist/branching/injectBranchFields.d.ts.map +0 -1
- package/dist/branching/injectBranchFields.js +0 -229
- package/dist/branching/injectBranchFields.js.map +0 -1
- package/dist/branching/merge/applyMergeChange.d.ts +0 -27
- package/dist/branching/merge/applyMergeChange.d.ts.map +0 -1
- package/dist/branching/merge/applyMergeChange.js +0 -853
- package/dist/branching/merge/applyMergeChange.js.map +0 -1
- package/dist/branching/merge/branchMergeStatus.d.ts +0 -12
- package/dist/branching/merge/branchMergeStatus.d.ts.map +0 -1
- package/dist/branching/merge/branchMergeStatus.js +0 -74
- package/dist/branching/merge/branchMergeStatus.js.map +0 -1
- package/dist/branching/merge/executeMerge.d.ts +0 -22
- package/dist/branching/merge/executeMerge.d.ts.map +0 -1
- package/dist/branching/merge/executeMerge.js +0 -600
- package/dist/branching/merge/executeMerge.js.map +0 -1
- package/dist/branching/merge/finalizeMerge.d.ts +0 -40
- package/dist/branching/merge/finalizeMerge.d.ts.map +0 -1
- package/dist/branching/merge/finalizeMerge.js +0 -237
- package/dist/branching/merge/finalizeMerge.js.map +0 -1
- package/dist/branching/merge/mergeLedger.d.ts +0 -40
- package/dist/branching/merge/mergeLedger.d.ts.map +0 -1
- package/dist/branching/merge/mergeLedger.js +0 -130
- package/dist/branching/merge/mergeLedger.js.map +0 -1
- package/dist/branching/merge/prepareMerge.d.ts +0 -41
- package/dist/branching/merge/prepareMerge.d.ts.map +0 -1
- package/dist/branching/merge/prepareMerge.js +0 -234
- package/dist/branching/merge/prepareMerge.js.map +0 -1
- package/dist/branching/merge/recoverMerge.d.ts +0 -16
- package/dist/branching/merge/recoverMerge.d.ts.map +0 -1
- package/dist/branching/merge/recoverMerge.js +0 -199
- package/dist/branching/merge/recoverMerge.js.map +0 -1
- package/dist/branching/merge/retryFailedCleanups.d.ts +0 -36
- package/dist/branching/merge/retryFailedCleanups.d.ts.map +0 -1
- package/dist/branching/merge/retryFailedCleanups.js +0 -335
- package/dist/branching/merge/retryFailedCleanups.js.map +0 -1
- package/dist/branching/merge/utilities.d.ts +0 -35
- package/dist/branching/merge/utilities.d.ts.map +0 -1
- package/dist/branching/merge/utilities.js +0 -54
- package/dist/branching/merge/utilities.js.map +0 -1
- package/dist/branching/merge.d.ts +0 -88
- package/dist/branching/merge.d.ts.map +0 -1
- package/dist/branching/merge.js +0 -163
- package/dist/branching/merge.js.map +0 -1
- package/dist/branching/mergeWriteGuard.d.ts +0 -20
- package/dist/branching/mergeWriteGuard.d.ts.map +0 -1
- package/dist/branching/mergeWriteGuard.js +0 -27
- package/dist/branching/mergeWriteGuard.js.map +0 -1
- package/dist/branching/preflight.d.ts +0 -71
- package/dist/branching/preflight.d.ts.map +0 -1
- package/dist/branching/preflight.js +0 -757
- package/dist/branching/preflight.js.map +0 -1
- package/dist/branching/readLocalizedBranchWrite.d.ts +0 -14
- package/dist/branching/readLocalizedBranchWrite.d.ts.map +0 -1
- package/dist/branching/readLocalizedBranchWrite.js +0 -90
- package/dist/branching/readLocalizedBranchWrite.js.map +0 -1
- package/dist/branching/readMergeSnapshot.d.ts +0 -18
- package/dist/branching/readMergeSnapshot.d.ts.map +0 -1
- package/dist/branching/readMergeSnapshot.js +0 -99
- package/dist/branching/readMergeSnapshot.js.map +0 -1
- package/dist/branching/resolveBranch.d.ts +0 -153
- package/dist/branching/resolveBranch.d.ts.map +0 -1
- package/dist/branching/resolveBranch.js +0 -363
- package/dist/branching/resolveBranch.js.map +0 -1
- package/dist/branching/resolveBranchActionAccess.d.ts +0 -8
- package/dist/branching/resolveBranchActionAccess.d.ts.map +0 -1
- package/dist/branching/resolveBranchActionAccess.js +0 -9
- package/dist/branching/resolveBranchActionAccess.js.map +0 -1
- package/dist/branching/resolveBranchQuery.d.ts +0 -48
- package/dist/branching/resolveBranchQuery.d.ts.map +0 -1
- package/dist/branching/resolveBranchQuery.js +0 -115
- package/dist/branching/resolveBranchQuery.js.map +0 -1
- package/dist/branching/resolveBranchRowID.d.ts +0 -22
- package/dist/branching/resolveBranchRowID.d.ts.map +0 -1
- package/dist/branching/resolveBranchRowID.js +0 -70
- package/dist/branching/resolveBranchRowID.js.map +0 -1
- package/dist/branching/sanitizeBranchingConfig.d.ts +0 -31
- package/dist/branching/sanitizeBranchingConfig.d.ts.map +0 -1
- package/dist/branching/sanitizeBranchingConfig.js +0 -110
- package/dist/branching/sanitizeBranchingConfig.js.map +0 -1
- package/dist/branching/schedule/job.d.ts +0 -51
- package/dist/branching/schedule/job.d.ts.map +0 -1
- package/dist/branching/schedule/job.js +0 -151
- package/dist/branching/schedule/job.js.map +0 -1
- package/dist/branching/selectBranchChanges.d.ts +0 -8
- package/dist/branching/selectBranchChanges.d.ts.map +0 -1
- package/dist/branching/selectBranchChanges.js +0 -9
- package/dist/branching/selectBranchChanges.js.map +0 -1
- package/dist/branching/stripBranchMergeData.d.ts +0 -11
- package/dist/branching/stripBranchMergeData.d.ts.map +0 -1
- package/dist/branching/stripBranchMergeData.js +0 -20
- package/dist/branching/stripBranchMergeData.js.map +0 -1
- package/dist/branching/tombstone.d.ts +0 -91
- package/dist/branching/tombstone.d.ts.map +0 -1
- package/dist/branching/tombstone.js +0 -546
- package/dist/branching/tombstone.js.map +0 -1
- package/dist/branching/types.d.ts +0 -158
- package/dist/branching/types.d.ts.map +0 -1
- package/dist/branching/types.js +0 -54
- package/dist/branching/types.js.map +0 -1
- package/dist/branching/validation.d.ts +0 -47
- package/dist/branching/validation.d.ts.map +0 -1
- package/dist/branching/validation.js +0 -272
- package/dist/branching/validation.js.map +0 -1
- package/dist/branching/versions.d.ts +0 -131
- package/dist/branching/versions.d.ts.map +0 -1
- package/dist/branching/versions.js +0 -572
- package/dist/branching/versions.js.map +0 -1
- package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts +0 -23
- package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts.map +0 -1
- package/dist/collections/operations/utilities/createOperationRetryRequest.js +0 -683
- package/dist/collections/operations/utilities/createOperationRetryRequest.js.map +0 -1
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts +0 -3
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts.map +0 -1
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js +0 -3
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js.map +0 -1
- package/dist/uploads/appendBranchToFileURL.d.ts +0 -6
- package/dist/uploads/appendBranchToFileURL.d.ts.map +0 -1
- package/dist/uploads/appendBranchToFileURL.js +0 -24
- package/dist/uploads/appendBranchToFileURL.js.map +0 -1
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts +0 -15
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts.map +0 -1
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.js +0 -62
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.js.map +0 -1
- package/dist/uploads/fileIdentity.d.ts +0 -24
- package/dist/uploads/fileIdentity.d.ts.map +0 -1
- package/dist/uploads/fileIdentity.js +0 -36
- package/dist/uploads/fileIdentity.js.map +0 -1
- package/dist/uploads/fileQuarantine.d.ts +0 -17
- package/dist/uploads/fileQuarantine.d.ts.map +0 -1
- package/dist/uploads/fileQuarantine.js +0 -52
- package/dist/uploads/fileQuarantine.js.map +0 -1
- package/dist/uploads/linkFileWithoutOverwrite.d.ts +0 -13
- package/dist/uploads/linkFileWithoutOverwrite.d.ts.map +0 -1
- package/dist/uploads/linkFileWithoutOverwrite.js +0 -13
- package/dist/uploads/linkFileWithoutOverwrite.js.map +0 -1
- package/dist/uploads/uploadFileRollback.d.ts +0 -31
- package/dist/uploads/uploadFileRollback.d.ts.map +0 -1
- package/dist/uploads/uploadFileRollback.js +0 -269
- package/dist/uploads/uploadFileRollback.js.map +0 -1
- package/dist/utilities/extractRelationshipID.d.ts +0 -4
- package/dist/utilities/extractRelationshipID.d.ts.map +0 -1
- package/dist/utilities/extractRelationshipID.js +0 -14
- package/dist/utilities/extractRelationshipID.js.map +0 -1
- package/dist/utilities/transactionCallbacks.d.ts +0 -77
- package/dist/utilities/transactionCallbacks.d.ts.map +0 -1
- package/dist/utilities/transactionCallbacks.js +0 -299
- package/dist/utilities/transactionCallbacks.js.map +0 -1
- package/dist/utilities/transactionMutationTracker.d.ts +0 -21
- package/dist/utilities/transactionMutationTracker.d.ts.map +0 -1
- package/dist/utilities/transactionMutationTracker.js +0 -71
- package/dist/utilities/transactionMutationTracker.js.map +0 -1
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
import { isDeepStrictEqual } from 'node:util';
|
|
2
1
|
import { executeAccess } from '../../auth/executeAccess.js';
|
|
3
2
|
import { hasWhereAccessResult } from '../../auth/types.js';
|
|
4
|
-
import { assertBranchReadable } from '../../branching/assertBranchReadable.js';
|
|
5
|
-
import { recordBranchGlobalChange, resolveBranchGlobalWrite } from '../../branching/globals.js';
|
|
6
|
-
import { assertBranchMergeValidationWriteAllowed, runBranchMergeWriteGuard } from '../../branching/mergeWriteGuard.js';
|
|
7
|
-
import { branchField, MAIN_BRANCH } from '../../branching/types.js';
|
|
8
|
-
import { combineQueries } from '../../database/combineQueries.js';
|
|
9
3
|
import { Forbidden, ValidationError } from '../../errors/index.js';
|
|
10
4
|
import { afterChange } from '../../fields/hooks/afterChange/index.js';
|
|
11
5
|
import { afterRead } from '../../fields/hooks/afterRead/index.js';
|
|
@@ -23,7 +17,6 @@ import { killTransaction } from '../../utilities/killTransaction.js';
|
|
|
23
17
|
import { resolvePublishAllLocales } from '../../utilities/resolvePublishAllLocales.js';
|
|
24
18
|
import { resolveSelect } from '../../utilities/resolveSelect.js';
|
|
25
19
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
26
|
-
import { markTransactionWrite } from '../../utilities/transactionMutationTracker.js';
|
|
27
20
|
import { buildAllLocalesPublicationHookDoc, getAllLocalesPublicationStatus, hasAuthorizedAllLocalesPublicationStatus, normalizeAllLocalesPublicationStatus, reconcileAllLocalesPublicationStatus, validateAllLocalesPublicationFlags } from '../../versions/allLocalesPublicationStatus.js';
|
|
28
21
|
import { buildLocalizedPublishData } from '../../versions/buildSingleLocalePublishData.js';
|
|
29
22
|
import { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js';
|
|
@@ -33,15 +26,7 @@ export const updateOperation = async (args)=>{
|
|
|
33
26
|
assertNoValidationWrite(args.req);
|
|
34
27
|
const req = args.req;
|
|
35
28
|
const initialGlobalConfig = args.globalConfig;
|
|
36
|
-
|
|
37
|
-
req
|
|
38
|
-
});
|
|
39
|
-
if (!args.overrideAccess) {
|
|
40
|
-
await assertBranchReadable({
|
|
41
|
-
globalSlug: initialGlobalConfig.slug,
|
|
42
|
-
req
|
|
43
|
-
});
|
|
44
|
-
}
|
|
29
|
+
assertNoValidationWrite(req);
|
|
45
30
|
validateAllLocalesPublicationFlags({
|
|
46
31
|
publishAllLocales: args.publishAllLocales,
|
|
47
32
|
unpublishAllLocales: args.unpublishAllLocales
|
|
@@ -61,9 +46,8 @@ export const updateOperation = async (args)=>{
|
|
|
61
46
|
data: args.data,
|
|
62
47
|
status: initialAllLocalesPublicationStatus
|
|
63
48
|
});
|
|
64
|
-
let shouldCommit = false;
|
|
65
49
|
try {
|
|
66
|
-
shouldCommit = !args.disableTransaction && await initTransaction(req);
|
|
50
|
+
const shouldCommit = !args.disableTransaction && await initTransaction(req);
|
|
67
51
|
// /////////////////////////////////////
|
|
68
52
|
// beforeOperation - Global
|
|
69
53
|
// /////////////////////////////////////
|
|
@@ -110,8 +94,7 @@ export const updateOperation = async (args)=>{
|
|
|
110
94
|
if (isSavingDraft) {
|
|
111
95
|
data._status = 'draft';
|
|
112
96
|
}
|
|
113
|
-
const
|
|
114
|
-
const submittedTopLevelFieldNames = unpublishAllLocales ? incomingTopLevelFieldNames : undefined;
|
|
97
|
+
const submittedTopLevelFieldNames = unpublishAllLocales ? getTopLevelFieldNames(data) : undefined;
|
|
115
98
|
// /////////////////////////////////////
|
|
116
99
|
// 1. Retrieve and execute access
|
|
117
100
|
// /////////////////////////////////////
|
|
@@ -124,15 +107,6 @@ export const updateOperation = async (args)=>{
|
|
|
124
107
|
// Retrieve document
|
|
125
108
|
// /////////////////////////////////////
|
|
126
109
|
const query = overrideAccess ? undefined : accessResults;
|
|
127
|
-
const writeBranch = resolveBranchGlobalWrite({
|
|
128
|
-
globalSlug: slug,
|
|
129
|
-
req
|
|
130
|
-
});
|
|
131
|
-
const mainStorageQuery = !writeBranch && config?.branching?.branchableGlobals.has(slug) ? {
|
|
132
|
-
[branchField]: {
|
|
133
|
-
equals: MAIN_BRANCH
|
|
134
|
-
}
|
|
135
|
-
} : undefined;
|
|
136
110
|
// /////////////////////////////////////
|
|
137
111
|
// 2. Retrieve document
|
|
138
112
|
// /////////////////////////////////////
|
|
@@ -142,10 +116,9 @@ export const updateOperation = async (args)=>{
|
|
|
142
116
|
locale: publishAllLocales || unpublishAllLocales ? 'all' : locale,
|
|
143
117
|
payload,
|
|
144
118
|
req,
|
|
145
|
-
storageWhere: mainStorageQuery,
|
|
146
119
|
where: query
|
|
147
120
|
});
|
|
148
|
-
const { global, globalExists
|
|
121
|
+
const { global, globalExists } = globalVersionResult || {};
|
|
149
122
|
if (hasWhereAccessResult(accessResults) && globalExists && (!global || Object.keys(global).length === 0)) {
|
|
150
123
|
throw new Forbidden(req.t);
|
|
151
124
|
}
|
|
@@ -176,8 +149,7 @@ export const updateOperation = async (args)=>{
|
|
|
176
149
|
globalSlug: slug,
|
|
177
150
|
lockErrorMessage: `Global with slug "${slug}" is currently locked by another user and cannot be updated.`,
|
|
178
151
|
overrideLock,
|
|
179
|
-
req
|
|
180
|
-
shouldDeleteLock: false
|
|
152
|
+
req
|
|
181
153
|
});
|
|
182
154
|
// /////////////////////////////////////
|
|
183
155
|
// beforeValidate - Fields
|
|
@@ -319,7 +291,7 @@ export const updateOperation = async (args)=>{
|
|
|
319
291
|
slug: globalConfig.slug,
|
|
320
292
|
locale: 'all',
|
|
321
293
|
req,
|
|
322
|
-
where:
|
|
294
|
+
where: query
|
|
323
295
|
});
|
|
324
296
|
localizedPublishData = buildLocalizedPublishData({
|
|
325
297
|
config,
|
|
@@ -360,24 +332,6 @@ export const updateOperation = async (args)=>{
|
|
|
360
332
|
const dataToUpdate = {
|
|
361
333
|
...localizedPublishData ?? result
|
|
362
334
|
};
|
|
363
|
-
await runBranchMergeWriteGuard({
|
|
364
|
-
data: dataToUpdate,
|
|
365
|
-
globalSlug: slug,
|
|
366
|
-
req
|
|
367
|
-
});
|
|
368
|
-
if (localizedPublishData) {
|
|
369
|
-
await runBranchMergeWriteGuard({
|
|
370
|
-
data: result,
|
|
371
|
-
globalSlug: slug,
|
|
372
|
-
req
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
const branchConflictFieldNames = new Set(incomingTopLevelFieldNames);
|
|
376
|
-
for (const [fieldName, value] of Object.entries(dataToUpdate)){
|
|
377
|
-
if (!isDeepStrictEqual(value, globalJSON[fieldName])) {
|
|
378
|
-
branchConflictFieldNames.add(fieldName);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
335
|
// /////////////////////////////////////
|
|
382
336
|
// Update
|
|
383
337
|
// /////////////////////////////////////
|
|
@@ -390,12 +344,6 @@ export const updateOperation = async (args)=>{
|
|
|
390
344
|
select: incomingSelect
|
|
391
345
|
})
|
|
392
346
|
});
|
|
393
|
-
await checkDocumentLockStatus({
|
|
394
|
-
globalSlug: slug,
|
|
395
|
-
lockErrorMessage: `Global with slug "${slug}" is currently locked by another user and cannot be updated.`,
|
|
396
|
-
overrideLock,
|
|
397
|
-
req
|
|
398
|
-
});
|
|
399
347
|
let resultWithLocales = result;
|
|
400
348
|
if (!isSavingDraft) {
|
|
401
349
|
const now = new Date().toISOString();
|
|
@@ -405,17 +353,9 @@ export const updateOperation = async (args)=>{
|
|
|
405
353
|
}
|
|
406
354
|
// Ensure updatedAt date is always updated
|
|
407
355
|
dataToUpdate.updatedAt = now;
|
|
408
|
-
|
|
409
|
-
...branchConflictFieldNames
|
|
410
|
-
].filter((fieldName)=>Object.hasOwn(dataToUpdate, fieldName)).map((fieldName)=>[
|
|
411
|
-
fieldName,
|
|
412
|
-
dataToUpdate[fieldName]
|
|
413
|
-
])));
|
|
414
|
-
branchConflictData.updatedAt = now;
|
|
415
|
-
if (hasLiveGlobal || writeBranch) {
|
|
356
|
+
if (globalExists) {
|
|
416
357
|
resultWithLocales = await payload.db.updateGlobal({
|
|
417
358
|
slug,
|
|
418
|
-
branchConflictData,
|
|
419
359
|
data: dataToUpdate,
|
|
420
360
|
req,
|
|
421
361
|
select
|
|
@@ -427,9 +367,6 @@ export const updateOperation = async (args)=>{
|
|
|
427
367
|
req
|
|
428
368
|
});
|
|
429
369
|
}
|
|
430
|
-
markTransactionWrite({
|
|
431
|
-
req
|
|
432
|
-
});
|
|
433
370
|
resultWithLocales.updatedAt = now;
|
|
434
371
|
if (localizedPublishData) {
|
|
435
372
|
// Keep full locale payload for version writes during single-locale publish.
|
|
@@ -444,9 +381,6 @@ export const updateOperation = async (args)=>{
|
|
|
444
381
|
// Create version
|
|
445
382
|
// /////////////////////////////////////
|
|
446
383
|
if (globalConfig.versions) {
|
|
447
|
-
if (config?.branching?.branchableGlobals.has(slug)) {
|
|
448
|
-
resultWithLocales[branchField] = writeBranch ?? MAIN_BRANCH;
|
|
449
|
-
}
|
|
450
384
|
const { globalType } = resultWithLocales;
|
|
451
385
|
resultWithLocales = await saveVersion({
|
|
452
386
|
autosave,
|
|
@@ -459,21 +393,11 @@ export const updateOperation = async (args)=>{
|
|
|
459
393
|
select,
|
|
460
394
|
unpublish: unpublishAllLocales
|
|
461
395
|
});
|
|
462
|
-
markTransactionWrite({
|
|
463
|
-
req
|
|
464
|
-
});
|
|
465
396
|
resultWithLocales = {
|
|
466
397
|
...resultWithLocales,
|
|
467
398
|
globalType
|
|
468
399
|
};
|
|
469
400
|
}
|
|
470
|
-
if (writeBranch) {
|
|
471
|
-
await recordBranchGlobalChange({
|
|
472
|
-
branch: writeBranch,
|
|
473
|
-
globalSlug: slug,
|
|
474
|
-
req
|
|
475
|
-
});
|
|
476
|
-
}
|
|
477
401
|
// /////////////////////////////////////
|
|
478
402
|
// Execute globalType field if not selected
|
|
479
403
|
// /////////////////////////////////////
|
|
@@ -553,9 +477,7 @@ export const updateOperation = async (args)=>{
|
|
|
553
477
|
}
|
|
554
478
|
return result;
|
|
555
479
|
} catch (error) {
|
|
556
|
-
|
|
557
|
-
await killTransaction(req);
|
|
558
|
-
}
|
|
480
|
+
await killTransaction(req);
|
|
559
481
|
throw error;
|
|
560
482
|
}
|
|
561
483
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { isDeepStrictEqual } from 'node:util'\n\nimport type { FindOptions } from '../../collections/operations/local/find.js'\nimport type { Args as BeforeChangeArgs } from '../../fields/hooks/beforeChange/index.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { assertBranchReadable } from '../../branching/assertBranchReadable.js'\nimport { recordBranchGlobalChange, resolveBranchGlobalWrite } from '../../branching/globals.js'\nimport {\n assertBranchMergeValidationWriteAllowed,\n runBranchMergeWriteGuard,\n} from '../../branching/mergeWriteGuard.js'\nimport { branchField, MAIN_BRANCH } from '../../branching/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { Forbidden, ValidationError } from '../../errors/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { assertNoValidationWrite } from '../../utilities/assertNoValidationWrite.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { getTopLevelFieldNames } from '../../utilities/getTopLevelFieldNames.js'\nimport {\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolvePublishAllLocales } from '../../utilities/resolvePublishAllLocales.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { markTransactionWrite } from '../../utilities/transactionMutationTracker.js'\nimport {\n buildAllLocalesPublicationHookDoc,\n getAllLocalesPublicationStatus,\n hasAuthorizedAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { buildLocalizedPublishData } from '../../versions/buildSingleLocalePublishData.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\nimport { validateGlobalLocalWithLocaleKeyedData } from './local/validate.js'\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n assertNoValidationWrite(args.req)\n\n const req = args.req\n const initialGlobalConfig = args.globalConfig\n\n assertBranchMergeValidationWriteAllowed({ req })\n\n if (!args.overrideAccess) {\n await assertBranchReadable({ globalSlug: initialGlobalConfig.slug, req })\n }\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialPublishAllLocales = resolvePublishAllLocales({\n draft: args.draft,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(initialGlobalConfig),\n locale: req.locale,\n publishAllLocalesArg: args.publishAllLocales,\n })\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n req.payload.config.localization && hasLocalizeStatusEnabled(initialGlobalConfig),\n ),\n publishAllLocales: initialPublishAllLocales,\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n let shouldCommit = false\n\n try {\n shouldCommit = !args.disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (initialGlobalConfig.hooks?.beforeOperation?.length) {\n for (const hook of initialGlobalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: initialGlobalConfig,\n operation: 'update',\n overrideAccess: args.overrideAccess,\n req: args.req,\n })) || args\n }\n }\n\n const {\n slug,\n autosave,\n depth,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishAllLocales: publishAllLocalesArg,\n req: { fallbackLocale, locale, payload, payload: { config } = {} },\n select: incomingSelect,\n showHiddenFields,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n let { data } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n let publishAllLocales = resolvePublishAllLocales({\n draft: draftArg,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(globalConfig),\n locale,\n publishAllLocalesArg,\n })\n let unpublishAllLocales =\n typeof unpublishAllLocalesArg === 'string'\n ? unpublishAllLocalesArg === 'true'\n : !!unpublishAllLocalesArg\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(config?.localization && hasLocalizeStatusEnabled(globalConfig)),\n publishAllLocales,\n unpublishAllLocales,\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n\n if (requestedAllLocalesPublicationStatus && !allLocalesPublicationStatus) {\n publishAllLocales = false\n unpublishAllLocales = false\n }\n\n const isSavingDraft =\n Boolean(draftArg && hasDraftsEnabled(globalConfig)) &&\n data._status !== 'published' &&\n !publishAllLocales\n\n if (isSavingDraft) {\n data._status = 'draft'\n }\n\n const incomingTopLevelFieldNames = getTopLevelFieldNames(data)\n const submittedTopLevelFieldNames = unpublishAllLocales ? incomingTopLevelFieldNames : undefined\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n slug: globalConfig.slug,\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined! : (accessResults as Where)\n const writeBranch = resolveBranchGlobalWrite({\n globalSlug: slug,\n req,\n })\n const mainStorageQuery =\n !writeBranch && config?.branching?.branchableGlobals.has(slug)\n ? { [branchField]: { equals: MAIN_BRANCH } }\n : undefined\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersionResult = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale: publishAllLocales || unpublishAllLocales ? 'all' : locale!,\n payload,\n req,\n storageWhere: mainStorageQuery,\n where: query,\n })\n const { global, globalExists, hasLiveGlobal } = globalVersionResult || {}\n\n if (\n hasWhereAccessResult(accessResults) &&\n globalExists &&\n (!global || Object.keys(global).length === 0)\n ) {\n throw new Forbidden(req.t)\n }\n\n let globalJSON: JsonObject = {}\n\n if (globalVersionResult && globalVersionResult.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: true,\n req,\n showHiddenFields: showHiddenFields!,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n shouldDeleteLock: false,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n let statusFieldAccess = false\n const publicationFieldPolicyDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n data._status === allLocalesPublicationStatus ? allLocalesPublicationStatus : undefined,\n })\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docForHooks: publicationFieldPolicyDoc,\n global: globalConfig,\n onFieldAccess: ({ accessResult, path }) => {\n if (path === '_status') {\n statusFieldAccess = accessResult\n }\n },\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\n })\n\n const publicationHookDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n statusFieldAccess && data._status === allLocalesPublicationStatus\n ? allLocalesPublicationStatus\n : undefined,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeValidate?.length) {\n for (const hook of globalConfig.hooks.beforeValidate) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeChange?.length) {\n for (const hook of globalConfig.hooks.beforeChange) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n const publicationData = { ...data }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: publicationHookDoc,\n docWithLocales: globalJSON,\n fieldsToValidate: submittedTopLevelFieldNames,\n global: globalConfig,\n operation: 'update',\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(globalConfig),\n } satisfies BeforeChangeArgs<JsonObject>\n\n let statusFieldValue: unknown\n\n let result: JsonObject = await beforeChange({\n ...beforeChangeArgs,\n onDataProcessed: (processedData) => {\n statusFieldValue = processedData._status\n },\n })\n\n const hasAuthorizedPublicationStatus = hasAuthorizedAllLocalesPublicationStatus({\n data: publicationData,\n fieldAccessDenied: !statusFieldAccess,\n fieldValue: statusFieldValue,\n status: allLocalesPublicationStatus,\n })\n\n if (\n allLocalesPublicationStatus &&\n !hasAuthorizedPublicationStatus &&\n typeof statusFieldValue === 'undefined' &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n }\n\n if (\n config?.localization &&\n hasLocalizeStatusEnabled(globalConfig) &&\n typeof result._status === 'string'\n ) {\n const statusStr = result._status\n\n if (\n hasAuthorizedPublicationStatus &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n } else {\n result._status = {}\n }\n\n if (!hasAuthorizedPublicationStatus) {\n for (const localeCode of config.localization.localeCodes) {\n ;(result._status as Record<string, unknown>)[localeCode] = statusStr\n }\n }\n }\n\n // /////////////////////////////////////\n // Handle Localized Data Merging\n // /////////////////////////////////////\n\n let localizedPublishData: JsonObject | null = null\n\n if (config && config.localization && globalConfig.versions) {\n if (hasLocalizeStatusEnabled(globalConfig)) {\n if (hasAuthorizedPublicationStatus) {\n let accessibleLocaleCodes = config.localization.localeCodes\n\n if (config.localization.filterAvailableLocales) {\n const filteredLocales = await config.localization.filterAvailableLocales({\n locales: config.localization.locales,\n req,\n })\n accessibleLocaleCodes = filteredLocales.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n\n if (typeof result._status !== 'object' || result._status === null) {\n result._status = {}\n }\n\n for (const localeCode of accessibleLocaleCodes) {\n result._status[localeCode] = unpublishAllLocales ? 'draft' : 'published'\n }\n } else if (\n !isSavingDraft &&\n result._status &&\n typeof result._status === 'object' &&\n !Array.isArray(result._status) &&\n (result._status as Record<string, unknown>)[locale!] === 'published'\n ) {\n const currentGlobal = await payload.db.findGlobal({\n slug: globalConfig.slug,\n locale: 'all',\n req,\n where: mainStorageQuery === undefined ? query : combineQueries(query, mainStorageQuery),\n })\n\n localizedPublishData = buildLocalizedPublishData({\n config,\n currentDoc: currentGlobal as JsonObject,\n fields: globalConfig.fields,\n locale: locale!,\n result,\n })\n }\n }\n }\n\n if (\n config?.localization &&\n hasDraftsEnabled(globalConfig) &&\n publishAllLocales &&\n !unpublishAllLocales &&\n (!hasLocalizeStatusEnabled(globalConfig) || hasAuthorizedPublicationStatus)\n ) {\n const validationResult = await validateGlobalLocalWithLocaleKeyedData({\n operation: 'update',\n options: {\n slug: globalConfig.slug,\n data: result,\n draft: true,\n locale: 'all',\n overrideAccess,\n req,\n },\n payload,\n sourceData: {\n docWithLocales: globalJSON,\n originalDoc: publicationHookDoc,\n originalLocale: locale!,\n },\n })\n\n if (!validationResult.valid) {\n throw new ValidationError(\n {\n errors: validationResult.errors,\n global: globalConfig.slug,\n req,\n },\n req.t,\n )\n }\n }\n\n const dataToUpdate: JsonObject = { ...(localizedPublishData ?? result) }\n\n await runBranchMergeWriteGuard({ data: dataToUpdate, globalSlug: slug, req })\n\n if (localizedPublishData) {\n await runBranchMergeWriteGuard({ data: result, globalSlug: slug, req })\n }\n\n const branchConflictFieldNames = new Set(incomingTopLevelFieldNames)\n\n for (const [fieldName, value] of Object.entries(dataToUpdate)) {\n if (!isDeepStrictEqual(value, globalJSON[fieldName])) {\n branchConflictFieldNames.add(fieldName)\n }\n }\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n select: resolveSelect({\n config: globalConfig.select,\n operation: 'update',\n req,\n select: incomingSelect,\n }),\n })\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n let resultWithLocales: JsonObject = result\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!dataToUpdate.createdAt) {\n dataToUpdate.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n dataToUpdate.updatedAt = now\n\n const branchConflictData = deepCopyObjectSimple(\n Object.fromEntries(\n [...branchConflictFieldNames]\n .filter((fieldName) => Object.hasOwn(dataToUpdate, fieldName))\n .map((fieldName) => [fieldName, dataToUpdate[fieldName]]),\n ),\n )\n branchConflictData.updatedAt = now\n\n if (hasLiveGlobal || writeBranch) {\n resultWithLocales = await payload.db.updateGlobal({\n slug,\n branchConflictData,\n data: dataToUpdate,\n req,\n select,\n })\n } else {\n resultWithLocales = await payload.db.createGlobal({\n slug,\n data: dataToUpdate,\n req,\n })\n }\n markTransactionWrite({ req })\n\n resultWithLocales.updatedAt = now\n\n if (localizedPublishData) {\n // Keep full locale payload for version writes during single-locale publish.\n resultWithLocales = {\n ...result,\n createdAt: resultWithLocales.createdAt ?? result.createdAt ?? now,\n updatedAt: now,\n }\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n if (config?.branching?.branchableGlobals.has(slug)) {\n resultWithLocales[branchField] = writeBranch ?? MAIN_BRANCH\n }\n\n const { globalType } = resultWithLocales\n resultWithLocales = await saveVersion({\n autosave,\n docWithLocales: resultWithLocales,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n req,\n select,\n unpublish: unpublishAllLocales,\n })\n markTransactionWrite({ req })\n\n resultWithLocales = {\n ...resultWithLocales,\n globalType,\n }\n }\n\n if (writeBranch) {\n await recordBranchGlobalChange({ branch: writeBranch, globalSlug: slug, req })\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && resultWithLocales.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete resultWithLocales['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth: depth!,\n doc: resultWithLocales,\n draft: draftArg!,\n fallbackLocale: null,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n overrideAccess,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterChange?.length) {\n for (const hook of globalConfig.hooks.afterChange) {\n result =\n (await hook({\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n previousDoc: originalDoc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n if (shouldCommit) {\n await killTransaction(req)\n }\n throw error\n }\n}\n"],"names":["isDeepStrictEqual","executeAccess","hasWhereAccessResult","assertBranchReadable","recordBranchGlobalChange","resolveBranchGlobalWrite","assertBranchMergeValidationWriteAllowed","runBranchMergeWriteGuard","branchField","MAIN_BRANCH","combineQueries","Forbidden","ValidationError","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","assertNoValidationWrite","checkDocumentLockStatus","commitTransaction","getSelectMode","getTopLevelFieldNames","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","resolvePublishAllLocales","resolveSelect","sanitizeSelect","markTransactionWrite","buildAllLocalesPublicationHookDoc","getAllLocalesPublicationStatus","hasAuthorizedAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","buildLocalizedPublishData","getLatestGlobalVersion","saveVersion","validateGlobalLocalWithLocaleKeyedData","updateOperation","args","req","initialGlobalConfig","globalConfig","overrideAccess","globalSlug","slug","publishAllLocales","unpublishAllLocales","initialPublishAllLocales","draft","locale","publishAllLocalesArg","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","config","localization","initialAllLocalesPublicationIntent","data","status","shouldCommit","disableTransaction","hooks","beforeOperation","length","hook","context","global","operation","autosave","depth","draftArg","overrideLock","populate","fallbackLocale","select","incomingSelect","showHiddenFields","unpublishAllLocalesArg","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","isSavingDraft","_status","incomingTopLevelFieldNames","submittedTopLevelFieldNames","undefined","accessResults","access","update","query","writeBranch","mainStorageQuery","branching","branchableGlobals","has","equals","globalVersionResult","storageWhere","where","globalExists","hasLiveGlobal","Object","keys","t","globalJSON","_id","originalDoc","collection","doc","lockErrorMessage","shouldDeleteLock","statusFieldAccess","publicationFieldPolicyDoc","docWithLocales","docForHooks","onFieldAccess","accessResult","path","publicationHookDoc","publicationData","beforeChangeArgs","fieldsToValidate","skipValidation","statusFieldValue","result","onDataProcessed","processedData","hasAuthorizedPublicationStatus","fieldAccessDenied","fieldValue","statusStr","localeCode","localeCodes","localizedPublishData","versions","accessibleLocaleCodes","filterAvailableLocales","filteredLocales","locales","map","code","Array","isArray","currentGlobal","db","findGlobal","currentDoc","fields","validationResult","options","sourceData","originalLocale","valid","errors","dataToUpdate","branchConflictFieldNames","Set","fieldName","value","entries","add","flattenedFields","resultWithLocales","now","Date","toISOString","createdAt","updatedAt","branchConflictData","fromEntries","filter","hasOwn","updateGlobal","createGlobal","globalType","unpublish","branch","selectMode","previousDoc","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { FindOptions } from '../../collections/operations/local/find.js'\nimport type { Args as BeforeChangeArgs } from '../../fields/hooks/beforeChange/index.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformGlobalWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n DataFromGlobalSlug,\n SanitizedGlobalConfig,\n SelectFromGlobalSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { Forbidden, ValidationError } from '../../errors/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { assertNoValidationWrite } from '../../utilities/assertNoValidationWrite.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { getTopLevelFieldNames } from '../../utilities/getTopLevelFieldNames.js'\nimport {\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolvePublishAllLocales } from '../../utilities/resolvePublishAllLocales.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport {\n buildAllLocalesPublicationHookDoc,\n getAllLocalesPublicationStatus,\n hasAuthorizedAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { buildLocalizedPublishData } from '../../versions/buildSingleLocalePublishData.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\nimport { validateGlobalLocalWithLocaleKeyedData } from './local/validate.js'\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends GlobalSlug,\n TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\n assertNoValidationWrite(args.req)\n\n const req = args.req\n const initialGlobalConfig = args.globalConfig\n\n assertNoValidationWrite(req)\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialPublishAllLocales = resolvePublishAllLocales({\n draft: args.draft,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(initialGlobalConfig),\n locale: req.locale,\n publishAllLocalesArg: args.publishAllLocales,\n })\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n req.payload.config.localization && hasLocalizeStatusEnabled(initialGlobalConfig),\n ),\n publishAllLocales: initialPublishAllLocales,\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(req))\n\n // /////////////////////////////////////\n // beforeOperation - Global\n // /////////////////////////////////////\n\n if (initialGlobalConfig.hooks?.beforeOperation?.length) {\n for (const hook of initialGlobalConfig.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n context: args.req.context,\n global: initialGlobalConfig,\n operation: 'update',\n overrideAccess: args.overrideAccess,\n req: args.req,\n })) || args\n }\n }\n\n const {\n slug,\n autosave,\n depth,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n populate,\n publishAllLocales: publishAllLocalesArg,\n req: { fallbackLocale, locale, payload, payload: { config } = {} },\n select: incomingSelect,\n showHiddenFields,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n let { data } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n let publishAllLocales = resolvePublishAllLocales({\n draft: draftArg,\n hasLocalizeStatusEnabled: hasLocalizeStatusEnabled(globalConfig),\n locale,\n publishAllLocalesArg,\n })\n let unpublishAllLocales =\n typeof unpublishAllLocalesArg === 'string'\n ? unpublishAllLocalesArg === 'true'\n : !!unpublishAllLocalesArg\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(config?.localization && hasLocalizeStatusEnabled(globalConfig)),\n publishAllLocales,\n unpublishAllLocales,\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n\n if (requestedAllLocalesPublicationStatus && !allLocalesPublicationStatus) {\n publishAllLocales = false\n unpublishAllLocales = false\n }\n\n const isSavingDraft =\n Boolean(draftArg && hasDraftsEnabled(globalConfig)) &&\n data._status !== 'published' &&\n !publishAllLocales\n\n if (isSavingDraft) {\n data._status = 'draft'\n }\n\n const submittedTopLevelFieldNames = unpublishAllLocales\n ? getTopLevelFieldNames(data)\n : undefined\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n slug: globalConfig.slug,\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined! : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersionResult = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale: publishAllLocales || unpublishAllLocales ? 'all' : locale!,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersionResult || {}\n\n if (\n hasWhereAccessResult(accessResults) &&\n globalExists &&\n (!global || Object.keys(global).length === 0)\n ) {\n throw new Forbidden(req.t)\n }\n\n let globalJSON: JsonObject = {}\n\n if (globalVersionResult && globalVersionResult.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(globalJSON),\n draft: draftArg!,\n fallbackLocale: fallbackLocale!,\n global: globalConfig,\n locale: locale!,\n overrideAccess: true,\n req,\n showHiddenFields: showHiddenFields!,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n let statusFieldAccess = false\n const publicationFieldPolicyDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n data._status === allLocalesPublicationStatus ? allLocalesPublicationStatus : undefined,\n })\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docForHooks: publicationFieldPolicyDoc,\n global: globalConfig,\n onFieldAccess: ({ accessResult, path }) => {\n if (path === '_status') {\n statusFieldAccess = accessResult\n }\n },\n operation: 'update',\n overrideAccess: overrideAccess!,\n req,\n })\n\n const publicationHookDoc = buildAllLocalesPublicationHookDoc({\n doc: originalDoc,\n docWithLocales: globalJSON,\n status:\n statusFieldAccess && data._status === allLocalesPublicationStatus\n ? allLocalesPublicationStatus\n : undefined,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeValidate?.length) {\n for (const hook of globalConfig.hooks.beforeValidate) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.beforeChange?.length) {\n for (const hook of globalConfig.hooks.beforeChange) {\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n operation: 'update',\n originalDoc: publicationHookDoc,\n overrideAccess,\n req,\n })) || data\n }\n }\n\n const publicationData = { ...data }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: publicationHookDoc,\n docWithLocales: globalJSON,\n fieldsToValidate: submittedTopLevelFieldNames,\n global: globalConfig,\n operation: 'update',\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(globalConfig),\n } satisfies BeforeChangeArgs<JsonObject>\n\n let statusFieldValue: unknown\n\n let result: JsonObject = await beforeChange({\n ...beforeChangeArgs,\n onDataProcessed: (processedData) => {\n statusFieldValue = processedData._status\n },\n })\n\n const hasAuthorizedPublicationStatus = hasAuthorizedAllLocalesPublicationStatus({\n data: publicationData,\n fieldAccessDenied: !statusFieldAccess,\n fieldValue: statusFieldValue,\n status: allLocalesPublicationStatus,\n })\n\n if (\n allLocalesPublicationStatus &&\n !hasAuthorizedPublicationStatus &&\n typeof statusFieldValue === 'undefined' &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n }\n\n if (\n config?.localization &&\n hasLocalizeStatusEnabled(globalConfig) &&\n typeof result._status === 'string'\n ) {\n const statusStr = result._status\n\n if (\n hasAuthorizedPublicationStatus &&\n typeof globalJSON._status === 'object' &&\n globalJSON._status !== null\n ) {\n result._status = { ...globalJSON._status }\n } else {\n result._status = {}\n }\n\n if (!hasAuthorizedPublicationStatus) {\n for (const localeCode of config.localization.localeCodes) {\n ;(result._status as Record<string, unknown>)[localeCode] = statusStr\n }\n }\n }\n\n // /////////////////////////////////////\n // Handle Localized Data Merging\n // /////////////////////////////////////\n\n let localizedPublishData: JsonObject | null = null\n\n if (config && config.localization && globalConfig.versions) {\n if (hasLocalizeStatusEnabled(globalConfig)) {\n if (hasAuthorizedPublicationStatus) {\n let accessibleLocaleCodes = config.localization.localeCodes\n\n if (config.localization.filterAvailableLocales) {\n const filteredLocales = await config.localization.filterAvailableLocales({\n locales: config.localization.locales,\n req,\n })\n accessibleLocaleCodes = filteredLocales.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n\n if (typeof result._status !== 'object' || result._status === null) {\n result._status = {}\n }\n\n for (const localeCode of accessibleLocaleCodes) {\n result._status[localeCode] = unpublishAllLocales ? 'draft' : 'published'\n }\n } else if (\n !isSavingDraft &&\n result._status &&\n typeof result._status === 'object' &&\n !Array.isArray(result._status) &&\n (result._status as Record<string, unknown>)[locale!] === 'published'\n ) {\n const currentGlobal = await payload.db.findGlobal({\n slug: globalConfig.slug,\n locale: 'all',\n req,\n where: query,\n })\n\n localizedPublishData = buildLocalizedPublishData({\n config,\n currentDoc: currentGlobal as JsonObject,\n fields: globalConfig.fields,\n locale: locale!,\n result,\n })\n }\n }\n }\n\n if (\n config?.localization &&\n hasDraftsEnabled(globalConfig) &&\n publishAllLocales &&\n !unpublishAllLocales &&\n (!hasLocalizeStatusEnabled(globalConfig) || hasAuthorizedPublicationStatus)\n ) {\n const validationResult = await validateGlobalLocalWithLocaleKeyedData({\n operation: 'update',\n options: {\n slug: globalConfig.slug,\n data: result,\n draft: true,\n locale: 'all',\n overrideAccess,\n req,\n },\n payload,\n sourceData: {\n docWithLocales: globalJSON,\n originalDoc: publicationHookDoc,\n originalLocale: locale!,\n },\n })\n\n if (!validationResult.valid) {\n throw new ValidationError(\n {\n errors: validationResult.errors,\n global: globalConfig.slug,\n req,\n },\n req.t,\n )\n }\n }\n\n const dataToUpdate: JsonObject = { ...(localizedPublishData ?? result) }\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n const select = sanitizeSelect({\n fields: globalConfig.flattenedFields,\n select: resolveSelect({\n config: globalConfig.select,\n operation: 'update',\n req,\n select: incomingSelect,\n }),\n })\n\n let resultWithLocales: JsonObject = result\n\n if (!isSavingDraft) {\n const now = new Date().toISOString()\n // Ensure global has createdAt\n if (!dataToUpdate.createdAt) {\n dataToUpdate.createdAt = now\n }\n\n // Ensure updatedAt date is always updated\n dataToUpdate.updatedAt = now\n\n if (globalExists) {\n resultWithLocales = await payload.db.updateGlobal({\n slug,\n data: dataToUpdate,\n req,\n select,\n })\n } else {\n resultWithLocales = await payload.db.createGlobal({\n slug,\n data: dataToUpdate,\n req,\n })\n }\n\n resultWithLocales.updatedAt = now\n\n if (localizedPublishData) {\n // Keep full locale payload for version writes during single-locale publish.\n resultWithLocales = {\n ...result,\n createdAt: resultWithLocales.createdAt ?? result.createdAt ?? now,\n updatedAt: now,\n }\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = resultWithLocales\n resultWithLocales = await saveVersion({\n autosave,\n docWithLocales: resultWithLocales,\n draft: isSavingDraft,\n global: globalConfig,\n operation: 'update',\n payload,\n req,\n select,\n unpublish: unpublishAllLocales,\n })\n\n resultWithLocales = {\n ...resultWithLocales,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // Execute globalType field if not selected\n // /////////////////////////////////////\n if (select && resultWithLocales.globalType) {\n const selectMode = getSelectMode(select)\n if (\n (selectMode === 'include' && !select['globalType']) ||\n (selectMode === 'exclude' && select['globalType'] === false)\n ) {\n delete resultWithLocales['globalType']\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth: depth!,\n doc: resultWithLocales,\n draft: draftArg!,\n fallbackLocale: null,\n global: globalConfig,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterRead?.length) {\n for (const hook of globalConfig.hooks.afterRead) {\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n overrideAccess,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n if (globalConfig.hooks?.afterChange?.length) {\n for (const hook of globalConfig.hooks.afterChange) {\n result =\n (await hook({\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n previousDoc: originalDoc,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformGlobalWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","hasWhereAccessResult","Forbidden","ValidationError","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","assertNoValidationWrite","checkDocumentLockStatus","commitTransaction","getSelectMode","getTopLevelFieldNames","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","resolvePublishAllLocales","resolveSelect","sanitizeSelect","buildAllLocalesPublicationHookDoc","getAllLocalesPublicationStatus","hasAuthorizedAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","buildLocalizedPublishData","getLatestGlobalVersion","saveVersion","validateGlobalLocalWithLocaleKeyedData","updateOperation","args","req","initialGlobalConfig","globalConfig","publishAllLocales","unpublishAllLocales","initialPublishAllLocales","draft","locale","publishAllLocalesArg","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","config","localization","initialAllLocalesPublicationIntent","data","status","shouldCommit","disableTransaction","hooks","beforeOperation","length","hook","context","global","operation","overrideAccess","slug","autosave","depth","draftArg","overrideLock","populate","fallbackLocale","select","incomingSelect","showHiddenFields","unpublishAllLocalesArg","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","isSavingDraft","_status","submittedTopLevelFieldNames","undefined","accessResults","access","update","query","globalVersionResult","where","globalExists","Object","keys","t","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","statusFieldAccess","publicationFieldPolicyDoc","docWithLocales","docForHooks","onFieldAccess","accessResult","path","publicationHookDoc","publicationData","beforeChangeArgs","fieldsToValidate","skipValidation","statusFieldValue","result","onDataProcessed","processedData","hasAuthorizedPublicationStatus","fieldAccessDenied","fieldValue","statusStr","localeCode","localeCodes","localizedPublishData","versions","accessibleLocaleCodes","filterAvailableLocales","filteredLocales","locales","map","code","Array","isArray","currentGlobal","db","findGlobal","currentDoc","fields","validationResult","options","sourceData","originalLocale","valid","errors","dataToUpdate","flattenedFields","resultWithLocales","now","Date","toISOString","createdAt","updatedAt","updateGlobal","createGlobal","globalType","unpublish","selectMode","previousDoc","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/globals/operations/validate.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { TypeWithID } from '../../collections/config/types.js'\nimport type { AccessResult } from '../../config/types.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { ValidationResult } from '../../types/validation.js'\nimport type { ValidationSourceData } from '../../utilities/runValidationLifecycle.js'\nimport type { DataFromGlobalSlug, SanitizedGlobalConfig } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { Forbidden } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport { flattenDataByLocale } from '../../utilities/flattenDataByLocale.js'\nimport { runValidationLifecycle } from '../../utilities/runValidationLifecycle.js'\nimport {\n findDraftVersion,\n getDocumentFromDraftVersion,\n} from '../../versions/drafts/replaceWithDraftIfAvailable.js'\n\nexport type Arguments<TSlug extends GlobalSlug> = {\n data?: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n onValidationData?: (data: JsonObject) => void\n overrideAccess: boolean\n req: PayloadRequest\n skipAccessControl?: boolean\n skipMutationHooks?: boolean\n slug: string\n sourceData?: ValidationSourceData\n validationOperation?: 'update' | 'validate'\n}\n\nexport async function validateOperation<TSlug extends GlobalSlug>(\n args: Arguments<TSlug>,\n): Promise<ValidationResult> {\n const previousOperation = args.req.operation\n args.req.operation = args.validationOperation ?? 'validate'\n\n try {\n return await validateOperationWithScopedRequest(args)\n } finally {\n args.req.operation = previousOperation\n }\n}\n\nasync function validateOperationWithScopedRequest<TSlug extends GlobalSlug>({\n slug,\n data: incomingData,\n draft,\n globalConfig,\n onValidationData,\n overrideAccess,\n req,\n skipAccessControl = false,\n skipMutationHooks = false,\n sourceData,\n validationOperation = 'validate',\n}: Arguments<TSlug>): Promise<ValidationResult> {\n const accessResult =\n !skipAccessControl && !overrideAccess\n ? await executeAccess({ slug, data: incomingData, req }, globalConfig.access.validate)\n : true\n const storedGlobal = sourceData\n ? sourceData.docWithLocales\n : await resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n })\n\n const docWithLocales: JsonObject = deepCopyObjectSimple(storedGlobal)\n\n if (docWithLocales._id) {\n delete docWithLocales._id\n }\n\n const originalDoc = sourceData\n ? req.locale === sourceData.originalLocale\n ? deepCopyObjectSimple(sourceData.originalDoc)\n : flattenDataByLocale({\n configBlockReferences: req.payload.config.blocks,\n docWithLocales,\n fields: globalConfig.fields,\n locale: req.locale!,\n })\n : await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(docWithLocales),\n draft,\n fallbackLocale: req.fallbackLocale!,\n global: globalConfig,\n locale: req.locale!,\n overrideAccess: true,\n req,\n showHiddenFields: true,\n })\n\n return runValidationLifecycle({\n collection: null,\n docWithLocales,\n global: globalConfig,\n incomingData
|
|
1
|
+
{"version":3,"sources":["../../../src/globals/operations/validate.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { TypeWithID } from '../../collections/config/types.js'\nimport type { AccessResult } from '../../config/types.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { ValidationResult } from '../../types/validation.js'\nimport type { ValidationSourceData } from '../../utilities/runValidationLifecycle.js'\nimport type { DataFromGlobalSlug, SanitizedGlobalConfig } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { Forbidden } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport { flattenDataByLocale } from '../../utilities/flattenDataByLocale.js'\nimport { runValidationLifecycle } from '../../utilities/runValidationLifecycle.js'\nimport {\n findDraftVersion,\n getDocumentFromDraftVersion,\n} from '../../versions/drafts/replaceWithDraftIfAvailable.js'\n\nexport type Arguments<TSlug extends GlobalSlug> = {\n data?: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n onValidationData?: (data: JsonObject) => void\n overrideAccess: boolean\n req: PayloadRequest\n skipAccessControl?: boolean\n skipMutationHooks?: boolean\n slug: string\n sourceData?: ValidationSourceData\n validationOperation?: 'update' | 'validate'\n}\n\nexport async function validateOperation<TSlug extends GlobalSlug>(\n args: Arguments<TSlug>,\n): Promise<ValidationResult> {\n const previousOperation = args.req.operation\n args.req.operation = args.validationOperation ?? 'validate'\n\n try {\n return await validateOperationWithScopedRequest(args)\n } finally {\n args.req.operation = previousOperation\n }\n}\n\nasync function validateOperationWithScopedRequest<TSlug extends GlobalSlug>({\n slug,\n data: incomingData,\n draft,\n globalConfig,\n onValidationData,\n overrideAccess,\n req,\n skipAccessControl = false,\n skipMutationHooks = false,\n sourceData,\n validationOperation = 'validate',\n}: Arguments<TSlug>): Promise<ValidationResult> {\n const accessResult =\n !skipAccessControl && !overrideAccess\n ? await executeAccess({ slug, data: incomingData, req }, globalConfig.access.validate)\n : true\n const storedGlobal = sourceData\n ? sourceData.docWithLocales\n : await resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n })\n\n const docWithLocales: JsonObject = deepCopyObjectSimple(storedGlobal)\n\n if (docWithLocales._id) {\n delete docWithLocales._id\n }\n\n const originalDoc = sourceData\n ? req.locale === sourceData.originalLocale\n ? deepCopyObjectSimple(sourceData.originalDoc)\n : flattenDataByLocale({\n configBlockReferences: req.payload.config.blocks,\n docWithLocales,\n fields: globalConfig.fields,\n locale: req.locale!,\n })\n : await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: deepCopyObjectSimple(docWithLocales),\n draft,\n fallbackLocale: req.fallbackLocale!,\n global: globalConfig,\n locale: req.locale!,\n overrideAccess: true,\n req,\n showHiddenFields: true,\n })\n\n return runValidationLifecycle({\n collection: null,\n docWithLocales,\n global: globalConfig,\n incomingData,\n onValidationData,\n originalDoc,\n overrideAccess,\n req,\n skipMutationHooks,\n validationOperation,\n })\n}\n\n/**\n * Selects the newest stored source before it applies a `where` access policy. This prevents an\n * older accessible draft from replacing a newer restricted draft. If no draft exists, the main\n * global remains the validation source.\n */\nasync function resolveValidationGlobalSource({\n slug,\n accessResult,\n draft,\n globalConfig,\n overrideAccess,\n req,\n}: {\n accessResult: AccessResult\n draft: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess: boolean\n req: PayloadRequest\n slug: string\n}): Promise<JsonObject> {\n const main = await req.payload.db.findGlobal({\n slug,\n locale: req.locale!,\n req,\n })\n const hasMain = hasGlobalSource(main)\n const base = (hasMain ? main : { globalType: slug }) as JsonObject & TypeWithID\n\n if (draft && globalConfig.versions?.drafts) {\n const newestDraft = await findDraftVersion({\n accessResult: true,\n doc: base,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess: true,\n req,\n })\n\n if (newestDraft) {\n if (hasWhereAccessResult(accessResult)) {\n const accessibleDraft = await findDraftVersion({\n accessResult,\n doc: base,\n draftVersionID: newestDraft.id,\n entity: globalConfig,\n entityType: 'global',\n overrideAccess,\n req,\n })\n\n if (!accessibleDraft) {\n throw new Forbidden(req.t)\n }\n }\n\n return getDocumentFromDraftVersion({\n doc: base,\n draftVersion: newestDraft,\n entityType: 'global',\n })\n }\n }\n\n if (!hasMain) {\n return {}\n }\n\n if (!hasWhereAccessResult(accessResult)) {\n return main\n }\n\n const accessibleMain = await req.payload.db.findGlobal({\n slug,\n locale: req.locale!,\n req,\n where: accessResult,\n })\n\n if (!hasGlobalSource(accessibleMain)) {\n throw new Forbidden(req.t)\n }\n\n return accessibleMain\n}\n\nfunction hasGlobalSource(source: JsonObject | null | undefined): source is JsonObject {\n return Boolean(source && Object.keys(source).length > 0)\n}\n"],"names":["executeAccess","hasWhereAccessResult","Forbidden","afterRead","deepCopyObjectSimple","flattenDataByLocale","runValidationLifecycle","findDraftVersion","getDocumentFromDraftVersion","validateOperation","args","previousOperation","req","operation","validationOperation","validateOperationWithScopedRequest","slug","data","incomingData","draft","globalConfig","onValidationData","overrideAccess","skipAccessControl","skipMutationHooks","sourceData","accessResult","access","validate","storedGlobal","docWithLocales","resolveValidationGlobalSource","_id","originalDoc","locale","originalLocale","configBlockReferences","payload","config","blocks","fields","collection","context","depth","doc","fallbackLocale","global","showHiddenFields","main","db","findGlobal","hasMain","hasGlobalSource","base","globalType","versions","drafts","newestDraft","entity","entityType","accessibleDraft","draftVersionID","id","t","draftVersion","accessibleMain","where","source","Boolean","Object","keys","length"],"mappings":"AAUA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,oBAAoB,QAAQ,sBAAqB;AAC1D,SAASC,SAAS,QAAQ,wBAAuB;AACjD,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,oBAAoB,QAAQ,oCAAmC;AACxE,SAASC,mBAAmB,QAAQ,yCAAwC;AAC5E,SAASC,sBAAsB,QAAQ,4CAA2C;AAClF,SACEC,gBAAgB,EAChBC,2BAA2B,QACtB,uDAAsD;AAgB7D,OAAO,eAAeC,kBACpBC,IAAsB;IAEtB,MAAMC,oBAAoBD,KAAKE,GAAG,CAACC,SAAS;IAC5CH,KAAKE,GAAG,CAACC,SAAS,GAAGH,KAAKI,mBAAmB,IAAI;IAEjD,IAAI;QACF,OAAO,MAAMC,mCAAmCL;IAClD,SAAU;QACRA,KAAKE,GAAG,CAACC,SAAS,GAAGF;IACvB;AACF;AAEA,eAAeI,mCAA6D,EAC1EC,IAAI,EACJC,MAAMC,YAAY,EAClBC,KAAK,EACLC,YAAY,EACZC,gBAAgB,EAChBC,cAAc,EACdV,GAAG,EACHW,oBAAoB,KAAK,EACzBC,oBAAoB,KAAK,EACzBC,UAAU,EACVX,sBAAsB,UAAU,EACf;IACjB,MAAMY,eACJ,CAACH,qBAAqB,CAACD,iBACnB,MAAMtB,cAAc;QAAEgB;QAAMC,MAAMC;QAAcN;IAAI,GAAGQ,aAAaO,MAAM,CAACC,QAAQ,IACnF;IACN,MAAMC,eAAeJ,aACjBA,WAAWK,cAAc,GACzB,MAAMC,8BAA8B;QAClCf;QACAU;QACAP;QACAC;QACAE;QACAV;IACF;IAEJ,MAAMkB,iBAA6B1B,qBAAqByB;IAExD,IAAIC,eAAeE,GAAG,EAAE;QACtB,OAAOF,eAAeE,GAAG;IAC3B;IAEA,MAAMC,cAAcR,aAChBb,IAAIsB,MAAM,KAAKT,WAAWU,cAAc,GACtC/B,qBAAqBqB,WAAWQ,WAAW,IAC3C5B,oBAAoB;QAClB+B,uBAAuBxB,IAAIyB,OAAO,CAACC,MAAM,CAACC,MAAM;QAChDT;QACAU,QAAQpB,aAAaoB,MAAM;QAC3BN,QAAQtB,IAAIsB,MAAM;IACpB,KACF,MAAM/B,UAAU;QACdsC,YAAY;QACZC,SAAS9B,IAAI8B,OAAO;QACpBC,OAAO;QACPC,KAAKxC,qBAAqB0B;QAC1BX;QACA0B,gBAAgBjC,IAAIiC,cAAc;QAClCC,QAAQ1B;QACRc,QAAQtB,IAAIsB,MAAM;QAClBZ,gBAAgB;QAChBV;QACAmC,kBAAkB;IACpB;IAEJ,OAAOzC,uBAAuB;QAC5BmC,YAAY;QACZX;QACAgB,QAAQ1B;QACRF;QACAG;QACAY;QACAX;QACAV;QACAY;QACAV;IACF;AACF;AAEA;;;;CAIC,GACD,eAAeiB,8BAA8B,EAC3Cf,IAAI,EACJU,YAAY,EACZP,KAAK,EACLC,YAAY,EACZE,cAAc,EACdV,GAAG,EAQJ;IACC,MAAMoC,OAAO,MAAMpC,IAAIyB,OAAO,CAACY,EAAE,CAACC,UAAU,CAAC;QAC3ClC;QACAkB,QAAQtB,IAAIsB,MAAM;QAClBtB;IACF;IACA,MAAMuC,UAAUC,gBAAgBJ;IAChC,MAAMK,OAAQF,UAAUH,OAAO;QAAEM,YAAYtC;IAAK;IAElD,IAAIG,SAASC,aAAamC,QAAQ,EAAEC,QAAQ;QAC1C,MAAMC,cAAc,MAAMlD,iBAAiB;YACzCmB,cAAc;YACdkB,KAAKS;YACLK,QAAQtC;YACRuC,YAAY;YACZrC,gBAAgB;YAChBV;QACF;QAEA,IAAI6C,aAAa;YACf,IAAIxD,qBAAqByB,eAAe;gBACtC,MAAMkC,kBAAkB,MAAMrD,iBAAiB;oBAC7CmB;oBACAkB,KAAKS;oBACLQ,gBAAgBJ,YAAYK,EAAE;oBAC9BJ,QAAQtC;oBACRuC,YAAY;oBACZrC;oBACAV;gBACF;gBAEA,IAAI,CAACgD,iBAAiB;oBACpB,MAAM,IAAI1D,UAAUU,IAAImD,CAAC;gBAC3B;YACF;YAEA,OAAOvD,4BAA4B;gBACjCoC,KAAKS;gBACLW,cAAcP;gBACdE,YAAY;YACd;QACF;IACF;IAEA,IAAI,CAACR,SAAS;QACZ,OAAO,CAAC;IACV;IAEA,IAAI,CAAClD,qBAAqByB,eAAe;QACvC,OAAOsB;IACT;IAEA,MAAMiB,iBAAiB,MAAMrD,IAAIyB,OAAO,CAACY,EAAE,CAACC,UAAU,CAAC;QACrDlC;QACAkB,QAAQtB,IAAIsB,MAAM;QAClBtB;QACAsD,OAAOxC;IACT;IAEA,IAAI,CAAC0B,gBAAgBa,iBAAiB;QACpC,MAAM,IAAI/D,UAAUU,IAAImD,CAAC;IAC3B;IAEA,OAAOE;AACT;AAEA,SAASb,gBAAgBe,MAAqC;IAC5D,OAAOC,QAAQD,UAAUE,OAAOC,IAAI,CAACH,QAAQI,MAAM,GAAG;AACxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addHierarchyToCollection.d.ts","sourceRoot":"","sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"addHierarchyToCollection.d.ts","sourceRoot":"","sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAUtE,eAAO,MAAM,wBAAwB,iGAMlC;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,SA6EA,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { fieldAffectsData } from '../fields/config/types.js';
|
|
1
2
|
import { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js';
|
|
2
3
|
import { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js';
|
|
3
4
|
import { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js';
|
|
@@ -8,28 +9,38 @@ export const addHierarchyToCollection = ({ collectionConfig, parentFieldName, sl
|
|
|
8
9
|
// Verify slug field exists if configured
|
|
9
10
|
const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined;
|
|
10
11
|
const validatedSlugFieldName = slugFieldInfo ? slugFieldName : undefined;
|
|
11
|
-
// Add virtual path fields (computed in afterRead)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
// Add virtual path fields (computed in afterRead). This can run again on the same
|
|
13
|
+
// `fields` array, so skip fields that already exist
|
|
14
|
+
const pathFields = [
|
|
15
|
+
{
|
|
16
|
+
name: slugPathFieldName,
|
|
17
|
+
type: 'text',
|
|
18
|
+
admin: {
|
|
19
|
+
hidden: true,
|
|
20
|
+
readOnly: true
|
|
21
|
+
},
|
|
22
|
+
index: true,
|
|
23
|
+
label: 'Slug Path',
|
|
24
|
+
virtual: true
|
|
18
25
|
},
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
{
|
|
27
|
+
name: titlePathFieldName,
|
|
28
|
+
type: 'text',
|
|
29
|
+
admin: {
|
|
30
|
+
hidden: true,
|
|
31
|
+
readOnly: true
|
|
32
|
+
},
|
|
33
|
+
index: true,
|
|
34
|
+
label: 'Title Path',
|
|
35
|
+
virtual: true
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
for (const pathField of pathFields){
|
|
39
|
+
const hasPathField = collectionConfig.fields.some((field)=>fieldAffectsData(field) && field.name === pathField.name);
|
|
40
|
+
if (!hasPathField) {
|
|
41
|
+
collectionConfig.fields.push(pathField);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
33
44
|
if (!collectionConfig.admin) {
|
|
34
45
|
collectionConfig.admin = {};
|
|
35
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\n\nimport { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js'\nimport { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js'\nimport { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js'\nimport { hierarchyCollectionBeforeOperation } from './hooks/collectionBeforeOperation.js'\nimport { findFieldByName, findUseAsTitleField } from './utils/findUseAsTitle.js'\n\nexport const addHierarchyToCollection = ({\n collectionConfig,\n parentFieldName,\n slugFieldName,\n slugPathFieldName,\n titlePathFieldName,\n}: {\n collectionConfig: CollectionConfig\n parentFieldName: string\n slugFieldName?: string\n slugPathFieldName: string\n titlePathFieldName: string\n}) => {\n const { titleFieldName } = findUseAsTitleField(collectionConfig)\n // Verify slug field exists if configured\n const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined\n const validatedSlugFieldName = slugFieldInfo ? slugFieldName : undefined\n\n // Add virtual path fields (computed in afterRead)\n
|
|
1
|
+
{"version":3,"sources":["../../src/hierarchy/addHierarchyToCollection.ts"],"sourcesContent":["import type { CollectionConfig } from '../collections/config/types.js'\nimport type { TextField } from '../fields/config/types.js'\n\nimport { fieldAffectsData } from '../fields/config/types.js'\nimport { hierarchyCollectionAfterRead } from './hooks/collectionAfterRead.js'\nimport { hierarchyCollectionBeforeChange } from './hooks/collectionBeforeChange.js'\nimport { hierarchyCollectionBeforeDelete } from './hooks/collectionBeforeDelete.js'\nimport { hierarchyCollectionBeforeOperation } from './hooks/collectionBeforeOperation.js'\nimport { findFieldByName, findUseAsTitleField } from './utils/findUseAsTitle.js'\n\nexport const addHierarchyToCollection = ({\n collectionConfig,\n parentFieldName,\n slugFieldName,\n slugPathFieldName,\n titlePathFieldName,\n}: {\n collectionConfig: CollectionConfig\n parentFieldName: string\n slugFieldName?: string\n slugPathFieldName: string\n titlePathFieldName: string\n}) => {\n const { titleFieldName } = findUseAsTitleField(collectionConfig)\n // Verify slug field exists if configured\n const slugFieldInfo = slugFieldName ? findFieldByName(collectionConfig, slugFieldName) : undefined\n const validatedSlugFieldName = slugFieldInfo ? slugFieldName : undefined\n\n // Add virtual path fields (computed in afterRead). This can run again on the same\n // `fields` array, so skip fields that already exist\n const pathFields: TextField[] = [\n {\n name: slugPathFieldName,\n type: 'text',\n admin: {\n hidden: true,\n readOnly: true,\n },\n index: true,\n label: 'Slug Path',\n virtual: true,\n },\n {\n name: titlePathFieldName,\n type: 'text',\n admin: {\n hidden: true,\n readOnly: true,\n },\n index: true,\n label: 'Title Path',\n virtual: true,\n },\n ]\n\n for (const pathField of pathFields) {\n const hasPathField = collectionConfig.fields.some(\n (field) => fieldAffectsData(field) && field.name === pathField.name,\n )\n\n if (!hasPathField) {\n collectionConfig.fields.push(pathField)\n }\n }\n\n if (!collectionConfig.admin) {\n collectionConfig.admin = {}\n }\n if (!collectionConfig.admin.listSearchableFields) {\n collectionConfig.admin.listSearchableFields = [titleFieldName]\n } else if (!collectionConfig.admin.listSearchableFields.includes(titleFieldName)) {\n collectionConfig.admin.listSearchableFields.push(titleFieldName)\n }\n\n collectionConfig.hooks = {\n ...(collectionConfig.hooks || {}),\n afterRead: [\n ...(collectionConfig.hooks?.afterRead || []),\n hierarchyCollectionAfterRead({ parentFieldName, slugPathFieldName, titlePathFieldName }),\n ],\n beforeChange: [\n ...(collectionConfig.hooks?.beforeChange || []),\n hierarchyCollectionBeforeChange({ parentFieldName }),\n ],\n beforeDelete: [\n ...(collectionConfig.hooks?.beforeDelete || []),\n hierarchyCollectionBeforeDelete({ parentFieldName }),\n ],\n beforeOperation: [\n ...(collectionConfig.hooks?.beforeOperation || []),\n hierarchyCollectionBeforeOperation({\n parentFieldName,\n slugFieldName: validatedSlugFieldName,\n slugPathFieldName,\n titleFieldName,\n titlePathFieldName,\n }),\n ],\n }\n}\n"],"names":["fieldAffectsData","hierarchyCollectionAfterRead","hierarchyCollectionBeforeChange","hierarchyCollectionBeforeDelete","hierarchyCollectionBeforeOperation","findFieldByName","findUseAsTitleField","addHierarchyToCollection","collectionConfig","parentFieldName","slugFieldName","slugPathFieldName","titlePathFieldName","titleFieldName","slugFieldInfo","undefined","validatedSlugFieldName","pathFields","name","type","admin","hidden","readOnly","index","label","virtual","pathField","hasPathField","fields","some","field","push","listSearchableFields","includes","hooks","afterRead","beforeChange","beforeDelete","beforeOperation"],"mappings":"AAGA,SAASA,gBAAgB,QAAQ,4BAA2B;AAC5D,SAASC,4BAA4B,QAAQ,iCAAgC;AAC7E,SAASC,+BAA+B,QAAQ,oCAAmC;AACnF,SAASC,+BAA+B,QAAQ,oCAAmC;AACnF,SAASC,kCAAkC,QAAQ,uCAAsC;AACzF,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,4BAA2B;AAEhF,OAAO,MAAMC,2BAA2B,CAAC,EACvCC,gBAAgB,EAChBC,eAAe,EACfC,aAAa,EACbC,iBAAiB,EACjBC,kBAAkB,EAOnB;IACC,MAAM,EAAEC,cAAc,EAAE,GAAGP,oBAAoBE;IAC/C,yCAAyC;IACzC,MAAMM,gBAAgBJ,gBAAgBL,gBAAgBG,kBAAkBE,iBAAiBK;IACzF,MAAMC,yBAAyBF,gBAAgBJ,gBAAgBK;IAE/D,kFAAkF;IAClF,oDAAoD;IACpD,MAAME,aAA0B;QAC9B;YACEC,MAAMP;YACNQ,MAAM;YACNC,OAAO;gBACLC,QAAQ;gBACRC,UAAU;YACZ;YACAC,OAAO;YACPC,OAAO;YACPC,SAAS;QACX;QACA;YACEP,MAAMN;YACNO,MAAM;YACNC,OAAO;gBACLC,QAAQ;gBACRC,UAAU;YACZ;YACAC,OAAO;YACPC,OAAO;YACPC,SAAS;QACX;KACD;IAED,KAAK,MAAMC,aAAaT,WAAY;QAClC,MAAMU,eAAenB,iBAAiBoB,MAAM,CAACC,IAAI,CAC/C,CAACC,QAAU9B,iBAAiB8B,UAAUA,MAAMZ,IAAI,KAAKQ,UAAUR,IAAI;QAGrE,IAAI,CAACS,cAAc;YACjBnB,iBAAiBoB,MAAM,CAACG,IAAI,CAACL;QAC/B;IACF;IAEA,IAAI,CAAClB,iBAAiBY,KAAK,EAAE;QAC3BZ,iBAAiBY,KAAK,GAAG,CAAC;IAC5B;IACA,IAAI,CAACZ,iBAAiBY,KAAK,CAACY,oBAAoB,EAAE;QAChDxB,iBAAiBY,KAAK,CAACY,oBAAoB,GAAG;YAACnB;SAAe;IAChE,OAAO,IAAI,CAACL,iBAAiBY,KAAK,CAACY,oBAAoB,CAACC,QAAQ,CAACpB,iBAAiB;QAChFL,iBAAiBY,KAAK,CAACY,oBAAoB,CAACD,IAAI,CAAClB;IACnD;IAEAL,iBAAiB0B,KAAK,GAAG;QACvB,GAAI1B,iBAAiB0B,KAAK,IAAI,CAAC,CAAC;QAChCC,WAAW;eACL3B,iBAAiB0B,KAAK,EAAEC,aAAa,EAAE;YAC3ClC,6BAA6B;gBAAEQ;gBAAiBE;gBAAmBC;YAAmB;SACvF;QACDwB,cAAc;eACR5B,iBAAiB0B,KAAK,EAAEE,gBAAgB,EAAE;YAC9ClC,gCAAgC;gBAAEO;YAAgB;SACnD;QACD4B,cAAc;eACR7B,iBAAiB0B,KAAK,EAAEG,gBAAgB,EAAE;YAC9ClC,gCAAgC;gBAAEM;YAAgB;SACnD;QACD6B,iBAAiB;eACX9B,iBAAiB0B,KAAK,EAAEI,mBAAmB,EAAE;YACjDlC,mCAAmC;gBACjCK;gBACAC,eAAeM;gBACfL;gBACAE;gBACAD;YACF;SACD;IACH;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hierarchy/createFolderField.ts"],"sourcesContent":["import type { RelationshipField, SingleRelationshipField } from '../fields/config/types.js'\n\nimport { getHierarchyFieldName } from './constants.js'\n\n/**\n * Options for creating a folder relationship field.\n * All SingleRelationshipField properties are available except name, type, relationTo, and hasMany\n * which are managed by the folder system.\n */\nexport type CreateFolderFieldOptions = {\n /**\n * The slug of the hierarchy collection this field references (e.g., 'folders')\n */\n relationTo: string\n} & Pick<Partial<SingleRelationshipField>, 'admin' | 'label' | 'required'>\n\n/**\n * Creates a relationship field for folder-style hierarchies (single-select).\n *\n * This field:\n * - Has hasMany:false (single folder selection)\n * - Uses NullField to render nothing in the form (no DOM output)\n * - Injects a header button for folder selection via miller columns UI\n *\n * Use this in your collection's fields array to add a folder relationship.\n * The field name is automatically generated based on the hierarchy slug.\n *\n * @example\n * import { createFolderField } from 'payload'\n *\n * const Posts: CollectionConfig = {\n * slug: 'posts',\n * fields: [\n * { name: 'title', type: 'text' },\n * createFolderField({\n * relationTo: 'folders',\n * label: 'Folder',\n * }),\n * ],\n * }\n */\nexport function createFolderField(options: CreateFolderFieldOptions): RelationshipField {\n const { admin: adminOverrides, label, relationTo, ...restOptions } = options\n const { components: componentOverrides, ...restAdminOverrides } = adminOverrides || {}\n\n return {\n name: getHierarchyFieldName(relationTo),\n type: 'relationship',\n admin: {\n position: 'sidebar',\n ...restAdminOverrides,\n components: {\n // NullField renders nothing - the header button handles the UI\n Field: '@payloadcms/ui#NullField',\n ...componentOverrides,\n },\n },\n custom: {\n hierarchy: {\n injectHeaderButton: true,\n },\n },\n hasMany: false,\n index: true,\n label: label ?? 'Folder',\n relationTo,\n ...restOptions,\n }
|
|
1
|
+
{"version":3,"sources":["../../src/hierarchy/createFolderField.ts"],"sourcesContent":["import type { RelationshipField, SingleRelationshipField } from '../fields/config/types.js'\n\nimport { getHierarchyFieldName } from './constants.js'\n\n/**\n * Options for creating a folder relationship field.\n * All SingleRelationshipField properties are available except name, type, relationTo, and hasMany\n * which are managed by the folder system.\n */\nexport type CreateFolderFieldOptions = {\n /**\n * The slug of the hierarchy collection this field references (e.g., 'folders')\n */\n relationTo: string\n} & Pick<Partial<SingleRelationshipField>, 'admin' | 'label' | 'required'>\n\n/**\n * Creates a relationship field for folder-style hierarchies (single-select).\n *\n * This field:\n * - Has hasMany:false (single folder selection)\n * - Uses NullField to render nothing in the form (no DOM output)\n * - Injects a header button for folder selection via miller columns UI\n *\n * Use this in your collection's fields array to add a folder relationship.\n * The field name is automatically generated based on the hierarchy slug.\n *\n * @example\n * import { createFolderField } from 'payload'\n *\n * const Posts: CollectionConfig = {\n * slug: 'posts',\n * fields: [\n * { name: 'title', type: 'text' },\n * createFolderField({\n * relationTo: 'folders',\n * label: 'Folder',\n * }),\n * ],\n * }\n */\nexport function createFolderField(options: CreateFolderFieldOptions): RelationshipField {\n const { admin: adminOverrides, label, relationTo, ...restOptions } = options\n const { components: componentOverrides, ...restAdminOverrides } = adminOverrides || {}\n\n return {\n name: getHierarchyFieldName(relationTo),\n type: 'relationship',\n admin: {\n position: 'sidebar',\n ...restAdminOverrides,\n components: {\n // NullField renders nothing - the header button handles the UI\n Field: '@payloadcms/ui#NullField',\n ...componentOverrides,\n },\n },\n custom: {\n hierarchy: {\n injectHeaderButton: true,\n },\n },\n hasMany: false,\n index: true,\n label: label ?? 'Folder',\n relationTo,\n ...restOptions,\n }\n}\n"],"names":["getHierarchyFieldName","createFolderField","options","admin","adminOverrides","label","relationTo","restOptions","components","componentOverrides","restAdminOverrides","name","type","position","Field","custom","hierarchy","injectHeaderButton","hasMany","index"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,iBAAgB;AActD;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASC,kBAAkBC,OAAiC;IACjE,MAAM,EAAEC,OAAOC,cAAc,EAAEC,KAAK,EAAEC,UAAU,EAAE,GAAGC,aAAa,GAAGL;IACrE,MAAM,EAAEM,YAAYC,kBAAkB,EAAE,GAAGC,oBAAoB,GAAGN,kBAAkB,CAAC;IAErF,OAAO;QACLO,MAAMX,sBAAsBM;QAC5BM,MAAM;QACNT,OAAO;YACLU,UAAU;YACV,GAAGH,kBAAkB;YACrBF,YAAY;gBACV,+DAA+D;gBAC/DM,OAAO;gBACP,GAAGL,kBAAkB;YACvB;QACF;QACAM,QAAQ;YACNC,WAAW;gBACTC,oBAAoB;YACtB;QACF;QACAC,SAAS;QACTC,OAAO;QACPd,OAAOA,SAAS;QAChBC;QACA,GAAGC,WAAW;IAChB;AACF"}
|