payload 3.89.0-internal.95c9cba → 3.90.0
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/forms/Field.d.ts +2 -0
- package/dist/admin/forms/Field.d.ts.map +1 -1
- package/dist/admin/forms/Field.js.map +1 -1
- package/dist/admin/forms/Form.d.ts +2 -0
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/functions/index.d.ts +3 -1
- package/dist/admin/functions/index.d.ts.map +1 -1
- package/dist/admin/functions/index.js.map +1 -1
- package/dist/admin/views/dashboard.d.ts +1 -1
- package/dist/admin/views/dashboard.d.ts.map +1 -1
- package/dist/admin/views/dashboard.js.map +1 -1
- package/dist/auth/applyUserReadAccess.d.ts +15 -0
- package/dist/auth/applyUserReadAccess.d.ts.map +1 -0
- package/dist/auth/applyUserReadAccess.js +41 -0
- package/dist/auth/applyUserReadAccess.js.map +1 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.js +20 -0
- package/dist/auth/baseFields/apiKey/canCreateOrUpdateAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.js +16 -0
- package/dist/auth/baseFields/apiKey/encryptAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/index.d.ts +6 -0
- package/dist/auth/baseFields/apiKey/index.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/index.js +112 -0
- package/dist/auth/baseFields/apiKey/index.js.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.js +8 -0
- package/dist/auth/baseFields/apiKey/omitAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.js +5 -0
- package/dist/auth/baseFields/apiKey/omitAPIKeyIndex.js.map +1 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.js +5 -0
- package/dist/auth/baseFields/apiKey/omitEncryptedAPIKey.js.map +1 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.d.ts +4 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.d.ts.map +1 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.js +17 -0
- package/dist/auth/baseFields/apiKey/setAPIKeyIndex.js.map +1 -0
- package/dist/auth/baseFields/auth.d.ts +1 -0
- package/dist/auth/baseFields/auth.d.ts.map +1 -1
- package/dist/auth/baseFields/auth.js +9 -0
- package/dist/auth/baseFields/auth.js.map +1 -1
- package/dist/auth/defaultUnlockAccess.d.ts +3 -0
- package/dist/auth/defaultUnlockAccess.d.ts.map +1 -0
- package/dist/auth/defaultUnlockAccess.js +8 -0
- package/dist/auth/defaultUnlockAccess.js.map +1 -0
- package/dist/auth/endpoints/index.d.ts +1 -0
- package/dist/auth/endpoints/index.d.ts.map +1 -1
- package/dist/auth/endpoints/index.js +8 -0
- package/dist/auth/endpoints/index.js.map +1 -1
- package/dist/auth/endpoints/revealAPIKey.d.ts +7 -0
- package/dist/auth/endpoints/revealAPIKey.d.ts.map +1 -0
- package/dist/auth/endpoints/revealAPIKey.js +120 -0
- package/dist/auth/endpoints/revealAPIKey.js.map +1 -0
- package/dist/auth/executeAccess.d.ts +3 -1
- package/dist/auth/executeAccess.d.ts.map +1 -1
- package/dist/auth/executeAccess.js +2 -1
- package/dist/auth/executeAccess.js.map +1 -1
- package/dist/auth/getAuthFields.d.ts +1 -1
- package/dist/auth/getAuthFields.d.ts.map +1 -1
- package/dist/auth/getAuthFields.js +7 -4
- package/dist/auth/getAuthFields.js.map +1 -1
- package/dist/auth/getFieldsToSign.d.ts.map +1 -1
- package/dist/auth/getFieldsToSign.js +17 -10
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/getFieldsToSign.spec.js +114 -0
- package/dist/auth/getFieldsToSign.spec.js.map +1 -0
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/jwt.js +2 -0
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/jwt.spec.js +24 -0
- package/dist/auth/jwt.spec.js.map +1 -0
- package/dist/auth/jwtAuth.d.ts +9 -0
- package/dist/auth/jwtAuth.d.ts.map +1 -0
- package/dist/auth/jwtAuth.js +8 -0
- package/dist/auth/jwtAuth.js.map +1 -0
- package/dist/auth/operations/auth.d.ts.map +1 -1
- package/dist/auth/operations/auth.js +2 -1
- package/dist/auth/operations/auth.js.map +1 -1
- package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/forgotPassword.js +95 -7
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- package/dist/auth/operations/local/auth.js +3 -1
- package/dist/auth/operations/local/auth.js.map +1 -1
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +48 -26
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +32 -9
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
- package/dist/auth/operations/registerFirstUser.js +3 -4
- package/dist/auth/operations/registerFirstUser.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +31 -22
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/operations/unlock.d.ts.map +1 -1
- package/dist/auth/operations/unlock.js +1 -0
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/auth/strategies/apiKey.d.ts.map +1 -1
- package/dist/auth/strategies/apiKey.js +15 -1
- package/dist/auth/strategies/apiKey.js.map +1 -1
- package/dist/auth/strategies/jwt.d.ts.map +1 -1
- package/dist/auth/strategies/jwt.js +61 -10
- package/dist/auth/strategies/jwt.js.map +1 -1
- package/dist/auth/strategies/jwt.spec.js +281 -0
- package/dist/auth/strategies/jwt.spec.js.map +1 -0
- package/dist/auth/strategies/local/authenticate.d.ts +5 -1
- package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
- package/dist/auth/strategies/local/authenticate.js +8 -3
- package/dist/auth/strategies/local/authenticate.js.map +1 -1
- package/dist/auth/strategies/local/authenticate.spec.js +37 -10
- package/dist/auth/strategies/local/authenticate.spec.js.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts +9 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
- package/dist/auth/strategies/local/generatePasswordSaltHash.js +61 -34
- package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
- package/dist/auth/types.d.ts +16 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/collections/config/client.d.ts +1 -0
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +3 -0
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +4 -2
- 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 +17 -6
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/endpoints/index.d.ts +1 -0
- package/dist/collections/endpoints/index.d.ts.map +1 -1
- package/dist/collections/endpoints/index.js +6 -5
- package/dist/collections/endpoints/index.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +105 -8
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/deleteByID.js +13 -13
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/findDistinct.js +96 -18
- package/dist/collections/operations/findDistinct.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +47 -13
- 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 +123 -23
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +62 -2
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +71 -15
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/config/orderable/index.d.ts.map +1 -1
- package/dist/config/orderable/index.js +67 -14
- package/dist/config/orderable/index.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +1 -1
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +13 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/getLocalizedPaths.d.ts +2 -1
- package/dist/database/getLocalizedPaths.d.ts.map +1 -1
- package/dist/database/getLocalizedPaths.js +12 -3
- package/dist/database/getLocalizedPaths.js.map +1 -1
- package/dist/database/isNestedRelationshipQuery.d.ts +9 -0
- package/dist/database/isNestedRelationshipQuery.d.ts.map +1 -0
- package/dist/database/isNestedRelationshipQuery.js +14 -0
- package/dist/database/isNestedRelationshipQuery.js.map +1 -0
- package/dist/database/prefixWherePaths.d.ts +6 -0
- package/dist/database/prefixWherePaths.d.ts.map +1 -0
- package/dist/database/prefixWherePaths.js +19 -0
- package/dist/database/prefixWherePaths.js.map +1 -0
- package/dist/database/prefixWherePaths.spec.js +46 -0
- package/dist/database/prefixWherePaths.spec.js.map +1 -0
- package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -1
- package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
- package/dist/database/queryValidation/validateQueryPaths.js +4 -1
- package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.d.ts +2 -1
- package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
- package/dist/database/queryValidation/validateSearchParams.js +82 -4
- package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
- package/dist/database/types.d.ts +5 -0
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/email/normalizeSendEmailOptions.js.map +1 -1
- package/dist/email/types.d.ts +4 -1
- package/dist/email/types.d.ts.map +1 -1
- package/dist/email/types.js.map +1 -1
- package/dist/exports/internal.d.ts +7 -0
- package/dist/exports/internal.d.ts.map +1 -1
- package/dist/exports/internal.js +7 -1
- package/dist/exports/internal.js.map +1 -1
- package/dist/exports/shared.d.ts +3 -0
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +3 -0
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/config/types.d.ts +7 -5
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/beforeChange/index.d.ts +7 -1
- package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/index.js +4 -2
- package/dist/fields/hooks/beforeChange/index.js.map +1 -1
- package/dist/fields/hooks/beforeChange/index.spec.js +206 -0
- package/dist/fields/hooks/beforeChange/index.spec.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 +51 -9
- 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 +3 -2
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeDuplicate/promise.js +4 -0
- package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/getFallbackValue.d.ts +2 -1
- package/dist/fields/hooks/beforeValidate/getFallbackValue.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/getFallbackValue.js +2 -2
- package/dist/fields/hooks/beforeValidate/getFallbackValue.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.d.ts +6 -1
- package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.js +3 -1
- package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/index.spec.js +90 -0
- package/dist/fields/hooks/beforeValidate/index.spec.js.map +1 -0
- package/dist/fields/hooks/beforeValidate/promise.d.ts +6 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +23 -8
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +6 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js +3 -1
- package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +3 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/restoreVersion.js +45 -11
- 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 +95 -16
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.bundled.d.ts +146 -48
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/preferences/config.d.ts.map +1 -1
- package/dist/preferences/config.js +2 -1
- package/dist/preferences/config.js.map +1 -1
- package/dist/query-presets/access.d.ts.map +1 -1
- package/dist/query-presets/access.js +2 -1
- package/dist/query-presets/access.js.map +1 -1
- package/dist/queues/config/collection.d.ts.map +1 -1
- package/dist/queues/config/collection.js +6 -0
- package/dist/queues/config/collection.js.map +1 -1
- package/dist/queues/config/types/index.d.ts +4 -1
- package/dist/queues/config/types/index.d.ts.map +1 -1
- package/dist/queues/config/types/index.js.map +1 -1
- package/dist/queues/endpoints/handleSchedules.d.ts.map +1 -1
- package/dist/queues/endpoints/handleSchedules.js +2 -1
- package/dist/queues/endpoints/handleSchedules.js.map +1 -1
- package/dist/queues/endpoints/run.d.ts.map +1 -1
- package/dist/queues/endpoints/run.js +2 -1
- package/dist/queues/endpoints/run.js.map +1 -1
- package/dist/uploads/assertClientUploadAccess.d.ts +7 -0
- package/dist/uploads/assertClientUploadAccess.d.ts.map +1 -0
- package/dist/uploads/assertClientUploadAccess.js +27 -0
- package/dist/uploads/assertClientUploadAccess.js.map +1 -0
- package/dist/uploads/assertClientUploadAllowed.d.ts +11 -0
- package/dist/uploads/assertClientUploadAllowed.d.ts.map +1 -0
- package/dist/uploads/assertClientUploadAllowed.js +46 -0
- package/dist/uploads/assertClientUploadAllowed.js.map +1 -0
- package/dist/uploads/assertClientUploadAllowed.spec.js +91 -0
- package/dist/uploads/assertClientUploadAllowed.spec.js.map +1 -0
- package/dist/uploads/checkFileRestrictions.d.ts +4 -1
- package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
- package/dist/uploads/checkFileRestrictions.js +66 -26
- package/dist/uploads/checkFileRestrictions.js.map +1 -1
- package/dist/uploads/clientUploadReceipt.d.ts +23 -0
- package/dist/uploads/clientUploadReceipt.d.ts.map +1 -0
- package/dist/uploads/clientUploadReceipt.js +55 -0
- package/dist/uploads/clientUploadReceipt.js.map +1 -0
- package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js +33 -8
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.spec.js +124 -0
- package/dist/uploads/deleteAssociatedFiles.spec.js.map +1 -0
- package/dist/uploads/detectSvgFromXml.d.ts +1 -3
- package/dist/uploads/detectSvgFromXml.d.ts.map +1 -1
- package/dist/uploads/detectSvgFromXml.js +3 -40
- package/dist/uploads/detectSvgFromXml.js.map +1 -1
- package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFile.js +5 -3
- package/dist/uploads/endpoints/getFile.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/handlers.d.ts +2 -2
- package/dist/uploads/fetchAPI-multipart/handlers.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/handlers.js +18 -5
- package/dist/uploads/fetchAPI-multipart/handlers.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/index.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/index.js +24 -2
- package/dist/uploads/fetchAPI-multipart/index.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts +0 -6
- package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
- package/dist/uploads/fetchAPI-multipart/processMultipart.js +146 -126
- package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
- package/dist/uploads/fetchAPI-multipart/processMultipart.spec.js +663 -0
- package/dist/uploads/fetchAPI-multipart/processMultipart.spec.js.map +1 -0
- package/dist/uploads/generateFileData.d.ts +3 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +29 -16
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +3 -1
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getExternalFile.d.ts +1 -1
- package/dist/uploads/getExternalFile.d.ts.map +1 -1
- package/dist/uploads/getExternalFile.js +60 -15
- package/dist/uploads/getExternalFile.js.map +1 -1
- package/dist/uploads/getFileFromClientUpload.d.ts +2 -2
- package/dist/uploads/getFileFromClientUpload.d.ts.map +1 -1
- package/dist/uploads/getFileFromClientUpload.js +4 -4
- package/dist/uploads/getFileFromClientUpload.js.map +1 -1
- package/dist/uploads/getFileFromClientUpload.spec.js +62 -0
- package/dist/uploads/getFileFromClientUpload.spec.js.map +1 -1
- package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
- package/dist/uploads/getFileTypeFallback.js +3 -1
- package/dist/uploads/getFileTypeFallback.js.map +1 -1
- package/dist/uploads/getFileTypeIdentity.d.ts +19 -0
- package/dist/uploads/getFileTypeIdentity.d.ts.map +1 -0
- package/dist/uploads/getFileTypeIdentity.js +34 -0
- package/dist/uploads/getFileTypeIdentity.js.map +1 -0
- package/dist/uploads/getFileTypeIdentity.spec.js +43 -0
- package/dist/uploads/getFileTypeIdentity.spec.js.map +1 -0
- package/dist/uploads/isProcessableImage.d.ts +2 -0
- package/dist/uploads/isProcessableImage.d.ts.map +1 -0
- package/dist/uploads/isProcessableImage.js +7 -0
- package/dist/uploads/isProcessableImage.js.map +1 -0
- package/dist/uploads/safeFetch.d.ts.map +1 -1
- package/dist/uploads/safeFetch.js +3 -2
- package/dist/uploads/safeFetch.js.map +1 -1
- package/dist/uploads/sanitizeUploadData.d.ts +26 -0
- package/dist/uploads/sanitizeUploadData.d.ts.map +1 -0
- package/dist/uploads/sanitizeUploadData.js +159 -0
- package/dist/uploads/sanitizeUploadData.js.map +1 -0
- package/dist/uploads/sanitizeUploadData.spec.js +255 -0
- package/dist/uploads/sanitizeUploadData.spec.js.map +1 -0
- package/dist/uploads/types.d.ts +11 -3
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/unlinkClientUploadTempFile.d.ts +20 -0
- package/dist/uploads/unlinkClientUploadTempFile.d.ts.map +1 -0
- package/dist/uploads/unlinkClientUploadTempFile.js +30 -0
- package/dist/uploads/unlinkClientUploadTempFile.js.map +1 -0
- package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
- package/dist/uploads/unlinkTempFiles.js +7 -9
- package/dist/uploads/unlinkTempFiles.js.map +1 -1
- package/dist/uploads/unlinkTempFiles.spec.js +61 -1
- package/dist/uploads/unlinkTempFiles.spec.js.map +1 -1
- package/dist/uploads/uploadContentSecurityPolicy.d.ts +2 -0
- package/dist/uploads/uploadContentSecurityPolicy.d.ts.map +1 -0
- package/dist/uploads/uploadContentSecurityPolicy.js +3 -0
- package/dist/uploads/uploadContentSecurityPolicy.js.map +1 -0
- package/dist/uploads/validateISOBaseMediaFile.d.ts +4 -0
- package/dist/uploads/validateISOBaseMediaFile.d.ts.map +1 -0
- package/dist/uploads/validateISOBaseMediaFile.js +91 -0
- package/dist/uploads/validateISOBaseMediaFile.js.map +1 -0
- package/dist/uploads/validateISOBaseMediaFile.spec.js +130 -0
- package/dist/uploads/validateISOBaseMediaFile.spec.js.map +1 -0
- package/dist/uploads/validateSvg.d.ts +10 -4
- package/dist/uploads/validateSvg.d.ts.map +1 -1
- package/dist/uploads/validateSvg.js +280 -40
- package/dist/uploads/validateSvg.js.map +1 -1
- package/dist/uploads/validateSvg.spec.js +123 -0
- package/dist/uploads/validateSvg.spec.js.map +1 -0
- package/dist/uploads/validateUploadFilename.d.ts +3 -0
- package/dist/uploads/validateUploadFilename.d.ts.map +1 -0
- package/dist/uploads/validateUploadFilename.js +13 -0
- package/dist/uploads/validateUploadFilename.js.map +1 -0
- package/dist/uploads/validateUploadFilename.spec.js +24 -0
- package/dist/uploads/validateUploadFilename.spec.js.map +1 -0
- package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
- package/dist/utilities/addDataAndFileToRequest.js +28 -1
- package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
- package/dist/utilities/addDataAndFileToRequest.spec.js +158 -0
- package/dist/utilities/addDataAndFileToRequest.spec.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +2 -1
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/deepCopyObject.d.ts.map +1 -1
- package/dist/utilities/deepCopyObject.js +110 -19
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/deepCopyObject.spec.js +216 -0
- package/dist/utilities/deepCopyObject.spec.js.map +1 -0
- package/dist/utilities/fieldPath.d.ts +13 -0
- package/dist/utilities/fieldPath.d.ts.map +1 -0
- package/dist/utilities/fieldPath.js +51 -0
- package/dist/utilities/fieldPath.js.map +1 -0
- package/dist/utilities/fieldPath.spec.js +155 -0
- package/dist/utilities/fieldPath.spec.js.map +1 -0
- package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
- package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
- package/dist/utilities/getObjectDotNotation.js +7 -1
- package/dist/utilities/getObjectDotNotation.js.map +1 -1
- package/dist/utilities/getObjectDotNotation.spec.js +33 -0
- package/dist/utilities/getObjectDotNotation.spec.js.map +1 -0
- package/dist/utilities/getSafeRedirect.spec.js +14 -0
- package/dist/utilities/getSafeRedirect.spec.js.map +1 -1
- package/dist/utilities/getTopLevelFieldNames.d.ts +2 -0
- package/dist/utilities/getTopLevelFieldNames.d.ts.map +1 -0
- package/dist/utilities/getTopLevelFieldNames.js +3 -0
- package/dist/utilities/getTopLevelFieldNames.js.map +1 -0
- package/dist/utilities/getTopLevelFieldNames.spec.js +18 -0
- package/dist/utilities/getTopLevelFieldNames.spec.js.map +1 -0
- package/dist/utilities/handleEndpoints.js +1 -1
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/parseParams/index.d.ts.map +1 -1
- package/dist/utilities/parseParams/index.js +3 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseParams/index.spec.js +8 -0
- package/dist/utilities/parseParams/index.spec.js.map +1 -1
- package/dist/utilities/traverseFields.d.ts.map +1 -1
- package/dist/utilities/traverseFields.js +5 -14
- package/dist/utilities/traverseFields.js.map +1 -1
- package/dist/utilities/unflatten.d.ts.map +1 -1
- package/dist/utilities/unflatten.js +21 -9
- package/dist/utilities/unflatten.js.map +1 -1
- package/dist/utilities/unflatten.spec.js +38 -0
- package/dist/utilities/unflatten.spec.js.map +1 -0
- package/dist/utilities/wrapInternalEndpoints.d.ts.map +1 -1
- package/dist/utilities/wrapInternalEndpoints.js +10 -3
- package/dist/utilities/wrapInternalEndpoints.js.map +1 -1
- package/dist/utilities/wrapInternalEndpoints.spec.js +124 -0
- package/dist/utilities/wrapInternalEndpoints.spec.js.map +1 -0
- package/dist/versions/allLocalesPublicationStatus.d.ts +38 -0
- package/dist/versions/allLocalesPublicationStatus.d.ts.map +1 -0
- package/dist/versions/allLocalesPublicationStatus.js +57 -0
- package/dist/versions/allLocalesPublicationStatus.js.map +1 -0
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +10 -2
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/getRestoredStatusesToAuthorize.d.ts +9 -0
- package/dist/versions/getRestoredStatusesToAuthorize.d.ts.map +1 -0
- package/dist/versions/getRestoredStatusesToAuthorize.js +22 -0
- package/dist/versions/getRestoredStatusesToAuthorize.js.map +1 -0
- package/dist/versions/getRestoredStatusesToAuthorize.spec.js +50 -0
- package/dist/versions/getRestoredStatusesToAuthorize.spec.js.map +1 -0
- package/dist/versions/schedule/job.d.ts +2 -2
- package/dist/versions/schedule/job.d.ts.map +1 -1
- package/dist/versions/schedule/job.js +11 -7
- package/dist/versions/schedule/job.js.map +1 -1
- package/dist/versions/schedule/types.d.ts +5 -1
- package/dist/versions/schedule/types.d.ts.map +1 -1
- package/dist/versions/schedule/types.js.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAQhD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAQ3B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAgCtE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAia7C,CAAA"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { status as httpStatus } from 'http-status';
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import fs from 'node:fs/promises';
|
|
4
|
+
import path from 'node:path';
|
|
2
5
|
import { executeAccess } from '../../auth/executeAccess.js';
|
|
3
6
|
import { combineQueries } from '../../database/combineQueries.js';
|
|
4
7
|
import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js';
|
|
@@ -6,14 +9,17 @@ import { validateSortQuery } from '../../database/queryValidation/validateSortQu
|
|
|
6
9
|
import { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js';
|
|
7
10
|
import { APIError } from '../../errors/index.js';
|
|
8
11
|
import { generateFileData } from '../../uploads/generateFileData.js';
|
|
12
|
+
import { getLocalizedUploadProperties, getUploadDestination, mergeUploadDataWithDocument, sanitizeUploadData } from '../../uploads/sanitizeUploadData.js';
|
|
9
13
|
import { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js';
|
|
10
14
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
11
15
|
import { commitTransaction } from '../../utilities/commitTransaction.js';
|
|
12
|
-
import { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js';
|
|
16
|
+
import { hasDraftsEnabled, hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js';
|
|
13
17
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
14
18
|
import { isErrorPublic } from '../../utilities/isErrorPublic.js';
|
|
19
|
+
import { isolateObjectProperty } from '../../utilities/isolateObjectProperty.js';
|
|
15
20
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
16
21
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
22
|
+
import { getAllLocalesPublicationStatus, normalizeAllLocalesPublicationStatus, reconcileAllLocalesPublicationStatus, validateAllLocalesPublicationFlags } from '../../versions/allLocalesPublicationStatus.js';
|
|
17
23
|
import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
|
|
18
24
|
import { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js';
|
|
19
25
|
import { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js';
|
|
@@ -29,6 +35,39 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
29
35
|
}
|
|
30
36
|
try {
|
|
31
37
|
const shouldCommit = !args.disableTransaction && await initTransaction(args.req);
|
|
38
|
+
if (args.collection.config.upload && !args.overrideAccess) {
|
|
39
|
+
const { objectKey, prefix } = getUploadDestination({
|
|
40
|
+
data: args.data,
|
|
41
|
+
file: args.req.file
|
|
42
|
+
});
|
|
43
|
+
const data = sanitizeUploadData(args.data, 'update');
|
|
44
|
+
args = {
|
|
45
|
+
...args,
|
|
46
|
+
data: typeof data === 'object' && data !== null ? {
|
|
47
|
+
...data,
|
|
48
|
+
...prefix !== undefined ? {
|
|
49
|
+
prefix
|
|
50
|
+
} : {},
|
|
51
|
+
...objectKey !== undefined ? {
|
|
52
|
+
_objectKey: objectKey
|
|
53
|
+
} : {}
|
|
54
|
+
} : data
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
validateAllLocalesPublicationFlags({
|
|
58
|
+
publishAllLocales: args.publishAllLocales,
|
|
59
|
+
unpublishAllLocales: args.unpublishAllLocales
|
|
60
|
+
});
|
|
61
|
+
const initialCollectionConfig = args.collection.config;
|
|
62
|
+
const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
|
|
63
|
+
hasLocalizedStatus: Boolean(args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig)),
|
|
64
|
+
publishAllLocales: !args.draft && (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),
|
|
65
|
+
unpublishAllLocales: Boolean(args.unpublishAllLocales)
|
|
66
|
+
});
|
|
67
|
+
const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({
|
|
68
|
+
data: args.data,
|
|
69
|
+
status: initialAllLocalesPublicationStatus
|
|
70
|
+
});
|
|
32
71
|
// /////////////////////////////////////
|
|
33
72
|
// beforeOperation - Collection
|
|
34
73
|
// /////////////////////////////////////
|
|
@@ -38,11 +77,28 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
38
77
|
operation: 'update',
|
|
39
78
|
overrideAccess: args.overrideAccess
|
|
40
79
|
});
|
|
41
|
-
const { autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, limit = 0, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, sort: incomingSort, trash = false, unpublishAllLocales, where } = args;
|
|
80
|
+
const { autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, limit = 0, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales: publishAllLocalesArg, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, sort: incomingSort, trash = false, unpublishAllLocales: unpublishAllLocalesArg, where } = args;
|
|
42
81
|
if (!where) {
|
|
43
82
|
throw new APIError("Missing 'where' query of documents to update.", httpStatus.BAD_REQUEST);
|
|
44
83
|
}
|
|
45
84
|
const { data: bulkUpdateData } = args;
|
|
85
|
+
validateAllLocalesPublicationFlags({
|
|
86
|
+
publishAllLocales: publishAllLocalesArg,
|
|
87
|
+
unpublishAllLocales: unpublishAllLocalesArg
|
|
88
|
+
});
|
|
89
|
+
const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
|
|
90
|
+
hasLocalizedStatus: Boolean(config.localization && hasLocalizeStatusEnabled(collectionConfig)),
|
|
91
|
+
publishAllLocales: !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),
|
|
92
|
+
unpublishAllLocales: Boolean(unpublishAllLocalesArg)
|
|
93
|
+
});
|
|
94
|
+
const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({
|
|
95
|
+
data: bulkUpdateData,
|
|
96
|
+
intent: initialAllLocalesPublicationIntent,
|
|
97
|
+
status: requestedAllLocalesPublicationStatus
|
|
98
|
+
});
|
|
99
|
+
const publicationIntentSurvivedBeforeOperation = !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus);
|
|
100
|
+
const publishAllLocales = publicationIntentSurvivedBeforeOperation ? publishAllLocalesArg : false;
|
|
101
|
+
const unpublishAllLocales = publicationIntentSurvivedBeforeOperation ? unpublishAllLocalesArg : false;
|
|
46
102
|
const shouldSaveDraft = Boolean(draftArg && hasDraftsEnabled(collectionConfig));
|
|
47
103
|
// /////////////////////////////////////
|
|
48
104
|
// Access
|
|
@@ -50,6 +106,7 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
50
106
|
let accessResult;
|
|
51
107
|
if (!overrideAccess) {
|
|
52
108
|
accessResult = await executeAccess({
|
|
109
|
+
data: bulkUpdateData,
|
|
53
110
|
req
|
|
54
111
|
}, collectionConfig.access.update);
|
|
55
112
|
}
|
|
@@ -129,10 +186,7 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
129
186
|
});
|
|
130
187
|
docs = query.docs;
|
|
131
188
|
}
|
|
132
|
-
|
|
133
|
-
// Generate data for all files and sizes
|
|
134
|
-
// /////////////////////////////////////
|
|
135
|
-
const { data, files: filesToUpload } = await generateFileData({
|
|
189
|
+
const sharedGeneratedFileData = !collectionConfig.upload || overrideAccess && Boolean(req.file) ? await generateFileData({
|
|
136
190
|
collection,
|
|
137
191
|
config,
|
|
138
192
|
data: bulkUpdateData,
|
|
@@ -140,16 +194,48 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
140
194
|
overwriteExistingFiles,
|
|
141
195
|
req,
|
|
142
196
|
throwOnMissingFile: false
|
|
143
|
-
});
|
|
197
|
+
}) : null;
|
|
144
198
|
const errors = [];
|
|
145
|
-
const
|
|
199
|
+
const processDocument = async (docWithLocales)=>{
|
|
146
200
|
const { id } = docWithLocales;
|
|
201
|
+
let documentTempFilePath;
|
|
147
202
|
try {
|
|
148
203
|
// Each document gets its own transaction when singleTransaction is enabled
|
|
149
204
|
let docShouldCommit = false;
|
|
150
205
|
if (req.payload.db.bulkOperationsSingleTransaction) {
|
|
151
206
|
docShouldCommit = await initTransaction(req);
|
|
152
207
|
}
|
|
208
|
+
const documentFile = req.file ? {
|
|
209
|
+
...req.file
|
|
210
|
+
} : undefined;
|
|
211
|
+
if (collectionConfig.upload && !overrideAccess && documentFile?.tempFilePath) {
|
|
212
|
+
const extension = path.extname(documentFile.tempFilePath);
|
|
213
|
+
documentTempFilePath = path.join(path.dirname(documentFile.tempFilePath), `${path.basename(documentFile.tempFilePath, extension)}-${randomUUID()}${extension}`);
|
|
214
|
+
await fs.copyFile(documentFile.tempFilePath, documentTempFilePath);
|
|
215
|
+
documentFile.tempFilePath = documentTempFilePath;
|
|
216
|
+
}
|
|
217
|
+
let documentReq = req;
|
|
218
|
+
if (collectionConfig.upload && sharedGeneratedFileData === null) {
|
|
219
|
+
documentReq = isolateObjectProperty(req, [
|
|
220
|
+
'file',
|
|
221
|
+
'payloadUploadSizes'
|
|
222
|
+
]);
|
|
223
|
+
documentReq.file = documentFile;
|
|
224
|
+
documentReq.payloadUploadSizes = {};
|
|
225
|
+
}
|
|
226
|
+
const generatedFileData = sharedGeneratedFileData ?? await generateFileData({
|
|
227
|
+
collection,
|
|
228
|
+
config,
|
|
229
|
+
data: mergeUploadDataWithDocument(bulkUpdateData, docWithLocales, {
|
|
230
|
+
locale: locale === 'all' || !locale ? config.localization ? config.localization.defaultLocale : undefined : locale,
|
|
231
|
+
localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields)
|
|
232
|
+
}),
|
|
233
|
+
operation: 'update',
|
|
234
|
+
originalDoc: docWithLocales,
|
|
235
|
+
overwriteExistingFiles,
|
|
236
|
+
req: documentReq,
|
|
237
|
+
throwOnMissingFile: false
|
|
238
|
+
});
|
|
153
239
|
const select = sanitizeSelect({
|
|
154
240
|
fields: collectionConfig.flattenedFields,
|
|
155
241
|
forceSelect: collectionConfig.forceSelect,
|
|
@@ -165,7 +251,7 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
165
251
|
config,
|
|
166
252
|
data: copyDataWithFreshRowIDs({
|
|
167
253
|
config,
|
|
168
|
-
data,
|
|
254
|
+
data: generatedFileData.data,
|
|
169
255
|
existingDoc: docWithLocales,
|
|
170
256
|
fields: collectionConfig.fields
|
|
171
257
|
}),
|
|
@@ -173,7 +259,7 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
173
259
|
docWithLocales,
|
|
174
260
|
draftArg,
|
|
175
261
|
fallbackLocale: fallbackLocale,
|
|
176
|
-
filesToUpload,
|
|
262
|
+
filesToUpload: generatedFileData.files,
|
|
177
263
|
locale: locale,
|
|
178
264
|
overrideAccess: overrideAccess,
|
|
179
265
|
overrideLock: overrideLock,
|
|
@@ -181,7 +267,7 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
181
267
|
populate,
|
|
182
268
|
publishAllLocales,
|
|
183
269
|
publishSpecificLocale,
|
|
184
|
-
req,
|
|
270
|
+
req: documentReq,
|
|
185
271
|
select: select,
|
|
186
272
|
showHiddenFields: showHiddenFields,
|
|
187
273
|
unpublishAllLocales
|
|
@@ -209,25 +295,39 @@ export const updateOperation = async (incomingArgs)=>{
|
|
|
209
295
|
isPublic,
|
|
210
296
|
message: error instanceof Error ? error.message : 'Unknown error'
|
|
211
297
|
});
|
|
298
|
+
} finally{
|
|
299
|
+
if (documentTempFilePath) {
|
|
300
|
+
await fs.rm(documentTempFilePath, {
|
|
301
|
+
force: true
|
|
302
|
+
}).catch((error)=>{
|
|
303
|
+
req.payload.logger.error({
|
|
304
|
+
err: error,
|
|
305
|
+
msg: 'Failed to remove temp file copy'
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
}
|
|
212
309
|
}
|
|
213
310
|
return null;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
// Process sequentially when using single transaction mode to avoid shared state issues
|
|
221
|
-
// Process in parallel when using one transaction for better performance
|
|
311
|
+
};
|
|
312
|
+
// Upload processing may mutate its temp file while cropping, so each document must finish
|
|
313
|
+
// before the next document starts. This only applies when an actual file is being written
|
|
314
|
+
// (`req.file`); metadata-only bulk updates use isolated per-document request state and can
|
|
315
|
+
// stay parallel. Other bulk updates retain their existing parallel behavior.
|
|
316
|
+
const processSequentially = req.payload.db.bulkOperationsSingleTransaction || Boolean(collectionConfig.upload && !overrideAccess && req.file);
|
|
222
317
|
let awaitedDocs;
|
|
223
|
-
if (
|
|
318
|
+
if (processSequentially) {
|
|
224
319
|
awaitedDocs = [];
|
|
225
|
-
for (const
|
|
226
|
-
awaitedDocs.push(await
|
|
320
|
+
for (const doc of docs){
|
|
321
|
+
awaitedDocs.push(await processDocument(doc));
|
|
227
322
|
}
|
|
228
323
|
} else {
|
|
229
|
-
awaitedDocs = await Promise.all(
|
|
324
|
+
awaitedDocs = await Promise.all(docs.map(processDocument));
|
|
230
325
|
}
|
|
326
|
+
await unlinkTempFiles({
|
|
327
|
+
collectionConfig,
|
|
328
|
+
config,
|
|
329
|
+
req
|
|
330
|
+
});
|
|
231
331
|
let result = {
|
|
232
332
|
docs: awaitedDocs.filter(Boolean),
|
|
233
333
|
errors
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/index.js'\nimport { type CollectionSlug, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { isErrorPublic } from '../../utilities/isErrorPublic.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { copyDataWithFreshRowIDs } from './utilities/copyDataWithFreshRowIDs.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n limit?: number\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n /**\n * Sort the documents, can be a string or an array of strings\n * @example '-createdAt' // Sort DESC by createdAt\n * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt\n */\n sort?: Sort\n trash?: boolean\n unpublishAllLocales?: boolean\n where: Where\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n if (args.collection.config.disableBulkEdit && !args.overrideAccess) {\n throw new APIError(`Collection ${args.collection.config.slug} has disabled bulk edit`, 403)\n }\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n limit = 0,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n unpublishAllLocales,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to update.\", httpStatus.BAD_REQUEST)\n }\n\n const { data: bulkUpdateData } = args\n const shouldSaveDraft = Boolean(draftArg && hasDraftsEnabled(collectionConfig))\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.update)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where, accessResult!)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof bulkUpdateData === 'object' &&\n bulkUpdateData !== null &&\n 'deletedAt' in bulkUpdateData &&\n bulkUpdateData.deletedAt != null\n\n // Enforce delete access if performing a soft-delete (trash)\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { data: bulkUpdateData, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort || collectionConfig.defaultSort,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n })\n\n let docs\n\n if (hasDraftsEnabled(collectionConfig) && (shouldSaveDraft || isTrashAttempt)) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort: getQueryDraftsSort({ collectionConfig, sort }),\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const errors: BulkOperationResult<TSlug, TSelect>['errors'] = []\n\n const promises = docs.map(async (docWithLocales) => {\n const { id } = docWithLocales\n\n try {\n // Each document gets its own transaction when singleTransaction is enabled\n let docShouldCommit = false\n if (req.payload.db.bulkOperationsSingleTransaction) {\n docShouldCommit = await initTransaction(req)\n }\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n let updatedDoc = await updateDocument({\n id,\n autosave,\n collectionConfig,\n config,\n data: copyDataWithFreshRowIDs({\n config,\n data,\n existingDoc: docWithLocales,\n fields: collectionConfig.fields,\n }),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n updatedDoc = { ...updatedDoc, collection: collectionConfig.slug }\n }\n\n if (docShouldCommit) {\n await commitTransaction(req)\n }\n\n return updatedDoc\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\n\n if (req.payload.db.bulkOperationsSingleTransaction) {\n await killTransaction(req)\n }\n errors.push({\n id,\n isPublic,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n return null\n })\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // Process sequentially when using single transaction mode to avoid shared state issues\n // Process in parallel when using one transaction for better performance\n let awaitedDocs: (DataFromCollectionSlug<TSlug> | null)[]\n if (req.payload.db.bulkOperationsSingleTransaction) {\n awaitedDocs = []\n for (const promise of promises) {\n awaitedDocs.push(await promise)\n }\n } else {\n awaitedDocs = await Promise.all(promises)\n }\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'update',\n overrideAccess,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","generateFileData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","hasDraftsEnabled","initTransaction","isErrorPublic","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","copyDataWithFreshRowIDs","sanitizeSortQuery","updateDocument","updateOperation","incomingArgs","args","collection","config","disableBulkEdit","overrideAccess","slug","shouldCommit","disableTransaction","req","operation","autosave","collectionConfig","depth","draft","draftArg","limit","overrideLock","overwriteExistingFiles","populate","publishAllLocales","publishSpecificLocale","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","unpublishAllLocales","where","BAD_REQUEST","data","bulkUpdateData","shouldSaveDraft","Boolean","accessResult","access","update","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","fields","flattenedFields","defaultSort","docs","versionsWhere","versionFields","query","db","queryDrafts","pagination","find","files","filesToUpload","throwOnMissingFile","errors","promises","map","docWithLocales","id","docShouldCommit","bulkOperationsSingleTransaction","forceSelect","updatedDoc","existingDoc","auth","error","isPublic","Error","push","message","awaitedDocs","promise","Promise","all","result","filter","catch","unlinkError","logger","err","msg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\nimport { randomUUID } from 'node:crypto'\nimport fs from 'node:fs/promises'\nimport path from 'node:path'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/index.js'\nimport { type CollectionSlug, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport {\n getLocalizedUploadProperties,\n getUploadDestination,\n mergeUploadDataWithDocument,\n sanitizeUploadData,\n} from '../../uploads/sanitizeUploadData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasDraftsEnabled, hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { isErrorPublic } from '../../utilities/isErrorPublic.js'\nimport { isolateObjectProperty } from '../../utilities/isolateObjectProperty.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport {\n getAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { copyDataWithFreshRowIDs } from './utilities/copyDataWithFreshRowIDs.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n limit?: number\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n /**\n * Sort the documents, can be a string or an array of strings\n * @example '-createdAt' // Sort DESC by createdAt\n * @example ['group', '-createdAt'] // sort by 2 fields, ASC group and DESC createdAt\n */\n sort?: Sort\n trash?: boolean\n unpublishAllLocales?: boolean\n where: Where\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n if (args.collection.config.disableBulkEdit && !args.overrideAccess) {\n throw new APIError(`Collection ${args.collection.config.slug} has disabled bulk edit`, 403)\n }\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n if (args.collection.config.upload && !args.overrideAccess) {\n const { objectKey, prefix } = getUploadDestination({ data: args.data, file: args.req.file })\n const data = sanitizeUploadData(args.data, 'update')\n\n args = {\n ...args,\n data:\n typeof data === 'object' && data !== null\n ? {\n ...data,\n ...(prefix !== undefined ? { prefix } : {}),\n ...(objectKey !== undefined ? { _objectKey: objectKey } : {}),\n }\n : data,\n }\n }\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialCollectionConfig = args.collection.config\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig),\n ),\n publishAllLocales:\n !args.draft &&\n (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n limit = 0,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n unpublishAllLocales: unpublishAllLocalesArg,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to update.\", httpStatus.BAD_REQUEST)\n }\n\n const { data: bulkUpdateData } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n config.localization && hasLocalizeStatusEnabled(collectionConfig),\n ),\n publishAllLocales:\n !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),\n unpublishAllLocales: Boolean(unpublishAllLocalesArg),\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data: bulkUpdateData,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n const publicationIntentSurvivedBeforeOperation =\n !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus)\n const publishAllLocales = publicationIntentSurvivedBeforeOperation\n ? publishAllLocalesArg\n : false\n const unpublishAllLocales = publicationIntentSurvivedBeforeOperation\n ? unpublishAllLocalesArg\n : false\n\n const shouldSaveDraft = Boolean(draftArg && hasDraftsEnabled(collectionConfig))\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n if (!overrideAccess) {\n accessResult = await executeAccess(\n { data: bulkUpdateData, req },\n collectionConfig.access.update,\n )\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where, accessResult!)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof bulkUpdateData === 'object' &&\n bulkUpdateData !== null &&\n 'deletedAt' in bulkUpdateData &&\n bulkUpdateData.deletedAt != null\n\n // Enforce delete access if performing a soft-delete (trash)\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { data: bulkUpdateData, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort || collectionConfig.defaultSort,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n })\n\n let docs\n\n if (hasDraftsEnabled(collectionConfig) && (shouldSaveDraft || isTrashAttempt)) {\n const versionsWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n const query = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort: getQueryDraftsSort({ collectionConfig, sort }),\n where: versionsWhere,\n })\n\n docs = query.docs\n } else {\n const query = await payload.db.find({\n collection: collectionConfig.slug,\n limit,\n locale: locale!,\n pagination: false,\n req,\n sort,\n where: fullWhere,\n })\n\n docs = query.docs\n }\n\n const sharedGeneratedFileData =\n !collectionConfig.upload || (overrideAccess && Boolean(req.file))\n ? await generateFileData({\n collection,\n config,\n data: bulkUpdateData,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n : null\n\n const errors: BulkOperationResult<TSlug, TSelect>['errors'] = []\n\n const processDocument = async (docWithLocales: (typeof docs)[number]) => {\n const { id } = docWithLocales\n let documentTempFilePath: string | undefined\n\n try {\n // Each document gets its own transaction when singleTransaction is enabled\n let docShouldCommit = false\n if (req.payload.db.bulkOperationsSingleTransaction) {\n docShouldCommit = await initTransaction(req)\n }\n\n const documentFile = req.file ? { ...req.file } : undefined\n if (collectionConfig.upload && !overrideAccess && documentFile?.tempFilePath) {\n const extension = path.extname(documentFile.tempFilePath)\n documentTempFilePath = path.join(\n path.dirname(documentFile.tempFilePath),\n `${path.basename(documentFile.tempFilePath, extension)}-${randomUUID()}${extension}`,\n )\n await fs.copyFile(documentFile.tempFilePath, documentTempFilePath)\n documentFile.tempFilePath = documentTempFilePath\n }\n\n let documentReq = req\n if (collectionConfig.upload && sharedGeneratedFileData === null) {\n documentReq = isolateObjectProperty(req, ['file', 'payloadUploadSizes'])\n documentReq.file = documentFile\n documentReq.payloadUploadSizes = {}\n }\n const generatedFileData =\n sharedGeneratedFileData ??\n (await generateFileData({\n collection,\n config,\n data: mergeUploadDataWithDocument(bulkUpdateData, docWithLocales, {\n locale:\n locale === 'all' || !locale\n ? config.localization\n ? config.localization.defaultLocale\n : undefined\n : locale,\n localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields),\n }),\n operation: 'update',\n originalDoc: docWithLocales,\n overwriteExistingFiles,\n req: documentReq,\n throwOnMissingFile: false,\n }))\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n let updatedDoc = await updateDocument({\n id,\n autosave,\n collectionConfig,\n config,\n data: copyDataWithFreshRowIDs({\n config,\n data: generatedFileData.data,\n existingDoc: docWithLocales,\n fields: collectionConfig.fields,\n }),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload: generatedFileData.files,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: documentReq,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n updatedDoc = { ...updatedDoc, collection: collectionConfig.slug }\n }\n\n if (docShouldCommit) {\n await commitTransaction(req)\n }\n\n return updatedDoc\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\n\n if (req.payload.db.bulkOperationsSingleTransaction) {\n await killTransaction(req)\n }\n errors.push({\n id,\n isPublic,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n } finally {\n if (documentTempFilePath) {\n await fs.rm(documentTempFilePath, { force: true }).catch((error) => {\n req.payload.logger.error({ err: error, msg: 'Failed to remove temp file copy' })\n })\n }\n }\n return null\n }\n\n // Upload processing may mutate its temp file while cropping, so each document must finish\n // before the next document starts. This only applies when an actual file is being written\n // (`req.file`); metadata-only bulk updates use isolated per-document request state and can\n // stay parallel. Other bulk updates retain their existing parallel behavior.\n const processSequentially =\n req.payload.db.bulkOperationsSingleTransaction ||\n Boolean(collectionConfig.upload && !overrideAccess && req.file)\n let awaitedDocs: (DataFromCollectionSlug<TSlug> | null)[]\n if (processSequentially) {\n awaitedDocs = []\n for (const doc of docs) {\n awaitedDocs.push(await processDocument(doc))\n }\n } else {\n awaitedDocs = await Promise.all(docs.map(processDocument))\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'update',\n overrideAccess,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","randomUUID","fs","path","executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","generateFileData","getLocalizedUploadProperties","getUploadDestination","mergeUploadDataWithDocument","sanitizeUploadData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","hasDraftsEnabled","hasLocalizeStatusEnabled","initTransaction","isErrorPublic","isolateObjectProperty","killTransaction","sanitizeSelect","getAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","copyDataWithFreshRowIDs","sanitizeSortQuery","updateDocument","updateOperation","incomingArgs","args","collection","config","disableBulkEdit","overrideAccess","slug","shouldCommit","disableTransaction","req","upload","objectKey","prefix","data","file","undefined","_objectKey","publishAllLocales","unpublishAllLocales","initialCollectionConfig","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","localization","draft","initialAllLocalesPublicationIntent","operation","autosave","collectionConfig","depth","draftArg","limit","overrideLock","overwriteExistingFiles","populate","publishAllLocalesArg","publishSpecificLocale","fallbackLocale","locale","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","unpublishAllLocalesArg","where","BAD_REQUEST","bulkUpdateData","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","publicationIntentSurvivedBeforeOperation","shouldSaveDraft","accessResult","access","update","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","fields","flattenedFields","defaultSort","docs","versionsWhere","versionFields","query","db","queryDrafts","pagination","find","sharedGeneratedFileData","throwOnMissingFile","errors","processDocument","docWithLocales","id","documentTempFilePath","docShouldCommit","bulkOperationsSingleTransaction","documentFile","tempFilePath","extension","extname","join","dirname","basename","copyFile","documentReq","payloadUploadSizes","generatedFileData","defaultLocale","localizedProperties","originalDoc","forceSelect","updatedDoc","existingDoc","filesToUpload","files","auth","error","isPublic","Error","push","message","rm","force","catch","logger","err","msg","processSequentially","awaitedDocs","doc","Promise","all","map","result","filter","unlinkError"],"mappings":"AAEA,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAClD,SAASC,UAAU,QAAQ,cAAa;AACxC,OAAOC,QAAQ,mBAAkB;AACjC,OAAOC,UAAU,YAAW;AAY5B,SAASC,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,iBAAiB,QAAQ,sDAAqD;AACvF,SAASC,kBAAkB,QAAQ,uCAAsC;AACzE,SAASC,QAAQ,QAAQ,wBAAuB;AAEhD,SAASC,gBAAgB,QAAQ,oCAAmC;AACpE,SACEC,4BAA4B,EAC5BC,oBAAoB,EACpBC,2BAA2B,EAC3BC,kBAAkB,QACb,sCAAqC;AAC5C,SAASC,eAAe,QAAQ,mCAAkC;AAClE,SAASC,sBAAsB,QAAQ,4CAA2C;AAClF,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,gBAAgB,EAAEC,wBAAwB,QAAQ,uCAAsC;AACjG,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,aAAa,QAAQ,mCAAkC;AAChE,SAASC,qBAAqB,QAAQ,2CAA0C;AAChF,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SACEC,8BAA8B,EAC9BC,oCAAoC,EACpCC,oCAAoC,EACpCC,kCAAkC,QAC7B,gDAA+C;AACtD,SAASC,4BAA4B,QAAQ,0CAAyC;AACtF,SAASC,uBAAuB,QAAQ,mDAAkD;AAC1F,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,mBAAmB,QAAQ,qCAAoC;AACxE,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,uBAAuB,QAAQ,yCAAwC;AAChF,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,cAAc,QAAQ,wBAAuB;AA8BtD,OAAO,MAAMC,kBAAkB,OAI7BC;IAEA,IAAIC,OAAOD;IAEX,IAAIC,KAAKC,UAAU,CAACC,MAAM,CAACC,eAAe,IAAI,CAACH,KAAKI,cAAc,EAAE;QAClE,MAAM,IAAIlC,SAAS,CAAC,WAAW,EAAE8B,KAAKC,UAAU,CAACC,MAAM,CAACG,IAAI,CAAC,uBAAuB,CAAC,EAAE;IACzF;IAEA,IAAI;QACF,MAAMC,eAAe,CAACN,KAAKO,kBAAkB,IAAK,MAAM1B,gBAAgBmB,KAAKQ,GAAG;QAEhF,IAAIR,KAAKC,UAAU,CAACC,MAAM,CAACO,MAAM,IAAI,CAACT,KAAKI,cAAc,EAAE;YACzD,MAAM,EAAEM,SAAS,EAAEC,MAAM,EAAE,GAAGtC,qBAAqB;gBAAEuC,MAAMZ,KAAKY,IAAI;gBAAEC,MAAMb,KAAKQ,GAAG,CAACK,IAAI;YAAC;YAC1F,MAAMD,OAAOrC,mBAAmByB,KAAKY,IAAI,EAAE;YAE3CZ,OAAO;gBACL,GAAGA,IAAI;gBACPY,MACE,OAAOA,SAAS,YAAYA,SAAS,OACjC;oBACE,GAAGA,IAAI;oBACP,GAAID,WAAWG,YAAY;wBAAEH;oBAAO,IAAI,CAAC,CAAC;oBAC1C,GAAID,cAAcI,YAAY;wBAAEC,YAAYL;oBAAU,IAAI,CAAC,CAAC;gBAC9D,IACAE;YACR;QACF;QAEAvB,mCAAmC;YACjC2B,mBAAmBhB,KAAKgB,iBAAiB;YACzCC,qBAAqBjB,KAAKiB,mBAAmB;QAC/C;QAEA,MAAMC,0BAA0BlB,KAAKC,UAAU,CAACC,MAAM;QACtD,MAAMiB,qCAAqCjC,+BAA+B;YACxEkC,oBAAoBC,QAClBrB,KAAKQ,GAAG,CAACc,OAAO,CAACpB,MAAM,CAACqB,YAAY,IAAI3C,yBAAyBsC;YAEnEF,mBACE,CAAChB,KAAKwB,KAAK,IACVxB,CAAAA,KAAKgB,iBAAiB,IAAI,CAACpC,yBAAyBsC,wBAAuB;YAC9ED,qBAAqBI,QAAQrB,KAAKiB,mBAAmB;QACvD;QAEA,MAAMQ,qCAAqCtC,qCAAqC;YAC9EyB,MAAMZ,KAAKY,IAAI;YACfpD,QAAQ2D;QACV;QAEA,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExCnB,OAAO,MAAMN,qBAAqB;YAChCM;YACAC,YAAYD,KAAKC,UAAU,CAACC,MAAM;YAClCwB,WAAW;YACXtB,gBAAgBJ,KAAKI,cAAc;QACrC;QAEA,MAAM,EACJuB,WAAW,KAAK,EAChB1B,YAAY,EAAEC,QAAQ0B,gBAAgB,EAAE,EACxC3B,UAAU,EACV4B,KAAK,EACLL,OAAOM,WAAW,KAAK,EACvBC,QAAQ,CAAC,EACT3B,cAAc,EACd4B,YAAY,EACZC,yBAAyB,KAAK,EAC9BC,QAAQ,EACRlB,mBAAmBmB,oBAAoB,EACvCC,qBAAqB,EACrB5B,KAAK,EACH6B,cAAc,EACdC,MAAM,EACNhB,SAAS,EAAEpB,MAAM,EAAE,EACnBoB,OAAO,EACR,EACDd,GAAG,EACH+B,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,MAAMC,YAAY,EAClBC,QAAQ,KAAK,EACb3B,qBAAqB4B,sBAAsB,EAC3CC,KAAK,EACN,GAAG9C;QAEJ,IAAI,CAAC8C,OAAO;YACV,MAAM,IAAI5E,SAAS,iDAAiDT,WAAWsF,WAAW;QAC5F;QAEA,MAAM,EAAEnC,MAAMoC,cAAc,EAAE,GAAGhD;QAEjCX,mCAAmC;YACjC2B,mBAAmBmB;YACnBlB,qBAAqB4B;QACvB;QAEA,MAAMI,uCAAuC/D,+BAA+B;YAC1EkC,oBAAoBC,QAClBnB,OAAOqB,YAAY,IAAI3C,yBAAyBgD;YAElDZ,mBACE,CAACc,YAAaK,CAAAA,wBAAwB,CAACvD,yBAAyBgD,iBAAgB;YAClFX,qBAAqBI,QAAQwB;QAC/B;QACA,MAAMK,8BAA8B9D,qCAAqC;YACvEwB,MAAMoC;YACNG,QAAQ1B;YACRjE,QAAQyF;QACV;QACA,MAAMG,2CACJ,CAACH,wCAAwC5B,QAAQ6B;QACnD,MAAMlC,oBAAoBoC,2CACtBjB,uBACA;QACJ,MAAMlB,sBAAsBmC,2CACxBP,yBACA;QAEJ,MAAMQ,kBAAkBhC,QAAQS,YAAYnD,iBAAiBiD;QAE7D,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAI0B;QACJ,IAAI,CAAClD,gBAAgB;YACnBkD,eAAe,MAAMzF,cACnB;gBAAE+C,MAAMoC;gBAAgBxC;YAAI,GAC5BoB,iBAAiB2B,MAAM,CAACC,MAAM;QAElC;QAEA,MAAMzF,mBAAmB;YACvB6D;YACAxB,gBAAgBA;YAChBI;YACAsC;QACF;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC,IAAIW,YAAY3F,eAAegF,OAAOQ;QAEtC,MAAMI,iBACJ9B,iBAAiBgB,KAAK,IACtB,OAAOI,mBAAmB,YAC1BA,mBAAmB,QACnB,eAAeA,kBACfA,eAAeW,SAAS,IAAI;QAE9B,4DAA4D;QAC5D,IAAID,kBAAkB,CAACtD,gBAAgB;YACrC,qFAAqF;YACrF,MAAMwD,qBAAqB,MAAM/F,cAC/B;gBAAE+C,MAAMoC;gBAAgBxC;YAAI,GAC5BoB,iBAAiB2B,MAAM,CAACM,MAAM;YAEhCJ,YAAY3F,eAAe2F,WAAWG;QACxC;QAEA,8CAA8C;QAC9CH,YAAYhF,uBAAuB;YACjCqF,aAAalC,iBAAiBgB,KAAK;YACnCA;YACAE,OAAOW;QACT;QAEAxF,mBAAmB;YAAE8F,QAAQnC,iBAAiBoC,eAAe;YAAE1C;YAASwB,OAAOW;QAAU;QAEzF,MAAMf,OAAO9C,kBAAkB;YAC7BmE,QAAQ9D,WAAWC,MAAM,CAAC8D,eAAe;YACzCtB,MAAMC,gBAAgBf,iBAAiBqC,WAAW;QACpD;QAEA,MAAMjG,kBAAkB;YACtB4D;YACAxB,gBAAgBA;YAChBI;YACAkC;QACF;QAEA,IAAIwB;QAEJ,IAAIvF,iBAAiBiD,qBAAsByB,CAAAA,mBAAmBK,cAAa,GAAI;YAC7E,MAAMS,gBAAgB5E,wBAAwBkE;YAE9C,MAAM1F,mBAAmB;gBACvB6D,kBAAkB3B,WAAWC,MAAM;gBACnCE,gBAAgBA;gBAChBI;gBACA4D,eAAe9E,6BAA6BgC,QAAQpB,MAAM,EAAED,WAAWC,MAAM,EAAE;gBAC/E4C,OAAOvD,wBAAwBuD;YACjC;YAEA,MAAMuB,QAAQ,MAAM/C,QAAQgD,EAAE,CAACC,WAAW,CAAgC;gBACxEtE,YAAY2B,iBAAiBvB,IAAI;gBACjC0B;gBACAO,QAAQA;gBACRkC,YAAY;gBACZhE;gBACAkC,MAAMlD,mBAAmB;oBAAEoC;oBAAkBc;gBAAK;gBAClDI,OAAOqB;YACT;YAEAD,OAAOG,MAAMH,IAAI;QACnB,OAAO;YACL,MAAMG,QAAQ,MAAM/C,QAAQgD,EAAE,CAACG,IAAI,CAAC;gBAClCxE,YAAY2B,iBAAiBvB,IAAI;gBACjC0B;gBACAO,QAAQA;gBACRkC,YAAY;gBACZhE;gBACAkC;gBACAI,OAAOW;YACT;YAEAS,OAAOG,MAAMH,IAAI;QACnB;QAEA,MAAMQ,0BACJ,CAAC9C,iBAAiBnB,MAAM,IAAKL,kBAAkBiB,QAAQb,IAAIK,IAAI,IAC3D,MAAM1C,iBAAiB;YACrB8B;YACAC;YACAU,MAAMoC;YACNtB,WAAW;YACXO;YACAzB;YACAmE,oBAAoB;QACtB,KACA;QAEN,MAAMC,SAAwD,EAAE;QAEhE,MAAMC,kBAAkB,OAAOC;YAC7B,MAAM,EAAEC,EAAE,EAAE,GAAGD;YACf,IAAIE;YAEJ,IAAI;gBACF,2EAA2E;gBAC3E,IAAIC,kBAAkB;gBACtB,IAAIzE,IAAIc,OAAO,CAACgD,EAAE,CAACY,+BAA+B,EAAE;oBAClDD,kBAAkB,MAAMpG,gBAAgB2B;gBAC1C;gBAEA,MAAM2E,eAAe3E,IAAIK,IAAI,GAAG;oBAAE,GAAGL,IAAIK,IAAI;gBAAC,IAAIC;gBAClD,IAAIc,iBAAiBnB,MAAM,IAAI,CAACL,kBAAkB+E,cAAcC,cAAc;oBAC5E,MAAMC,YAAYzH,KAAK0H,OAAO,CAACH,aAAaC,YAAY;oBACxDJ,uBAAuBpH,KAAK2H,IAAI,CAC9B3H,KAAK4H,OAAO,CAACL,aAAaC,YAAY,GACtC,GAAGxH,KAAK6H,QAAQ,CAACN,aAAaC,YAAY,EAAEC,WAAW,CAAC,EAAE3H,eAAe2H,WAAW;oBAEtF,MAAM1H,GAAG+H,QAAQ,CAACP,aAAaC,YAAY,EAAEJ;oBAC7CG,aAAaC,YAAY,GAAGJ;gBAC9B;gBAEA,IAAIW,cAAcnF;gBAClB,IAAIoB,iBAAiBnB,MAAM,IAAIiE,4BAA4B,MAAM;oBAC/DiB,cAAc5G,sBAAsByB,KAAK;wBAAC;wBAAQ;qBAAqB;oBACvEmF,YAAY9E,IAAI,GAAGsE;oBACnBQ,YAAYC,kBAAkB,GAAG,CAAC;gBACpC;gBACA,MAAMC,oBACJnB,2BACC,MAAMvG,iBAAiB;oBACtB8B;oBACAC;oBACAU,MAAMtC,4BAA4B0E,gBAAgB8B,gBAAgB;wBAChExC,QACEA,WAAW,SAAS,CAACA,SACjBpC,OAAOqB,YAAY,GACjBrB,OAAOqB,YAAY,CAACuE,aAAa,GACjChF,YACFwB;wBACNyD,qBAAqB3H,6BAA6BwD,iBAAiBoC,eAAe;oBACpF;oBACAtC,WAAW;oBACXsE,aAAalB;oBACb7C;oBACAzB,KAAKmF;oBACLhB,oBAAoB;gBACtB;gBAEF,MAAMpC,SAAStD,eAAe;oBAC5B8E,QAAQnC,iBAAiBoC,eAAe;oBACxCiC,aAAarE,iBAAiBqE,WAAW;oBACzC1D,QAAQC;gBACV;gBAEA,kDAAkD;gBAClD,iDAAiD;gBACjD,kDAAkD;gBAClD,IAAI0D,aAAa,MAAMrG,eAAe;oBACpCkF;oBACApD;oBACAC;oBACA1B;oBACAU,MAAMjB,wBAAwB;wBAC5BO;wBACAU,MAAMiF,kBAAkBjF,IAAI;wBAC5BuF,aAAarB;wBACbf,QAAQnC,iBAAiBmC,MAAM;oBACjC;oBACAlC,OAAOA;oBACPiD;oBACAhD;oBACAO,gBAAgBA;oBAChB+D,eAAeP,kBAAkBQ,KAAK;oBACtC/D,QAAQA;oBACRlC,gBAAgBA;oBAChB4B,cAAcA;oBACdV;oBACAY;oBACAlB;oBACAoB;oBACA5B,KAAKmF;oBACLpD,QAAQA;oBACRE,kBAAkBA;oBAClBxB;gBACF;gBAEA,wCAAwC;gBACxC,+CAA+C;gBAC/C,wCAAwC;gBAExC,IAAIW,iBAAiB0E,IAAI,EAAE;oBACzBJ,aAAa;wBAAE,GAAGA,UAAU;wBAAEjG,YAAY2B,iBAAiBvB,IAAI;oBAAC;gBAClE;gBAEA,IAAI4E,iBAAiB;oBACnB,MAAMvG,kBAAkB8B;gBAC1B;gBAEA,OAAO0F;YACT,EAAE,OAAOK,OAAO;gBACd,MAAMC,WAAWD,iBAAiBE,QAAQ3H,cAAcyH,OAAOrG,UAAU;gBAEzE,IAAIM,IAAIc,OAAO,CAACgD,EAAE,CAACY,+BAA+B,EAAE;oBAClD,MAAMlG,gBAAgBwB;gBACxB;gBACAoE,OAAO8B,IAAI,CAAC;oBACV3B;oBACAyB;oBACAG,SAASJ,iBAAiBE,QAAQF,MAAMI,OAAO,GAAG;gBACpD;YACF,SAAU;gBACR,IAAI3B,sBAAsB;oBACxB,MAAMrH,GAAGiJ,EAAE,CAAC5B,sBAAsB;wBAAE6B,OAAO;oBAAK,GAAGC,KAAK,CAAC,CAACP;wBACxD/F,IAAIc,OAAO,CAACyF,MAAM,CAACR,KAAK,CAAC;4BAAES,KAAKT;4BAAOU,KAAK;wBAAkC;oBAChF;gBACF;YACF;YACA,OAAO;QACT;QAEA,0FAA0F;QAC1F,0FAA0F;QAC1F,2FAA2F;QAC3F,6EAA6E;QAC7E,MAAMC,sBACJ1G,IAAIc,OAAO,CAACgD,EAAE,CAACY,+BAA+B,IAC9C7D,QAAQO,iBAAiBnB,MAAM,IAAI,CAACL,kBAAkBI,IAAIK,IAAI;QAChE,IAAIsG;QACJ,IAAID,qBAAqB;YACvBC,cAAc,EAAE;YAChB,KAAK,MAAMC,OAAOlD,KAAM;gBACtBiD,YAAYT,IAAI,CAAC,MAAM7B,gBAAgBuC;YACzC;QACF,OAAO;YACLD,cAAc,MAAME,QAAQC,GAAG,CAACpD,KAAKqD,GAAG,CAAC1C;QAC3C;QAEA,MAAMrG,gBAAgB;YACpBoD;YACA1B;YACAM;QACF;QAEA,IAAIgH,SAAS;YACXtD,MAAMiD,YAAYM,MAAM,CAACpG;YACzBuD;QACF;QAEA,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExC4C,SAAS,MAAM/H,oBAAoB;YACjCO;YACAC,YAAY2B;YACZF,WAAW;YACXtB;YACA,oFAAoF;YACpFoH;QACF;QAEA,IAAIlH,cAAc;YAChB,MAAM5B,kBAAkB8B;QAC1B;QAEA,oFAAoF;QACpF,OAAOgH;IACT,EAAE,OAAOjB,OAAgB;QACvB,MAAM/H,gBAAgB;YACpBoD,kBAAkB5B,KAAKC,UAAU,CAACC,MAAM;YACxCA,QAAQF,KAAKQ,GAAG,CAACc,OAAO,CAACpB,MAAM;YAC/BM,KAAKR,KAAKQ,GAAG;QACf,GAAGsG,KAAK,CAAC,CAACY;YACR1H,KAAKQ,GAAG,CAACc,OAAO,CAACyF,MAAM,CAACR,KAAK,CAAC;gBAAES,KAAKU;gBAAaT,KAAK;YAA6B;QACtF;QACA,MAAMjI,gBAAgBgB,KAAKQ,GAAG;QAC9B,MAAM+F;IACR;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"updateByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/updateByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAKhD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,8BAA8B,EAC9B,wBAAwB,EAEzB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EAAE,KAAK,cAAc,EAAwB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AA0B5F,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,WAAW,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAElD,eAAO,MAAM,mBAAmB,GAC9B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,6BAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAoSvD,CAAA"}
|
|
@@ -5,12 +5,15 @@ import { combineQueries } from '../../database/combineQueries.js';
|
|
|
5
5
|
import { APIError, Forbidden, NotFound } from '../../errors/index.js';
|
|
6
6
|
import { deepCopyObjectSimple } from '../../index.js';
|
|
7
7
|
import { generateFileData } from '../../uploads/generateFileData.js';
|
|
8
|
+
import { getLocalizedUploadProperties, getUploadDestination, mergeUploadDataWithDocument, sanitizeUploadData } from '../../uploads/sanitizeUploadData.js';
|
|
8
9
|
import { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js';
|
|
9
10
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
10
11
|
import { commitTransaction } from '../../utilities/commitTransaction.js';
|
|
12
|
+
import { hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js';
|
|
11
13
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
12
14
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
13
15
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
16
|
+
import { getAllLocalesPublicationStatus, normalizeAllLocalesPublicationStatus, reconcileAllLocalesPublicationStatus, validateAllLocalesPublicationFlags } from '../../versions/allLocalesPublicationStatus.js';
|
|
14
17
|
import { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js';
|
|
15
18
|
import { buildAfterOperation } from './utilities/buildAfterOperation.js';
|
|
16
19
|
import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
|
|
@@ -19,6 +22,39 @@ export const updateByIDOperation = async (incomingArgs)=>{
|
|
|
19
22
|
let args = incomingArgs;
|
|
20
23
|
try {
|
|
21
24
|
const shouldCommit = !args.disableTransaction && await initTransaction(args.req);
|
|
25
|
+
if (args.collection.config.upload && !args.overrideAccess) {
|
|
26
|
+
const { objectKey, prefix } = getUploadDestination({
|
|
27
|
+
data: args.data,
|
|
28
|
+
file: args.req.file
|
|
29
|
+
});
|
|
30
|
+
const data = sanitizeUploadData(args.data, 'update');
|
|
31
|
+
args = {
|
|
32
|
+
...args,
|
|
33
|
+
data: typeof data === 'object' && data !== null ? {
|
|
34
|
+
...data,
|
|
35
|
+
...prefix !== undefined ? {
|
|
36
|
+
prefix
|
|
37
|
+
} : {},
|
|
38
|
+
...objectKey !== undefined ? {
|
|
39
|
+
_objectKey: objectKey
|
|
40
|
+
} : {}
|
|
41
|
+
} : data
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
validateAllLocalesPublicationFlags({
|
|
45
|
+
publishAllLocales: args.publishAllLocales,
|
|
46
|
+
unpublishAllLocales: args.unpublishAllLocales
|
|
47
|
+
});
|
|
48
|
+
const initialCollectionConfig = args.collection.config;
|
|
49
|
+
const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
|
|
50
|
+
hasLocalizedStatus: Boolean(args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig)),
|
|
51
|
+
publishAllLocales: !args.draft && (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),
|
|
52
|
+
unpublishAllLocales: Boolean(args.unpublishAllLocales)
|
|
53
|
+
});
|
|
54
|
+
const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({
|
|
55
|
+
data: args.data,
|
|
56
|
+
status: initialAllLocalesPublicationStatus
|
|
57
|
+
});
|
|
22
58
|
// /////////////////////////////////////
|
|
23
59
|
// beforeOperation - Collection
|
|
24
60
|
// /////////////////////////////////////
|
|
@@ -31,11 +67,28 @@ export const updateByIDOperation = async (incomingArgs)=>{
|
|
|
31
67
|
if (args.publishSpecificLocale) {
|
|
32
68
|
args.req.locale = args.publishSpecificLocale;
|
|
33
69
|
}
|
|
34
|
-
const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, unpublishAllLocales } = args;
|
|
70
|
+
const { id, autosave = false, collection: { config: collectionConfig }, collection, depth, draft: draftArg = false, overrideAccess, overrideLock, overwriteExistingFiles = false, populate, publishAllLocales: publishAllLocalesArg, publishSpecificLocale, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, unpublishAllLocales: unpublishAllLocalesArg } = args;
|
|
35
71
|
if (!id) {
|
|
36
72
|
throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST);
|
|
37
73
|
}
|
|
38
|
-
|
|
74
|
+
let { data } = args;
|
|
75
|
+
validateAllLocalesPublicationFlags({
|
|
76
|
+
publishAllLocales: publishAllLocalesArg,
|
|
77
|
+
unpublishAllLocales: unpublishAllLocalesArg
|
|
78
|
+
});
|
|
79
|
+
const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({
|
|
80
|
+
hasLocalizedStatus: Boolean(config.localization && hasLocalizeStatusEnabled(collectionConfig)),
|
|
81
|
+
publishAllLocales: !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),
|
|
82
|
+
unpublishAllLocales: Boolean(unpublishAllLocalesArg)
|
|
83
|
+
});
|
|
84
|
+
const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({
|
|
85
|
+
data,
|
|
86
|
+
intent: initialAllLocalesPublicationIntent,
|
|
87
|
+
status: requestedAllLocalesPublicationStatus
|
|
88
|
+
});
|
|
89
|
+
const publicationIntentSurvivedBeforeOperation = !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus);
|
|
90
|
+
const publishAllLocales = publicationIntentSurvivedBeforeOperation ? publishAllLocalesArg : false;
|
|
91
|
+
const unpublishAllLocales = publicationIntentSurvivedBeforeOperation ? unpublishAllLocalesArg : false;
|
|
39
92
|
// /////////////////////////////////////
|
|
40
93
|
// Access
|
|
41
94
|
// /////////////////////////////////////
|
|
@@ -92,6 +145,12 @@ export const updateByIDOperation = async (incomingArgs)=>{
|
|
|
92
145
|
if (!docWithLocales) {
|
|
93
146
|
throw new NotFound(req.t);
|
|
94
147
|
}
|
|
148
|
+
if (collectionConfig.upload && !overrideAccess) {
|
|
149
|
+
data = mergeUploadDataWithDocument(data, docWithLocales, {
|
|
150
|
+
locale: locale === 'all' || !locale ? config.localization ? config.localization.defaultLocale : undefined : locale,
|
|
151
|
+
localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields)
|
|
152
|
+
});
|
|
153
|
+
}
|
|
95
154
|
// /////////////////////////////////////
|
|
96
155
|
// Generate data for all files and sizes
|
|
97
156
|
// /////////////////////////////////////
|
|
@@ -100,6 +159,7 @@ export const updateByIDOperation = async (incomingArgs)=>{
|
|
|
100
159
|
config,
|
|
101
160
|
data,
|
|
102
161
|
operation: 'update',
|
|
162
|
+
originalDoc: docWithLocales,
|
|
103
163
|
overwriteExistingFiles,
|
|
104
164
|
req,
|
|
105
165
|
throwOnMissingFile: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/updateByID.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { FindOneArgs } from '../../database/types.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateByIDOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug> = SelectType,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n id,\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n unpublishAllLocales,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST)\n }\n\n const { data } = args\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, data, req }, collectionConfig.access.update)\n : true\n const hasWherePolicy = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResults)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof data === 'object' &&\n data !== null &&\n 'deletedAt' in data &&\n data.deletedAt != null\n\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { id, data, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: fullWhere,\n }\n\n const docWithLocales = await getLatestCollectionVersion<\n RequiredDataFromCollectionSlug<TSlug> & TypeWithID\n >({\n id,\n config: collectionConfig,\n payload,\n query: findOneArgs,\n req,\n })\n\n if (!docWithLocales && !hasWherePolicy) {\n throw new NotFound(req.t)\n }\n if (!docWithLocales && hasWherePolicy) {\n throw new Forbidden(req.t)\n }\n if (!docWithLocales) {\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data,\n operation: 'update',\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n\n let result = await updateDocument<TSlug, TSelect>({\n id,\n autosave,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(newFileData),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = (await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'updateByID',\n overrideAccess,\n result,\n })) as TransformCollectionWithSelect<TSlug, TSelect>\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","hasWhereAccessResult","combineQueries","APIError","Forbidden","NotFound","deepCopyObjectSimple","generateFileData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","initTransaction","killTransaction","sanitizeSelect","getLatestCollectionVersion","buildAfterOperation","buildBeforeOperation","updateDocument","updateByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","publishSpecificLocale","locale","id","autosave","collectionConfig","depth","draft","draftArg","overrideLock","overwriteExistingFiles","populate","publishAllLocales","fallbackLocale","payload","select","incomingSelect","showHiddenFields","trash","unpublishAllLocales","BAD_REQUEST","data","accessResults","access","update","hasWherePolicy","where","equals","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","findOneArgs","slug","docWithLocales","query","t","newFileData","files","filesToUpload","throwOnMissingFile","fields","flattenedFields","forceSelect","result","auth","error","catch","unlinkError","logger","err","msg"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/updateByID.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport { status as httpStatus } from 'http-status'\n\nimport type { FindOneArgs } from '../../database/types.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { type CollectionSlug, deepCopyObjectSimple, type FindOptions } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport {\n getLocalizedUploadProperties,\n getUploadDestination,\n mergeUploadDataWithDocument,\n sanitizeUploadData,\n} from '../../uploads/sanitizeUploadData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasLocalizeStatusEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport {\n getAllLocalesPublicationStatus,\n normalizeAllLocalesPublicationStatus,\n reconcileAllLocalesPublicationStatus,\n validateAllLocalesPublicationFlags,\n} from '../../versions/allLocalesPublicationStatus.js'\nimport { getLatestCollectionVersion } from '../../versions/getLatestCollectionVersion.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { updateDocument } from './utilities/update.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: DeepPartial<RequiredDataFromCollectionSlug<TSlug>>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n unpublishAllLocales?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const updateByIDOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug> = SelectType,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n if (args.collection.config.upload && !args.overrideAccess) {\n const { objectKey, prefix } = getUploadDestination({ data: args.data, file: args.req.file })\n const data = sanitizeUploadData(args.data, 'update')\n\n args = {\n ...args,\n data:\n typeof data === 'object' && data !== null\n ? {\n ...data,\n ...(prefix !== undefined ? { prefix } : {}),\n ...(objectKey !== undefined ? { _objectKey: objectKey } : {}),\n }\n : data,\n }\n }\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: args.publishAllLocales,\n unpublishAllLocales: args.unpublishAllLocales,\n })\n\n const initialCollectionConfig = args.collection.config\n const initialAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n args.req.payload.config.localization && hasLocalizeStatusEnabled(initialCollectionConfig),\n ),\n publishAllLocales:\n !args.draft &&\n (args.publishAllLocales ?? !hasLocalizeStatusEnabled(initialCollectionConfig)),\n unpublishAllLocales: Boolean(args.unpublishAllLocales),\n })\n\n const initialAllLocalesPublicationIntent = normalizeAllLocalesPublicationStatus({\n data: args.data,\n status: initialAllLocalesPublicationStatus,\n })\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'update',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n id,\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n draft: draftArg = false,\n overrideAccess,\n overrideLock,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n unpublishAllLocales: unpublishAllLocalesArg,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of document to update.', httpStatus.BAD_REQUEST)\n }\n\n let { data } = args\n\n validateAllLocalesPublicationFlags({\n publishAllLocales: publishAllLocalesArg,\n unpublishAllLocales: unpublishAllLocalesArg,\n })\n\n const requestedAllLocalesPublicationStatus = getAllLocalesPublicationStatus({\n hasLocalizedStatus: Boolean(\n config.localization && hasLocalizeStatusEnabled(collectionConfig),\n ),\n publishAllLocales:\n !draftArg && (publishAllLocalesArg ?? !hasLocalizeStatusEnabled(collectionConfig)),\n unpublishAllLocales: Boolean(unpublishAllLocalesArg),\n })\n const allLocalesPublicationStatus = reconcileAllLocalesPublicationStatus({\n data,\n intent: initialAllLocalesPublicationIntent,\n status: requestedAllLocalesPublicationStatus,\n })\n const publicationIntentSurvivedBeforeOperation =\n !requestedAllLocalesPublicationStatus || Boolean(allLocalesPublicationStatus)\n const publishAllLocales = publicationIntentSurvivedBeforeOperation\n ? publishAllLocalesArg\n : false\n const unpublishAllLocales = publicationIntentSurvivedBeforeOperation\n ? unpublishAllLocalesArg\n : false\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, data, req }, collectionConfig.access.update)\n : true\n const hasWherePolicy = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResults)\n\n const isTrashAttempt =\n collectionConfig.trash &&\n typeof data === 'object' &&\n data !== null &&\n 'deletedAt' in data &&\n data.deletedAt != null\n\n if (isTrashAttempt && !overrideAccess) {\n // Pass data so access function can check data.deletedAt to know it's a trash attempt\n const deleteAccessResult = await executeAccess(\n { id, data, req },\n collectionConfig.access.delete,\n )\n fullWhere = combineQueries(fullWhere, deleteAccessResult)\n }\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n where: fullWhere,\n }\n\n const docWithLocales = await getLatestCollectionVersion<\n RequiredDataFromCollectionSlug<TSlug> & TypeWithID\n >({\n id,\n config: collectionConfig,\n payload,\n query: findOneArgs,\n req,\n })\n\n if (!docWithLocales && !hasWherePolicy) {\n throw new NotFound(req.t)\n }\n if (!docWithLocales && hasWherePolicy) {\n throw new Forbidden(req.t)\n }\n if (!docWithLocales) {\n throw new NotFound(req.t)\n }\n\n if (collectionConfig.upload && !overrideAccess) {\n data = mergeUploadDataWithDocument(data, docWithLocales, {\n locale:\n locale === 'all' || !locale\n ? config.localization\n ? config.localization.defaultLocale\n : undefined\n : locale,\n localizedProperties: getLocalizedUploadProperties(collectionConfig.flattenedFields),\n })\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data,\n operation: 'update',\n originalDoc: docWithLocales,\n overwriteExistingFiles,\n req,\n throwOnMissingFile: false,\n })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // ///////////////////////////////////////////////\n // Update document, runs all document level hooks\n // ///////////////////////////////////////////////\n\n let result = await updateDocument<TSlug, TSelect>({\n id,\n autosave,\n collectionConfig,\n config,\n data: deepCopyObjectSimple(newFileData),\n depth: depth!,\n docWithLocales,\n draftArg,\n fallbackLocale: fallbackLocale!,\n filesToUpload,\n locale: locale!,\n overrideAccess: overrideAccess!,\n overrideLock: overrideLock!,\n payload,\n populate,\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: select!,\n showHiddenFields: showHiddenFields!,\n unpublishAllLocales,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n await unlinkTempFiles({\n collectionConfig,\n config,\n req,\n })\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = (await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'updateByID',\n overrideAccess,\n result,\n })) as TransformCollectionWithSelect<TSlug, TSelect>\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await unlinkTempFiles({\n collectionConfig: args.collection.config,\n config: args.req.payload.config,\n req: args.req,\n }).catch((unlinkError) => {\n args.req.payload.logger.error({ err: unlinkError, msg: 'Failed to remove temp file' })\n })\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","hasWhereAccessResult","combineQueries","APIError","Forbidden","NotFound","deepCopyObjectSimple","generateFileData","getLocalizedUploadProperties","getUploadDestination","mergeUploadDataWithDocument","sanitizeUploadData","unlinkTempFiles","appendNonTrashedFilter","commitTransaction","hasLocalizeStatusEnabled","initTransaction","killTransaction","sanitizeSelect","getAllLocalesPublicationStatus","normalizeAllLocalesPublicationStatus","reconcileAllLocalesPublicationStatus","validateAllLocalesPublicationFlags","getLatestCollectionVersion","buildAfterOperation","buildBeforeOperation","updateDocument","updateByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","upload","overrideAccess","objectKey","prefix","data","file","undefined","_objectKey","publishAllLocales","unpublishAllLocales","initialCollectionConfig","initialAllLocalesPublicationStatus","hasLocalizedStatus","Boolean","payload","localization","draft","initialAllLocalesPublicationIntent","operation","publishSpecificLocale","locale","id","autosave","collectionConfig","depth","draftArg","overrideLock","overwriteExistingFiles","populate","publishAllLocalesArg","fallbackLocale","select","incomingSelect","showHiddenFields","trash","unpublishAllLocalesArg","BAD_REQUEST","requestedAllLocalesPublicationStatus","allLocalesPublicationStatus","intent","publicationIntentSurvivedBeforeOperation","accessResults","access","update","hasWherePolicy","where","equals","fullWhere","isTrashAttempt","deletedAt","deleteAccessResult","delete","enableTrash","findOneArgs","slug","docWithLocales","query","t","defaultLocale","localizedProperties","flattenedFields","newFileData","files","filesToUpload","originalDoc","throwOnMissingFile","fields","forceSelect","result","auth","error","catch","unlinkError","logger","err","msg"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/utilities/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,UAAU,EACX,MAAM,uBAAuB,CAAA;AA0B9B,MAAM,MAAM,wBAAwB,CAAC,KAAK,SAAS,cAAc,IAAI;IACnE,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,WAAW,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,UAAU,GAAG,UAAU,CAAA;IACvC,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,mBAAmB,CAAA;IACnC,aAAa,EAAE,UAAU,EAAE,CAAA;IAC3B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,EAAE,UAAU,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,uUAuB9C,wBAAwB,CAAC,KAAK,CAAC,KAAG,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CA8bzF,CAAA"}
|