payload 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ee5d8bd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/adapters/router.d.ts +1 -1
- package/dist/admin/adapters/router.d.ts.map +1 -1
- package/dist/admin/adapters/router.js.map +1 -1
- package/dist/admin/forms/Diff.d.ts +0 -4
- package/dist/admin/forms/Diff.d.ts.map +1 -1
- package/dist/admin/forms/Diff.js.map +1 -1
- package/dist/admin/forms/Form.d.ts +0 -2
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/initAdminContext.d.ts.map +1 -1
- package/dist/admin/initAdminContext.js +0 -10
- package/dist/admin/initAdminContext.js.map +1 -1
- package/dist/auth/createAuthToken.d.ts +26 -0
- package/dist/auth/createAuthToken.d.ts.map +1 -0
- package/dist/auth/createAuthToken.js +39 -0
- package/dist/auth/createAuthToken.js.map +1 -0
- package/dist/auth/endpoints/refresh.d.ts.map +1 -1
- package/dist/auth/endpoints/refresh.js +2 -1
- package/dist/auth/endpoints/refresh.js.map +1 -1
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/loginWithCookie.d.ts.map +1 -1
- package/dist/auth/loginWithCookie.js +1 -0
- package/dist/auth/loginWithCookie.js.map +1 -1
- package/dist/auth/operations/local/login.d.ts.map +1 -1
- package/dist/auth/operations/local/login.js +1 -0
- package/dist/auth/operations/local/login.js.map +1 -1
- package/dist/auth/operations/login.d.ts +2 -0
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +6 -19
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts +8 -0
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +50 -19
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +54 -20
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/refreshAuthToken.d.ts +32 -0
- package/dist/auth/refreshAuthToken.d.ts.map +1 -0
- package/dist/auth/refreshAuthToken.js +113 -0
- package/dist/auth/refreshAuthToken.js.map +1 -0
- package/dist/auth/serverFunctions/cookies.js.map +1 -1
- package/dist/auth/serverFunctions/login.js.map +1 -1
- package/dist/auth/sessions.d.ts +9 -2
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/sessions.js +6 -5
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/types.d.ts +25 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/cli/commands/data/utilities.d.ts +1 -1
- package/dist/cli/commands/data/utilities.d.ts.map +1 -1
- package/dist/cli/commands/data/utilities.js.map +1 -1
- package/dist/cli/defineCLICommand.js +1 -1
- package/dist/cli/defineCLICommand.js.map +1 -1
- package/dist/collections/config/client.d.ts +1 -1
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +0 -1
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts +2 -0
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +4 -0
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +3 -0
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.js +0 -9
- package/dist/collections/config/sanitizeCompoundIndexes.js.map +1 -1
- package/dist/collections/config/types.d.ts +4 -21
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/dataloader.d.ts +1 -10
- package/dist/collections/dataloader.d.ts.map +1 -1
- package/dist/collections/dataloader.js +6 -14
- package/dist/collections/dataloader.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +0 -13
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +121 -638
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js +32 -238
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +0 -6
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/findDistinct.js +6 -7
- package/dist/collections/operations/findDistinct.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +7 -0
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.js +5 -0
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/local/count.d.ts +4 -9
- package/dist/collections/operations/local/count.d.ts.map +1 -1
- package/dist/collections/operations/local/count.js.map +1 -1
- package/dist/collections/operations/local/countVersions.d.ts +0 -4
- package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/countVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +4 -9
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +4 -9
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +0 -5
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.d.ts +4 -9
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.d.ts +4 -9
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findDistinct.d.ts +0 -5
- package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/local/findDistinct.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +0 -5
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.d.ts +0 -5
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/restoreVersion.d.ts +0 -5
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +4 -9
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/renameFile.js +1 -1
- package/dist/collections/operations/renameFile.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +76 -157
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +171 -357
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +0 -15
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +60 -265
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -1
- package/dist/collections/operations/utilities/buildBeforeOperation.js +0 -7
- package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -1
- package/dist/collections/operations/utilities/update.d.ts +1 -14
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +20 -92
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/collections/operations/validate.js +4 -4
- package/dist/collections/operations/validate.js.map +1 -1
- package/dist/config/client.d.ts +1 -3
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +1 -9
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/definePlugin.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +2 -40
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +13 -21
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/defaultCopy.d.ts.map +1 -1
- package/dist/database/defaultCopy.js +0 -1
- package/dist/database/defaultCopy.js.map +1 -1
- package/dist/database/types.d.ts +4 -75
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/exports/build-config.d.ts +9 -0
- package/dist/exports/build-config.d.ts.map +1 -0
- package/dist/exports/build-config.js +38 -0
- package/dist/exports/build-config.js.map +1 -0
- package/dist/exports/shared.d.ts +0 -2
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +0 -2
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/authorship/index.d.ts +1 -2
- package/dist/fields/baseFields/authorship/index.d.ts.map +1 -1
- package/dist/fields/baseFields/authorship/index.js +0 -12
- package/dist/fields/baseFields/authorship/index.js.map +1 -1
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
- package/dist/fields/config/reservedFieldNames.js.map +1 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts +0 -8
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.js +2 -6
- package/dist/fields/hooks/afterRead/index.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +1 -3
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +17 -41
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +0 -2
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +1 -3
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +2 -4
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js +0 -3
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
- package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +96 -22
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +0 -8
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +4 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/types.d.ts +2 -6
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
- package/dist/globals/operations/countGlobalVersions.js +0 -7
- package/dist/globals/operations/countGlobalVersions.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +0 -7
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.js +6 -6
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.js +4 -6
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/local/countVersions.d.ts +0 -5
- package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/countVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +0 -5
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +0 -5
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.d.ts +0 -5
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.d.ts +0 -5
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +0 -5
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +18 -61
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/restoreVersion.d.ts +2 -3
- package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/restoreVersion.js +24 -61
- package/dist/globals/operations/restoreVersion.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +8 -86
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/globals/operations/validate.js +1 -1
- package/dist/globals/operations/validate.js.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.js +32 -21
- package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
- package/dist/hierarchy/createFolderField.js.map +1 -1
- package/dist/hierarchy/getInitialTreeData.d.ts +1 -3
- package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
- package/dist/hierarchy/getInitialTreeData.js +1 -4
- package/dist/hierarchy/getInitialTreeData.js.map +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.js +9 -3
- package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
- package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
- package/dist/hierarchy/utils/computePaths.js.map +1 -1
- package/dist/index.bundled.d.ts +4336 -5501
- package/dist/index.d.ts +27 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -37
- package/dist/index.js.map +1 -1
- package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -1
- package/dist/llm-instructions/getInstructionsCollection.js +2 -0
- package/dist/llm-instructions/getInstructionsCollection.js.map +1 -1
- package/dist/preferences/keys.d.ts +4 -11
- package/dist/preferences/keys.d.ts.map +1 -1
- package/dist/preferences/keys.js +3 -10
- package/dist/preferences/keys.js.map +1 -1
- package/dist/preferences/types.d.ts +0 -19
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js +29 -108
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFile.js +0 -5
- package/dist/uploads/endpoints/getFile.js.map +1 -1
- package/dist/uploads/fileExists.d.ts.map +1 -1
- package/dist/uploads/fileExists.js +2 -5
- package/dist/uploads/fileExists.js.map +1 -1
- package/dist/uploads/fileVersioning/archive.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/archive.js +1 -15
- package/dist/uploads/fileVersioning/archive.js.map +1 -1
- package/dist/uploads/fileVersioning/cleanup.d.ts +0 -7
- package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/cleanup.js +0 -12
- package/dist/uploads/fileVersioning/cleanup.js.map +1 -1
- package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/cloudStorage.js +1 -16
- package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -1
- package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -1
- package/dist/uploads/formatFilesize.js +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts +0 -5
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +2 -74
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +29 -46
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getFileContentRequirement.js.map +1 -1
- package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
- package/dist/uploads/getSafeFilename.d.ts.map +1 -1
- package/dist/uploads/getSafeFilename.js +3 -5
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/uploads/safeFetch.js.map +1 -1
- package/dist/uploads/stagedUpload.js.map +1 -1
- package/dist/uploads/transformers/handleDynamicFileRequest.js +11 -2
- package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -1
- package/dist/uploads/types.d.ts +0 -11
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/uploadFiles.d.ts +1 -4
- package/dist/uploads/uploadFiles.d.ts.map +1 -1
- package/dist/uploads/uploadFiles.js +5 -29
- package/dist/uploads/uploadFiles.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
- package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -1
- package/dist/utilities/assertNoValidationWrite.js +0 -4
- package/dist/utilities/assertNoValidationWrite.js.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.d.ts +6 -15
- package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.js +11 -44
- package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
- package/dist/utilities/cloneValidationRequest.js.map +1 -1
- package/dist/utilities/commitTransaction.d.ts +0 -4
- package/dist/utilities/commitTransaction.d.ts.map +1 -1
- package/dist/utilities/commitTransaction.js +1 -41
- package/dist/utilities/commitTransaction.js.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +2 -18
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts +0 -5
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +3 -50
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +12 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.js +9 -5
- package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -1
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/documentMatchingWhereExists.js +1 -1
- package/dist/utilities/documentMatchingWhereExists.js.map +1 -1
- package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -1
- package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -1
- package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js +1 -0
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
- package/dist/utilities/getVersionsConfig.d.ts +4 -0
- package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
- package/dist/utilities/getVersionsConfig.js +5 -0
- package/dist/utilities/getVersionsConfig.js.map +1 -1
- package/dist/utilities/handleEndpoints.d.ts.map +1 -1
- package/dist/utilities/handleEndpoints.js +10 -9
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/httpStatus.d.ts +0 -2
- package/dist/utilities/httpStatus.d.ts.map +1 -1
- package/dist/utilities/httpStatus.js +1 -3
- package/dist/utilities/httpStatus.js.map +1 -1
- package/dist/utilities/initTransaction.d.ts.map +1 -1
- package/dist/utilities/initTransaction.js +7 -35
- package/dist/utilities/initTransaction.js.map +1 -1
- package/dist/utilities/killTransaction.d.ts.map +1 -1
- package/dist/utilities/killTransaction.js +0 -27
- package/dist/utilities/killTransaction.js.map +1 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseValidationLocale.js.map +1 -1
- package/dist/utilities/sanitizePopulateParam.js.map +1 -1
- package/dist/utilities/telemetry/conf/index.d.ts +4 -1
- package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -1
- package/dist/versions/allLocalesPublicationStatus.js.map +1 -1
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +0 -23
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +0 -14
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
- package/dist/versions/buildVersionCompoundIndexes.js +2 -8
- package/dist/versions/buildVersionCompoundIndexes.js.map +1 -1
- package/dist/versions/deleteCollectionVersions.d.ts +1 -2
- package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
- package/dist/versions/deleteCollectionVersions.js +8 -37
- package/dist/versions/deleteCollectionVersions.js.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.js +0 -4
- package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js +1 -9
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -8
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/enforceMaxVersions.d.ts +0 -1
- package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
- package/dist/versions/enforceMaxVersions.js +6 -22
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +2 -10
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts +2 -6
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +21 -65
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -1
- package/dist/versions/saveVersion.d.ts +0 -7
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +4 -27
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/updateLatestVersion.d.ts +0 -1
- package/dist/versions/updateLatestVersion.d.ts.map +1 -1
- package/dist/versions/updateLatestVersion.js +7 -24
- package/dist/versions/updateLatestVersion.js.map +1 -1
- package/package.json +30 -28
- package/skills/payload/reference/ENDPOINTS.md +3 -9
- package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +4 -4
- package/dist/admin/getAdminPreferences.d.ts +0 -10
- package/dist/admin/getAdminPreferences.d.ts.map +0 -1
- package/dist/admin/getAdminPreferences.js +0 -53
- package/dist/admin/getAdminPreferences.js.map +0 -1
- package/dist/admin/getRequestBranch.d.ts +0 -6
- package/dist/admin/getRequestBranch.d.ts.map +0 -1
- package/dist/admin/getRequestBranch.js +0 -17
- package/dist/admin/getRequestBranch.js.map +0 -1
- package/dist/branching/appendBranchFilter.d.ts +0 -30
- package/dist/branching/appendBranchFilter.d.ts.map +0 -1
- package/dist/branching/appendBranchFilter.js +0 -105
- package/dist/branching/appendBranchFilter.js.map +0 -1
- package/dist/branching/assertBranchAccess.d.ts +0 -10
- package/dist/branching/assertBranchAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchAccess.js +0 -36
- package/dist/branching/assertBranchAccess.js.map +0 -1
- package/dist/branching/assertBranchActionAccess.d.ts +0 -10
- package/dist/branching/assertBranchActionAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchActionAccess.js +0 -15
- package/dist/branching/assertBranchActionAccess.js.map +0 -1
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts +0 -53
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts.map +0 -1
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js +0 -833
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js.map +0 -1
- package/dist/branching/assertBranchReadable.d.ts +0 -36
- package/dist/branching/assertBranchReadable.d.ts.map +0 -1
- package/dist/branching/assertBranchReadable.js +0 -83
- package/dist/branching/assertBranchReadable.js.map +0 -1
- package/dist/branching/assertBranchUpdateAccess.d.ts +0 -8
- package/dist/branching/assertBranchUpdateAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchUpdateAccess.js +0 -12
- package/dist/branching/assertBranchUpdateAccess.js.map +0 -1
- package/dist/branching/assertBranchWritable.d.ts +0 -18
- package/dist/branching/assertBranchWritable.d.ts.map +0 -1
- package/dist/branching/assertBranchWritable.js +0 -46
- package/dist/branching/assertBranchWritable.js.map +0 -1
- package/dist/branching/branchIDs.d.ts +0 -38
- package/dist/branching/branchIDs.d.ts.map +0 -1
- package/dist/branching/branchIDs.js +0 -113
- package/dist/branching/branchIDs.js.map +0 -1
- package/dist/branching/branchSelect.d.ts +0 -42
- package/dist/branching/branchSelect.d.ts.map +0 -1
- package/dist/branching/branchSelect.js +0 -97
- package/dist/branching/branchSelect.js.map +0 -1
- package/dist/branching/checkFieldAccess.d.ts +0 -21
- package/dist/branching/checkFieldAccess.d.ts.map +0 -1
- package/dist/branching/checkFieldAccess.js +0 -238
- package/dist/branching/checkFieldAccess.js.map +0 -1
- package/dist/branching/collections.d.ts +0 -14
- package/dist/branching/collections.d.ts.map +0 -1
- package/dist/branching/collections.js +0 -713
- package/dist/branching/collections.js.map +0 -1
- package/dist/branching/combineBranchAccess.d.ts +0 -6
- package/dist/branching/combineBranchAccess.d.ts.map +0 -1
- package/dist/branching/combineBranchAccess.js +0 -22
- package/dist/branching/combineBranchAccess.js.map +0 -1
- package/dist/branching/copyUploadFilesToBranch.d.ts +0 -9
- package/dist/branching/copyUploadFilesToBranch.d.ts.map +0 -1
- package/dist/branching/copyUploadFilesToBranch.js +0 -126
- package/dist/branching/copyUploadFilesToBranch.js.map +0 -1
- package/dist/branching/createShadowRow.d.ts +0 -70
- package/dist/branching/createShadowRow.d.ts.map +0 -1
- package/dist/branching/createShadowRow.js +0 -296
- package/dist/branching/createShadowRow.js.map +0 -1
- package/dist/branching/discard.d.ts +0 -52
- package/dist/branching/discard.d.ts.map +0 -1
- package/dist/branching/discard.js +0 -428
- package/dist/branching/discard.js.map +0 -1
- package/dist/branching/effectiveOperations.d.ts +0 -55
- package/dist/branching/effectiveOperations.d.ts.map +0 -1
- package/dist/branching/effectiveOperations.js +0 -472
- package/dist/branching/effectiveOperations.js.map +0 -1
- package/dist/branching/endpoints/discard.d.ts +0 -15
- package/dist/branching/endpoints/discard.d.ts.map +0 -1
- package/dist/branching/endpoints/discard.js +0 -55
- package/dist/branching/endpoints/discard.js.map +0 -1
- package/dist/branching/endpoints/merge.d.ts +0 -34
- package/dist/branching/endpoints/merge.d.ts.map +0 -1
- package/dist/branching/endpoints/merge.js +0 -119
- package/dist/branching/endpoints/merge.js.map +0 -1
- package/dist/branching/forkDocument.d.ts +0 -20
- package/dist/branching/forkDocument.d.ts.map +0 -1
- package/dist/branching/forkDocument.js +0 -169
- package/dist/branching/forkDocument.js.map +0 -1
- package/dist/branching/globalMergeWrites.d.ts +0 -21
- package/dist/branching/globalMergeWrites.d.ts.map +0 -1
- package/dist/branching/globalMergeWrites.js +0 -146
- package/dist/branching/globalMergeWrites.js.map +0 -1
- package/dist/branching/globals.d.ts +0 -49
- package/dist/branching/globals.d.ts.map +0 -1
- package/dist/branching/globals.js +0 -197
- package/dist/branching/globals.js.map +0 -1
- package/dist/branching/hooks.d.ts +0 -24
- package/dist/branching/hooks.d.ts.map +0 -1
- package/dist/branching/hooks.js +0 -92
- package/dist/branching/hooks.js.map +0 -1
- package/dist/branching/injectBranchFields.d.ts +0 -40
- package/dist/branching/injectBranchFields.d.ts.map +0 -1
- package/dist/branching/injectBranchFields.js +0 -229
- package/dist/branching/injectBranchFields.js.map +0 -1
- package/dist/branching/merge/applyMergeChange.d.ts +0 -27
- package/dist/branching/merge/applyMergeChange.d.ts.map +0 -1
- package/dist/branching/merge/applyMergeChange.js +0 -853
- package/dist/branching/merge/applyMergeChange.js.map +0 -1
- package/dist/branching/merge/branchMergeStatus.d.ts +0 -12
- package/dist/branching/merge/branchMergeStatus.d.ts.map +0 -1
- package/dist/branching/merge/branchMergeStatus.js +0 -74
- package/dist/branching/merge/branchMergeStatus.js.map +0 -1
- package/dist/branching/merge/executeMerge.d.ts +0 -22
- package/dist/branching/merge/executeMerge.d.ts.map +0 -1
- package/dist/branching/merge/executeMerge.js +0 -600
- package/dist/branching/merge/executeMerge.js.map +0 -1
- package/dist/branching/merge/finalizeMerge.d.ts +0 -40
- package/dist/branching/merge/finalizeMerge.d.ts.map +0 -1
- package/dist/branching/merge/finalizeMerge.js +0 -237
- package/dist/branching/merge/finalizeMerge.js.map +0 -1
- package/dist/branching/merge/mergeLedger.d.ts +0 -40
- package/dist/branching/merge/mergeLedger.d.ts.map +0 -1
- package/dist/branching/merge/mergeLedger.js +0 -130
- package/dist/branching/merge/mergeLedger.js.map +0 -1
- package/dist/branching/merge/prepareMerge.d.ts +0 -41
- package/dist/branching/merge/prepareMerge.d.ts.map +0 -1
- package/dist/branching/merge/prepareMerge.js +0 -234
- package/dist/branching/merge/prepareMerge.js.map +0 -1
- package/dist/branching/merge/recoverMerge.d.ts +0 -16
- package/dist/branching/merge/recoverMerge.d.ts.map +0 -1
- package/dist/branching/merge/recoverMerge.js +0 -199
- package/dist/branching/merge/recoverMerge.js.map +0 -1
- package/dist/branching/merge/retryFailedCleanups.d.ts +0 -36
- package/dist/branching/merge/retryFailedCleanups.d.ts.map +0 -1
- package/dist/branching/merge/retryFailedCleanups.js +0 -335
- package/dist/branching/merge/retryFailedCleanups.js.map +0 -1
- package/dist/branching/merge/utilities.d.ts +0 -35
- package/dist/branching/merge/utilities.d.ts.map +0 -1
- package/dist/branching/merge/utilities.js +0 -54
- package/dist/branching/merge/utilities.js.map +0 -1
- package/dist/branching/merge.d.ts +0 -88
- package/dist/branching/merge.d.ts.map +0 -1
- package/dist/branching/merge.js +0 -163
- package/dist/branching/merge.js.map +0 -1
- package/dist/branching/mergeWriteGuard.d.ts +0 -20
- package/dist/branching/mergeWriteGuard.d.ts.map +0 -1
- package/dist/branching/mergeWriteGuard.js +0 -27
- package/dist/branching/mergeWriteGuard.js.map +0 -1
- package/dist/branching/preflight.d.ts +0 -71
- package/dist/branching/preflight.d.ts.map +0 -1
- package/dist/branching/preflight.js +0 -757
- package/dist/branching/preflight.js.map +0 -1
- package/dist/branching/readLocalizedBranchWrite.d.ts +0 -14
- package/dist/branching/readLocalizedBranchWrite.d.ts.map +0 -1
- package/dist/branching/readLocalizedBranchWrite.js +0 -90
- package/dist/branching/readLocalizedBranchWrite.js.map +0 -1
- package/dist/branching/readMergeSnapshot.d.ts +0 -18
- package/dist/branching/readMergeSnapshot.d.ts.map +0 -1
- package/dist/branching/readMergeSnapshot.js +0 -99
- package/dist/branching/readMergeSnapshot.js.map +0 -1
- package/dist/branching/resolveBranch.d.ts +0 -153
- package/dist/branching/resolveBranch.d.ts.map +0 -1
- package/dist/branching/resolveBranch.js +0 -363
- package/dist/branching/resolveBranch.js.map +0 -1
- package/dist/branching/resolveBranchActionAccess.d.ts +0 -8
- package/dist/branching/resolveBranchActionAccess.d.ts.map +0 -1
- package/dist/branching/resolveBranchActionAccess.js +0 -9
- package/dist/branching/resolveBranchActionAccess.js.map +0 -1
- package/dist/branching/resolveBranchQuery.d.ts +0 -48
- package/dist/branching/resolveBranchQuery.d.ts.map +0 -1
- package/dist/branching/resolveBranchQuery.js +0 -115
- package/dist/branching/resolveBranchQuery.js.map +0 -1
- package/dist/branching/resolveBranchRowID.d.ts +0 -22
- package/dist/branching/resolveBranchRowID.d.ts.map +0 -1
- package/dist/branching/resolveBranchRowID.js +0 -70
- package/dist/branching/resolveBranchRowID.js.map +0 -1
- package/dist/branching/sanitizeBranchingConfig.d.ts +0 -31
- package/dist/branching/sanitizeBranchingConfig.d.ts.map +0 -1
- package/dist/branching/sanitizeBranchingConfig.js +0 -110
- package/dist/branching/sanitizeBranchingConfig.js.map +0 -1
- package/dist/branching/schedule/job.d.ts +0 -51
- package/dist/branching/schedule/job.d.ts.map +0 -1
- package/dist/branching/schedule/job.js +0 -151
- package/dist/branching/schedule/job.js.map +0 -1
- package/dist/branching/selectBranchChanges.d.ts +0 -8
- package/dist/branching/selectBranchChanges.d.ts.map +0 -1
- package/dist/branching/selectBranchChanges.js +0 -9
- package/dist/branching/selectBranchChanges.js.map +0 -1
- package/dist/branching/stripBranchMergeData.d.ts +0 -11
- package/dist/branching/stripBranchMergeData.d.ts.map +0 -1
- package/dist/branching/stripBranchMergeData.js +0 -20
- package/dist/branching/stripBranchMergeData.js.map +0 -1
- package/dist/branching/tombstone.d.ts +0 -91
- package/dist/branching/tombstone.d.ts.map +0 -1
- package/dist/branching/tombstone.js +0 -546
- package/dist/branching/tombstone.js.map +0 -1
- package/dist/branching/types.d.ts +0 -158
- package/dist/branching/types.d.ts.map +0 -1
- package/dist/branching/types.js +0 -54
- package/dist/branching/types.js.map +0 -1
- package/dist/branching/validation.d.ts +0 -47
- package/dist/branching/validation.d.ts.map +0 -1
- package/dist/branching/validation.js +0 -272
- package/dist/branching/validation.js.map +0 -1
- package/dist/branching/versions.d.ts +0 -131
- package/dist/branching/versions.d.ts.map +0 -1
- package/dist/branching/versions.js +0 -572
- package/dist/branching/versions.js.map +0 -1
- package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts +0 -23
- package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts.map +0 -1
- package/dist/collections/operations/utilities/createOperationRetryRequest.js +0 -683
- package/dist/collections/operations/utilities/createOperationRetryRequest.js.map +0 -1
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts +0 -3
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts.map +0 -1
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js +0 -3
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js.map +0 -1
- package/dist/uploads/appendBranchToFileURL.d.ts +0 -6
- package/dist/uploads/appendBranchToFileURL.d.ts.map +0 -1
- package/dist/uploads/appendBranchToFileURL.js +0 -24
- package/dist/uploads/appendBranchToFileURL.js.map +0 -1
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts +0 -15
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts.map +0 -1
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.js +0 -62
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.js.map +0 -1
- package/dist/uploads/fileIdentity.d.ts +0 -24
- package/dist/uploads/fileIdentity.d.ts.map +0 -1
- package/dist/uploads/fileIdentity.js +0 -36
- package/dist/uploads/fileIdentity.js.map +0 -1
- package/dist/uploads/fileQuarantine.d.ts +0 -17
- package/dist/uploads/fileQuarantine.d.ts.map +0 -1
- package/dist/uploads/fileQuarantine.js +0 -52
- package/dist/uploads/fileQuarantine.js.map +0 -1
- package/dist/uploads/linkFileWithoutOverwrite.d.ts +0 -13
- package/dist/uploads/linkFileWithoutOverwrite.d.ts.map +0 -1
- package/dist/uploads/linkFileWithoutOverwrite.js +0 -13
- package/dist/uploads/linkFileWithoutOverwrite.js.map +0 -1
- package/dist/uploads/uploadFileRollback.d.ts +0 -31
- package/dist/uploads/uploadFileRollback.d.ts.map +0 -1
- package/dist/uploads/uploadFileRollback.js +0 -269
- package/dist/uploads/uploadFileRollback.js.map +0 -1
- package/dist/utilities/extractRelationshipID.d.ts +0 -4
- package/dist/utilities/extractRelationshipID.d.ts.map +0 -1
- package/dist/utilities/extractRelationshipID.js +0 -14
- package/dist/utilities/extractRelationshipID.js.map +0 -1
- package/dist/utilities/transactionCallbacks.d.ts +0 -77
- package/dist/utilities/transactionCallbacks.d.ts.map +0 -1
- package/dist/utilities/transactionCallbacks.js +0 -299
- package/dist/utilities/transactionCallbacks.js.map +0 -1
- package/dist/utilities/transactionMutationTracker.d.ts +0 -21
- package/dist/utilities/transactionMutationTracker.d.ts.map +0 -1
- package/dist/utilities/transactionMutationTracker.js +0 -71
- package/dist/utilities/transactionMutationTracker.js.map +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { Forbidden, NotFound } from '../../errors/index.js';
|
|
2
|
-
import { headersWithCors } from '../../utilities/headersWithCors.js';
|
|
3
|
-
import { httpStatus } from '../../utilities/httpStatus.js';
|
|
4
|
-
import { mergeBranch } from '../merge.js';
|
|
5
|
-
import { isolateBranchState } from '../resolveBranch.js';
|
|
6
|
-
import { branchesCollectionSlug } from '../types.js';
|
|
7
|
-
/**
|
|
8
|
-
* `POST /<branches>/:id/merge`
|
|
9
|
-
*
|
|
10
|
-
* Runs with `overrideAccess: false` and the authenticated user, so the
|
|
11
|
-
* per-document preflight applies. This is the boundary at which branching's
|
|
12
|
-
* access model is actually enforced. The Local API uses the same secure default;
|
|
13
|
-
* trusted server-side callers must opt in to bypassing it.
|
|
14
|
-
*
|
|
15
|
-
* `stream: true` switches the response to NDJSON progress events. A merge walks
|
|
16
|
-
* an arbitrary number of documents one at a time, so the admin panel needs to
|
|
17
|
-
* report where it is; streaming the loop it already runs avoids inventing a job
|
|
18
|
-
* and a polling endpoint to carry that state.
|
|
19
|
-
*/ export const mergeBranchHandler = async (req)=>{
|
|
20
|
-
const { payload, routeParams } = req;
|
|
21
|
-
const id = routeParams?.id;
|
|
22
|
-
if (!req.user) {
|
|
23
|
-
throw new Forbidden(req.t);
|
|
24
|
-
}
|
|
25
|
-
const branchDoc = await payload.findByID({
|
|
26
|
-
id,
|
|
27
|
-
collection: branchesCollectionSlug,
|
|
28
|
-
disableErrors: true,
|
|
29
|
-
overrideAccess: false,
|
|
30
|
-
req
|
|
31
|
-
});
|
|
32
|
-
if (!branchDoc) {
|
|
33
|
-
throw new NotFound(req.t);
|
|
34
|
-
}
|
|
35
|
-
const body = req.data ?? {};
|
|
36
|
-
const branch = branchDoc.slug;
|
|
37
|
-
if (body.stream && !body.dryRun) {
|
|
38
|
-
return streamMerge({
|
|
39
|
-
branch,
|
|
40
|
-
changes: body.changes,
|
|
41
|
-
closeBranch: Boolean(body.closeBranch),
|
|
42
|
-
req
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
const result = await mergeBranch(payload, {
|
|
46
|
-
branch,
|
|
47
|
-
changes: body.changes,
|
|
48
|
-
closeBranch: Boolean(body.closeBranch),
|
|
49
|
-
dryRun: Boolean(body.dryRun),
|
|
50
|
-
overrideAccess: false,
|
|
51
|
-
req
|
|
52
|
-
});
|
|
53
|
-
// Nothing could be applied and something was refused: report it as a refusal
|
|
54
|
-
// rather than an empty success, so a programmatic caller sees the same
|
|
55
|
-
// per-document reasons the admin UI would show.
|
|
56
|
-
const status = result.validationErrors.length ? httpStatus.UNPROCESSABLE_ENTITY : !result.canMerge && result.blocked.length ? httpStatus.FORBIDDEN : httpStatus.OK;
|
|
57
|
-
return Response.json(result, {
|
|
58
|
-
headers: headersWithCors({
|
|
59
|
-
headers: new Headers(),
|
|
60
|
-
req
|
|
61
|
-
}),
|
|
62
|
-
status
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
const streamMerge = ({ branch, changes, closeBranch, req })=>{
|
|
66
|
-
const { payload, user } = req;
|
|
67
|
-
const encoder = new TextEncoder();
|
|
68
|
-
const stream = new ReadableStream({
|
|
69
|
-
async start (controller) {
|
|
70
|
-
const send = (event)=>controller.enqueue(encoder.encode(`${JSON.stringify(event)}\n`));
|
|
71
|
-
try {
|
|
72
|
-
const mergeReq = isolateBranchState(req);
|
|
73
|
-
delete mergeReq.transactionID;
|
|
74
|
-
const result = await mergeBranch(payload, {
|
|
75
|
-
branch,
|
|
76
|
-
changes,
|
|
77
|
-
closeBranch,
|
|
78
|
-
onProgress: (progress)=>send({
|
|
79
|
-
type: 'progress',
|
|
80
|
-
...progress
|
|
81
|
-
}),
|
|
82
|
-
overrideAccess: false,
|
|
83
|
-
req: mergeReq,
|
|
84
|
-
user: user
|
|
85
|
-
});
|
|
86
|
-
send({
|
|
87
|
-
type: 'complete',
|
|
88
|
-
result
|
|
89
|
-
});
|
|
90
|
-
} catch (err) {
|
|
91
|
-
// The status line is long gone, so a failure has to be reported inside the
|
|
92
|
-
// body. Clients treat a stream that ends without `complete` as failed too,
|
|
93
|
-
// which covers a connection dropped mid-merge.
|
|
94
|
-
payload.logger.error({
|
|
95
|
-
err,
|
|
96
|
-
msg: `Streamed merge of branch "${branch}" failed`
|
|
97
|
-
});
|
|
98
|
-
send({
|
|
99
|
-
type: 'error',
|
|
100
|
-
message: err instanceof Error ? err.message : 'Unknown error'
|
|
101
|
-
});
|
|
102
|
-
} finally{
|
|
103
|
-
controller.close();
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
return new Response(stream, {
|
|
108
|
-
headers: headersWithCors({
|
|
109
|
-
headers: new Headers({
|
|
110
|
-
'Cache-Control': 'no-cache, no-transform',
|
|
111
|
-
'Content-Type': 'application/x-ndjson; charset=utf-8'
|
|
112
|
-
}),
|
|
113
|
-
req
|
|
114
|
-
}),
|
|
115
|
-
status: httpStatus.OK
|
|
116
|
-
});
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
//# sourceMappingURL=merge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/branching/endpoints/merge.ts"],"sourcesContent":["import type { PayloadHandler } from '../../config/types.js'\nimport type { MergeResult } from '../merge.js'\nimport type { MergeProgress } from '../types.js'\n\nimport { Forbidden, NotFound } from '../../errors/index.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { mergeBranch } from '../merge.js'\nimport { isolateBranchState } from '../resolveBranch.js'\nimport { branchesCollectionSlug } from '../types.js'\n\n/**\n * One line of the streamed merge response.\n *\n * NDJSON rather than server-sent events: the client is a `fetch` reading a\n * `ReadableStream`, not an `EventSource`, so the framing SSE adds buys nothing —\n * and one JSON object per line is trivially parseable from a reader loop.\n */\nexport type MergeStreamEvent =\n | { message: string; type: 'error' }\n | { result: MergeResult; type: 'complete' }\n | ({ type: 'progress' } & MergeProgress)\n\n/**\n * `POST /<branches>/:id/merge`\n *\n * Runs with `overrideAccess: false` and the authenticated user, so the\n * per-document preflight applies. This is the boundary at which branching's\n * access model is actually enforced. The Local API uses the same secure default;\n * trusted server-side callers must opt in to bypassing it.\n *\n * `stream: true` switches the response to NDJSON progress events. A merge walks\n * an arbitrary number of documents one at a time, so the admin panel needs to\n * report where it is; streaming the loop it already runs avoids inventing a job\n * and a polling endpoint to carry that state.\n */\nexport const mergeBranchHandler: PayloadHandler = async (req) => {\n const { payload, routeParams } = req\n const id = routeParams?.id as number | string\n\n if (!req.user) {\n throw new Forbidden(req.t)\n }\n\n const branchDoc = await payload.findByID({\n id,\n collection: branchesCollectionSlug,\n disableErrors: true,\n overrideAccess: false,\n req,\n })\n\n if (!branchDoc) {\n throw new NotFound(req.t)\n }\n\n const body = (req.data ?? {}) as {\n changes?: (number | string)[]\n closeBranch?: boolean\n dryRun?: boolean\n stream?: boolean\n }\n\n const branch = branchDoc.slug as string\n\n if (body.stream && !body.dryRun) {\n return streamMerge({\n branch,\n changes: body.changes,\n closeBranch: Boolean(body.closeBranch),\n req,\n })\n }\n\n const result = await mergeBranch(payload, {\n branch,\n changes: body.changes,\n closeBranch: Boolean(body.closeBranch),\n dryRun: Boolean(body.dryRun),\n overrideAccess: false,\n req,\n })\n\n // Nothing could be applied and something was refused: report it as a refusal\n // rather than an empty success, so a programmatic caller sees the same\n // per-document reasons the admin UI would show.\n const status = result.validationErrors.length\n ? httpStatus.UNPROCESSABLE_ENTITY\n : !result.canMerge && result.blocked.length\n ? httpStatus.FORBIDDEN\n : httpStatus.OK\n\n return Response.json(result, {\n headers: headersWithCors({ headers: new Headers(), req }),\n status,\n })\n}\n\nconst streamMerge = ({\n branch,\n changes,\n closeBranch,\n req,\n}: {\n branch: string\n changes?: (number | string)[]\n closeBranch: boolean\n req: Parameters<PayloadHandler>[0]\n}): Response => {\n const { payload, user } = req\n const encoder = new TextEncoder()\n\n const stream = new ReadableStream<Uint8Array>({\n async start(controller) {\n const send = (event: MergeStreamEvent) =>\n controller.enqueue(encoder.encode(`${JSON.stringify(event)}\\n`))\n\n try {\n const mergeReq = isolateBranchState(req)\n\n delete mergeReq.transactionID\n\n const result = await mergeBranch(payload, {\n branch,\n changes,\n closeBranch,\n onProgress: (progress) => send({ type: 'progress', ...progress }),\n overrideAccess: false,\n req: mergeReq,\n user: user!,\n })\n\n send({ type: 'complete', result })\n } catch (err) {\n // The status line is long gone, so a failure has to be reported inside the\n // body. Clients treat a stream that ends without `complete` as failed too,\n // which covers a connection dropped mid-merge.\n payload.logger.error({ err, msg: `Streamed merge of branch \"${branch}\" failed` })\n\n send({\n type: 'error',\n message: err instanceof Error ? err.message : 'Unknown error',\n })\n } finally {\n controller.close()\n }\n },\n })\n\n return new Response(stream, {\n headers: headersWithCors({\n headers: new Headers({\n 'Cache-Control': 'no-cache, no-transform',\n 'Content-Type': 'application/x-ndjson; charset=utf-8',\n }),\n req,\n }),\n status: httpStatus.OK,\n })\n}\n"],"names":["Forbidden","NotFound","headersWithCors","httpStatus","mergeBranch","isolateBranchState","branchesCollectionSlug","mergeBranchHandler","req","payload","routeParams","id","user","t","branchDoc","findByID","collection","disableErrors","overrideAccess","body","data","branch","slug","stream","dryRun","streamMerge","changes","closeBranch","Boolean","result","status","validationErrors","length","UNPROCESSABLE_ENTITY","canMerge","blocked","FORBIDDEN","OK","Response","json","headers","Headers","encoder","TextEncoder","ReadableStream","start","controller","send","event","enqueue","encode","JSON","stringify","mergeReq","transactionID","onProgress","progress","type","err","logger","error","msg","message","Error","close"],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { PayloadRequest } from '../types/index.js';
|
|
2
|
-
type Args = {
|
|
3
|
-
collectionSlug: string;
|
|
4
|
-
id: number | string;
|
|
5
|
-
req: PayloadRequest;
|
|
6
|
-
/** Creates a new shadow in the request's existing transaction. */
|
|
7
|
-
useAmbientTransaction?: boolean;
|
|
8
|
-
};
|
|
9
|
-
/**
|
|
10
|
-
* Copy-on-write: ensures the active branch has its own row for a document, and
|
|
11
|
-
* returns that row's primary key.
|
|
12
|
-
*
|
|
13
|
-
* Returns the id unchanged on main, or when the branch already has a shadow
|
|
14
|
-
* row. Otherwise it copies the main row wholesale — a full copy rather than a
|
|
15
|
-
* diff, so the branch's version can be filtered and sorted on by the database
|
|
16
|
-
* like any other row.
|
|
17
|
-
*/
|
|
18
|
-
export declare const forkDocument: ({ id, collectionSlug, req, useAmbientTransaction, }: Args) => Promise<number | string>;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=forkDocument.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forkDocument.d.ts","sourceRoot":"","sources":["../../src/branching/forkDocument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAgBvD,KAAK,IAAI,GAAG;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,EAAE,cAAc,CAAA;IACnB,kEAAkE;IAClE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,wDAKtB,IAAI,KAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CA+HhC,CAAA"}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { APIError } from '../errors/index.js';
|
|
2
|
-
import { copyUploadFilesToBranch } from './copyUploadFilesToBranch.js';
|
|
3
|
-
import { createShadowRow } from './createShadowRow.js';
|
|
4
|
-
import { addToBranchManifest, loadBranchManifest, peekBranchOperation, peekBranchRowID, rememberBranchRowID, resolveBranch } from './resolveBranch.js';
|
|
5
|
-
import { branchChangesCollectionSlug, branchDocIDField, branchField, MAIN_BRANCH } from './types.js';
|
|
6
|
-
import { findBranchVersionForkBoundary } from './versions.js';
|
|
7
|
-
/**
|
|
8
|
-
* Copy-on-write: ensures the active branch has its own row for a document, and
|
|
9
|
-
* returns that row's primary key.
|
|
10
|
-
*
|
|
11
|
-
* Returns the id unchanged on main, or when the branch already has a shadow
|
|
12
|
-
* row. Otherwise it copies the main row wholesale — a full copy rather than a
|
|
13
|
-
* diff, so the branch's version can be filtered and sorted on by the database
|
|
14
|
-
* like any other row.
|
|
15
|
-
*/ export const forkDocument = async ({ id, collectionSlug, req, useAmbientTransaction = false })=>{
|
|
16
|
-
const branch = resolveBranch(req);
|
|
17
|
-
if (branch === MAIN_BRANCH) {
|
|
18
|
-
return id;
|
|
19
|
-
}
|
|
20
|
-
const branching = req.payload.config.branching;
|
|
21
|
-
if (!branching?.enabled || !branching.branchableCollections.has(collectionSlug)) {
|
|
22
|
-
return id;
|
|
23
|
-
}
|
|
24
|
-
const remembered = peekBranchRowID({
|
|
25
|
-
collectionSlug,
|
|
26
|
-
docID: id,
|
|
27
|
-
req
|
|
28
|
-
});
|
|
29
|
-
if (remembered !== undefined) {
|
|
30
|
-
await loadBranchManifest(req);
|
|
31
|
-
if (!peekBranchOperation({
|
|
32
|
-
collectionSlug,
|
|
33
|
-
docID: id,
|
|
34
|
-
req
|
|
35
|
-
})) {
|
|
36
|
-
throw new APIError(`The ${collectionSlug} branch row for document ${String(id)} has no change record.`, 409);
|
|
37
|
-
}
|
|
38
|
-
return remembered;
|
|
39
|
-
}
|
|
40
|
-
// One query for all three questions this used to ask separately: does the branch
|
|
41
|
-
// already have a copy (by canonical ID), is this row the branch's own creation (by its
|
|
42
|
-
// primary key), and failing both, what does main hold? A branch row wins when both come
|
|
43
|
-
// back — the same pick `pickBranchGlobal` makes for globals.
|
|
44
|
-
const { docs } = await req.payload.db.find({
|
|
45
|
-
branch: false,
|
|
46
|
-
collection: collectionSlug,
|
|
47
|
-
limit: 2,
|
|
48
|
-
pagination: false,
|
|
49
|
-
req,
|
|
50
|
-
where: {
|
|
51
|
-
and: [
|
|
52
|
-
{
|
|
53
|
-
[branchField]: {
|
|
54
|
-
in: [
|
|
55
|
-
branch,
|
|
56
|
-
MAIN_BRANCH
|
|
57
|
-
]
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
or: [
|
|
62
|
-
{
|
|
63
|
-
id: {
|
|
64
|
-
equals: id
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
[branchDocIDField]: {
|
|
69
|
-
equals: id
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
]
|
|
73
|
-
}
|
|
74
|
-
]
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
const rows = docs;
|
|
78
|
-
const onBranch = rows.find((row)=>row[branchField] === branch);
|
|
79
|
-
if (onBranch) {
|
|
80
|
-
await loadBranchManifest(req);
|
|
81
|
-
if (!peekBranchOperation({
|
|
82
|
-
collectionSlug,
|
|
83
|
-
docID: id,
|
|
84
|
-
req
|
|
85
|
-
})) {
|
|
86
|
-
throw new APIError(`The ${collectionSlug} branch row for document ${String(id)} has no change record.`, 409);
|
|
87
|
-
}
|
|
88
|
-
const rowID = onBranch.id;
|
|
89
|
-
rememberBranchRowID({
|
|
90
|
-
collectionSlug,
|
|
91
|
-
docID: id,
|
|
92
|
-
req,
|
|
93
|
-
rowID
|
|
94
|
-
});
|
|
95
|
-
return rowID;
|
|
96
|
-
}
|
|
97
|
-
const mainDoc = rows.find((row)=>row[branchField] === MAIN_BRANCH);
|
|
98
|
-
if (!mainDoc) {
|
|
99
|
-
return id;
|
|
100
|
-
}
|
|
101
|
-
const shadow = await createShadowRow({
|
|
102
|
-
branch,
|
|
103
|
-
collectionSlug,
|
|
104
|
-
data: {
|
|
105
|
-
[branchDocIDField]: id,
|
|
106
|
-
[branchField]: branch
|
|
107
|
-
},
|
|
108
|
-
docID: id,
|
|
109
|
-
onCreated: async (createReq, createdShadow)=>{
|
|
110
|
-
const collection = createReq.payload.collections[collectionSlug];
|
|
111
|
-
if (collection?.config.upload) {
|
|
112
|
-
await copyUploadFilesToBranch({
|
|
113
|
-
branch,
|
|
114
|
-
collection: collection.config,
|
|
115
|
-
doc: createdShadow,
|
|
116
|
-
req: createReq
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
const versionBoundary = await findBranchVersionForkBoundary({
|
|
120
|
-
collectionSlug,
|
|
121
|
-
docID: id,
|
|
122
|
-
req: createReq
|
|
123
|
-
});
|
|
124
|
-
return createReq.payload.create({
|
|
125
|
-
collection: branchChangesCollectionSlug,
|
|
126
|
-
data: {
|
|
127
|
-
baseUpdatedAt: mainDoc.updatedAt,
|
|
128
|
-
...versionBoundary,
|
|
129
|
-
branch,
|
|
130
|
-
collectionSlug,
|
|
131
|
-
doc: {
|
|
132
|
-
relationTo: collectionSlug,
|
|
133
|
-
value: id
|
|
134
|
-
},
|
|
135
|
-
documentID: String(id),
|
|
136
|
-
entityType: 'collection',
|
|
137
|
-
operation: 'update',
|
|
138
|
-
rowID: String(createdShadow.id)
|
|
139
|
-
},
|
|
140
|
-
overrideAccess: true,
|
|
141
|
-
req: createReq
|
|
142
|
-
});
|
|
143
|
-
},
|
|
144
|
-
req,
|
|
145
|
-
source: {
|
|
146
|
-
id,
|
|
147
|
-
branch: MAIN_BRANCH
|
|
148
|
-
},
|
|
149
|
-
useAmbientTransaction
|
|
150
|
-
});
|
|
151
|
-
// The manifest now has one more entry. Added rather than reloaded: dropping the memoized
|
|
152
|
-
// copy made the next read in this request re-query every change row on the branch to
|
|
153
|
-
// learn one ID, and every save the admin panel makes is a write followed by a read.
|
|
154
|
-
addToBranchManifest({
|
|
155
|
-
collectionSlug,
|
|
156
|
-
docID: id,
|
|
157
|
-
operation: 'update',
|
|
158
|
-
req
|
|
159
|
-
});
|
|
160
|
-
rememberBranchRowID({
|
|
161
|
-
collectionSlug,
|
|
162
|
-
docID: id,
|
|
163
|
-
req,
|
|
164
|
-
rowID: shadow.id
|
|
165
|
-
});
|
|
166
|
-
return shadow.id;
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
//# sourceMappingURL=forkDocument.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/branching/forkDocument.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\n\nimport { APIError } from '../errors/index.js'\nimport { copyUploadFilesToBranch } from './copyUploadFilesToBranch.js'\nimport { createShadowRow } from './createShadowRow.js'\nimport {\n addToBranchManifest,\n loadBranchManifest,\n peekBranchOperation,\n peekBranchRowID,\n rememberBranchRowID,\n resolveBranch,\n} from './resolveBranch.js'\nimport { branchChangesCollectionSlug, branchDocIDField, branchField, MAIN_BRANCH } from './types.js'\nimport { findBranchVersionForkBoundary } from './versions.js'\n\ntype Args = {\n collectionSlug: string\n id: number | string\n req: PayloadRequest\n /** Creates a new shadow in the request's existing transaction. */\n useAmbientTransaction?: boolean\n}\n\n/**\n * Copy-on-write: ensures the active branch has its own row for a document, and\n * returns that row's primary key.\n *\n * Returns the id unchanged on main, or when the branch already has a shadow\n * row. Otherwise it copies the main row wholesale — a full copy rather than a\n * diff, so the branch's version can be filtered and sorted on by the database\n * like any other row.\n */\nexport const forkDocument = async ({\n id,\n collectionSlug,\n req,\n useAmbientTransaction = false,\n}: Args): Promise<number | string> => {\n const branch = resolveBranch(req)\n\n if (branch === MAIN_BRANCH) {\n return id\n }\n\n const branching = req.payload.config.branching\n\n if (!branching?.enabled || !branching.branchableCollections.has(collectionSlug)) {\n return id\n }\n\n const remembered = peekBranchRowID({ collectionSlug, docID: id, req })\n\n if (remembered !== undefined) {\n await loadBranchManifest(req)\n\n if (!peekBranchOperation({ collectionSlug, docID: id, req })) {\n throw new APIError(\n `The ${collectionSlug} branch row for document ${String(id)} has no change record.`,\n 409,\n )\n }\n\n return remembered\n }\n\n // One query for all three questions this used to ask separately: does the branch\n // already have a copy (by canonical ID), is this row the branch's own creation (by its\n // primary key), and failing both, what does main hold? A branch row wins when both come\n // back — the same pick `pickBranchGlobal` makes for globals.\n const { docs } = await req.payload.db.find({\n branch: false,\n collection: collectionSlug,\n limit: 2,\n pagination: false,\n req,\n where: {\n and: [\n { [branchField]: { in: [branch, MAIN_BRANCH] } },\n { or: [{ id: { equals: id } }, { [branchDocIDField]: { equals: id } }] },\n ],\n },\n })\n\n const rows = docs as Record<string, unknown>[]\n const onBranch = rows.find((row) => row[branchField] === branch)\n\n if (onBranch) {\n await loadBranchManifest(req)\n\n if (!peekBranchOperation({ collectionSlug, docID: id, req })) {\n throw new APIError(\n `The ${collectionSlug} branch row for document ${String(id)} has no change record.`,\n 409,\n )\n }\n\n const rowID = onBranch.id as number | string\n\n rememberBranchRowID({ collectionSlug, docID: id, req, rowID })\n\n return rowID\n }\n\n const mainDoc = rows.find((row) => row[branchField] === MAIN_BRANCH)\n\n if (!mainDoc) {\n return id\n }\n\n const shadow = await createShadowRow({\n branch,\n collectionSlug,\n data: {\n [branchDocIDField]: id,\n [branchField]: branch,\n },\n docID: id,\n onCreated: async (createReq, createdShadow) => {\n const collection = createReq.payload.collections[collectionSlug]\n\n if (collection?.config.upload) {\n await copyUploadFilesToBranch({\n branch,\n collection: collection.config,\n doc: createdShadow,\n req: createReq,\n })\n }\n\n const versionBoundary = await findBranchVersionForkBoundary({\n collectionSlug,\n docID: id,\n req: createReq,\n })\n\n return createReq.payload.create({\n collection: branchChangesCollectionSlug,\n data: {\n baseUpdatedAt: mainDoc.updatedAt,\n ...versionBoundary,\n branch,\n collectionSlug,\n doc: { relationTo: collectionSlug, value: id },\n documentID: String(id),\n entityType: 'collection',\n operation: 'update',\n rowID: String(createdShadow.id),\n },\n overrideAccess: true,\n req: createReq,\n })\n },\n req,\n source: { id, branch: MAIN_BRANCH },\n useAmbientTransaction,\n })\n\n // The manifest now has one more entry. Added rather than reloaded: dropping the memoized\n // copy made the next read in this request re-query every change row on the branch to\n // learn one ID, and every save the admin panel makes is a write followed by a read.\n addToBranchManifest({ collectionSlug, docID: id, operation: 'update', req })\n rememberBranchRowID({ collectionSlug, docID: id, req, rowID: shadow.id as number | string })\n\n return shadow.id as number | string\n}\n"],"names":["APIError","copyUploadFilesToBranch","createShadowRow","addToBranchManifest","loadBranchManifest","peekBranchOperation","peekBranchRowID","rememberBranchRowID","resolveBranch","branchChangesCollectionSlug","branchDocIDField","branchField","MAIN_BRANCH","findBranchVersionForkBoundary","forkDocument","id","collectionSlug","req","useAmbientTransaction","branch","branching","payload","config","enabled","branchableCollections","has","remembered","docID","undefined","String","docs","db","find","collection","limit","pagination","where","and","in","or","equals","rows","onBranch","row","rowID","mainDoc","shadow","data","onCreated","createReq","createdShadow","collections","upload","doc","versionBoundary","create","baseUpdatedAt","updatedAt","relationTo","value","documentID","entityType","operation","overrideAccess","source"],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { Payload, PayloadRequest } from '../types/index.js';
|
|
2
|
-
export type GlobalMergeWrite = {
|
|
3
|
-
draft: boolean;
|
|
4
|
-
};
|
|
5
|
-
type BaseArgs = {
|
|
6
|
-
branch: string;
|
|
7
|
-
globalSlug: string;
|
|
8
|
-
payload: Payload;
|
|
9
|
-
req: PayloadRequest;
|
|
10
|
-
};
|
|
11
|
-
/** Resolves only the latest source state that should be applied to main. */
|
|
12
|
-
export declare const resolveGlobalMergeWrites: ({ branch, globalSlug, payload, req, }: BaseArgs) => Promise<GlobalMergeWrite[]>;
|
|
13
|
-
/** Returns the locales that require distinct writes for one global. */
|
|
14
|
-
export declare const getGlobalMergeLocales: ({ globalSlug, payload, req, }: Omit<BaseArgs, 'branch'>) => string[];
|
|
15
|
-
/** Reads one exact stored branch-global state without hooks, defaults, access, or population. */
|
|
16
|
-
export declare const readBranchGlobalWrite: ({ branch, draft, globalSlug, locale, payload, req, }: {
|
|
17
|
-
draft: boolean;
|
|
18
|
-
locale: string;
|
|
19
|
-
} & BaseArgs) => Promise<null | Record<string, unknown>>;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=globalMergeWrites.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"globalMergeWrites.d.ts","sourceRoot":"","sources":["../../src/branching/globalMergeWrites.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAOhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,QAAQ,GAAG;IACd,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,0CAKlC,QAAQ,KAAG,OAAO,CAAC,gBAAgB,EAAE,CAmCvC,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,kCAI/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAG,MAAM,EAWnC,CAAA;AAED,iGAAiG;AACjG,eAAO,MAAM,qBAAqB,yDAO/B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,KAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6DxF,CAAA"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
import { afterRead } from '../fields/hooks/afterRead/index.js';
|
|
2
|
-
import { traverseForLocalizedFields } from '../utilities/traverseForLocalizedFields.js';
|
|
3
|
-
import { isolateBranchState } from './resolveBranch.js';
|
|
4
|
-
import { branchField, MAIN_BRANCH } from './types.js';
|
|
5
|
-
/** Resolves only the latest source state that should be applied to main. */ export const resolveGlobalMergeWrites = async ({ branch, globalSlug, payload, req })=>{
|
|
6
|
-
const branchGlobal = await payload.db.findGlobal({
|
|
7
|
-
slug: globalSlug,
|
|
8
|
-
branch: false,
|
|
9
|
-
locale: 'all',
|
|
10
|
-
req,
|
|
11
|
-
where: {
|
|
12
|
-
[branchField]: {
|
|
13
|
-
equals: branch
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
const hasPublishedWrite = Boolean(branchGlobal && Object.keys(branchGlobal).length);
|
|
18
|
-
const globalConfig = payload.globals.config.find(({ slug })=>slug === globalSlug);
|
|
19
|
-
if (!globalConfig?.versions) {
|
|
20
|
-
return hasPublishedWrite ? [
|
|
21
|
-
{
|
|
22
|
-
draft: false
|
|
23
|
-
}
|
|
24
|
-
] : [];
|
|
25
|
-
}
|
|
26
|
-
const { docs } = await payload.db.findGlobalVersions({
|
|
27
|
-
branch: false,
|
|
28
|
-
global: globalSlug,
|
|
29
|
-
limit: 1,
|
|
30
|
-
locale: 'all',
|
|
31
|
-
pagination: false,
|
|
32
|
-
req,
|
|
33
|
-
sort: '-updatedAt',
|
|
34
|
-
where: {
|
|
35
|
-
and: [
|
|
36
|
-
{
|
|
37
|
-
[branchField]: {
|
|
38
|
-
equals: branch
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
latest: {
|
|
43
|
-
equals: true
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
const latestVersion = docs[0]?.version;
|
|
50
|
-
const hasNewerDraft = latestVersion ? statusIncludesDraft(latestVersion._status) : false;
|
|
51
|
-
if (hasNewerDraft) {
|
|
52
|
-
return [
|
|
53
|
-
{
|
|
54
|
-
draft: true
|
|
55
|
-
}
|
|
56
|
-
];
|
|
57
|
-
}
|
|
58
|
-
return hasPublishedWrite ? [
|
|
59
|
-
{
|
|
60
|
-
draft: false
|
|
61
|
-
}
|
|
62
|
-
] : [];
|
|
63
|
-
};
|
|
64
|
-
/** Returns the locales that require distinct writes for one global. */ export const getGlobalMergeLocales = ({ globalSlug, payload, req })=>{
|
|
65
|
-
const globalConfig = payload.globals.config.find(({ slug })=>slug === globalSlug);
|
|
66
|
-
const localization = payload.config.localization;
|
|
67
|
-
if (globalConfig && localization && traverseForLocalizedFields(globalConfig.fields)) {
|
|
68
|
-
return localization.localeCodes;
|
|
69
|
-
}
|
|
70
|
-
const defaultLocale = localization && localization.defaultLocale;
|
|
71
|
-
return [
|
|
72
|
-
req.locale && req.locale !== 'all' ? req.locale : defaultLocale || 'en'
|
|
73
|
-
];
|
|
74
|
-
};
|
|
75
|
-
/** Reads one exact stored branch-global state without hooks, defaults, access, or population. */ export const readBranchGlobalWrite = async ({ branch, draft, globalSlug, locale, payload, req })=>{
|
|
76
|
-
const branchReq = isolateBranchState(req);
|
|
77
|
-
branchReq.branch = MAIN_BRANCH;
|
|
78
|
-
branchReq.locale = locale;
|
|
79
|
-
branchReq.context._branchBypass = true;
|
|
80
|
-
const globalConfig = payload.globals.config.find(({ slug })=>slug === globalSlug);
|
|
81
|
-
if (!globalConfig) {
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
let storedDocument;
|
|
85
|
-
if (draft && globalConfig.versions) {
|
|
86
|
-
const { docs } = await payload.db.findGlobalVersions({
|
|
87
|
-
branch: false,
|
|
88
|
-
global: globalSlug,
|
|
89
|
-
limit: 1,
|
|
90
|
-
locale,
|
|
91
|
-
pagination: false,
|
|
92
|
-
req: branchReq,
|
|
93
|
-
sort: '-updatedAt',
|
|
94
|
-
where: {
|
|
95
|
-
and: [
|
|
96
|
-
{
|
|
97
|
-
[branchField]: {
|
|
98
|
-
equals: branch
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
latest: {
|
|
103
|
-
equals: true
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
]
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
storedDocument = docs[0]?.version ?? null;
|
|
110
|
-
} else {
|
|
111
|
-
storedDocument = await payload.db.findGlobal({
|
|
112
|
-
slug: globalSlug,
|
|
113
|
-
branch: false,
|
|
114
|
-
locale,
|
|
115
|
-
req: branchReq,
|
|
116
|
-
where: {
|
|
117
|
-
[branchField]: {
|
|
118
|
-
equals: branch
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
if (!storedDocument || Object.keys(storedDocument).length === 0) {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
return afterRead({
|
|
127
|
-
collection: null,
|
|
128
|
-
context: branchReq.context,
|
|
129
|
-
depth: 0,
|
|
130
|
-
doc: storedDocument,
|
|
131
|
-
draft,
|
|
132
|
-
fallbackLocale: null,
|
|
133
|
-
global: globalConfig,
|
|
134
|
-
locale,
|
|
135
|
-
overrideAccess: true,
|
|
136
|
-
req: branchReq,
|
|
137
|
-
showHiddenFields: true,
|
|
138
|
-
triggerAccessControl: false,
|
|
139
|
-
triggerDefaultValue: false,
|
|
140
|
-
triggerHooks: false,
|
|
141
|
-
triggerPopulation: false
|
|
142
|
-
});
|
|
143
|
-
};
|
|
144
|
-
const statusIncludesDraft = (status)=>status === 'draft' || Boolean(status) && typeof status === 'object' && Object.values(status).includes('draft');
|
|
145
|
-
|
|
146
|
-
//# sourceMappingURL=globalMergeWrites.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/branching/globalMergeWrites.ts"],"sourcesContent":["import type { Payload, PayloadRequest } from '../types/index.js'\n\nimport { afterRead } from '../fields/hooks/afterRead/index.js'\nimport { traverseForLocalizedFields } from '../utilities/traverseForLocalizedFields.js'\nimport { isolateBranchState } from './resolveBranch.js'\nimport { branchField, MAIN_BRANCH } from './types.js'\n\nexport type GlobalMergeWrite = {\n draft: boolean\n}\n\ntype BaseArgs = {\n branch: string\n globalSlug: string\n payload: Payload\n req: PayloadRequest\n}\n\n/** Resolves only the latest source state that should be applied to main. */\nexport const resolveGlobalMergeWrites = async ({\n branch,\n globalSlug,\n payload,\n req,\n}: BaseArgs): Promise<GlobalMergeWrite[]> => {\n const branchGlobal = await payload.db.findGlobal({\n slug: globalSlug,\n branch: false,\n locale: 'all',\n req,\n where: { [branchField]: { equals: branch } },\n })\n const hasPublishedWrite = Boolean(branchGlobal && Object.keys(branchGlobal).length)\n const globalConfig = payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n if (!globalConfig?.versions) {\n return hasPublishedWrite ? [{ draft: false }] : []\n }\n\n const { docs } = await payload.db.findGlobalVersions({\n branch: false,\n global: globalSlug,\n limit: 1,\n locale: 'all',\n pagination: false,\n req,\n sort: '-updatedAt',\n where: {\n and: [{ [branchField]: { equals: branch } }, { latest: { equals: true } }],\n },\n })\n const latestVersion = docs[0]?.version as Record<string, unknown> | undefined\n const hasNewerDraft = latestVersion ? statusIncludesDraft(latestVersion._status) : false\n\n if (hasNewerDraft) {\n return [{ draft: true }]\n }\n\n return hasPublishedWrite ? [{ draft: false }] : []\n}\n\n/** Returns the locales that require distinct writes for one global. */\nexport const getGlobalMergeLocales = ({\n globalSlug,\n payload,\n req,\n}: Omit<BaseArgs, 'branch'>): string[] => {\n const globalConfig = payload.globals.config.find(({ slug }) => slug === globalSlug)\n const localization = payload.config.localization\n\n if (globalConfig && localization && traverseForLocalizedFields(globalConfig.fields)) {\n return localization.localeCodes\n }\n\n const defaultLocale = localization && localization.defaultLocale\n\n return [req.locale && req.locale !== 'all' ? req.locale : defaultLocale || 'en']\n}\n\n/** Reads one exact stored branch-global state without hooks, defaults, access, or population. */\nexport const readBranchGlobalWrite = async ({\n branch,\n draft,\n globalSlug,\n locale,\n payload,\n req,\n}: { draft: boolean; locale: string } & BaseArgs): Promise<null | Record<string, unknown>> => {\n const branchReq = isolateBranchState(req)\n\n branchReq.branch = MAIN_BRANCH\n branchReq.locale = locale\n ;(branchReq.context as Record<string, unknown>)._branchBypass = true\n\n const globalConfig = payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n if (!globalConfig) {\n return null\n }\n\n let storedDocument: null | Record<string, unknown>\n\n if (draft && globalConfig.versions) {\n const { docs } = await payload.db.findGlobalVersions({\n branch: false,\n global: globalSlug,\n limit: 1,\n locale,\n pagination: false,\n req: branchReq,\n sort: '-updatedAt',\n where: {\n and: [{ [branchField]: { equals: branch } }, { latest: { equals: true } }],\n },\n })\n\n storedDocument = (docs[0]?.version as Record<string, unknown> | undefined) ?? null\n } else {\n storedDocument = (await payload.db.findGlobal({\n slug: globalSlug,\n branch: false,\n locale,\n req: branchReq,\n where: { [branchField]: { equals: branch } },\n })) as null | Record<string, unknown>\n }\n\n if (!storedDocument || Object.keys(storedDocument).length === 0) {\n return null\n }\n\n return afterRead({\n collection: null,\n context: branchReq.context,\n depth: 0,\n doc: storedDocument,\n draft,\n fallbackLocale: null,\n global: globalConfig,\n locale,\n overrideAccess: true,\n req: branchReq,\n showHiddenFields: true,\n triggerAccessControl: false,\n triggerDefaultValue: false,\n triggerHooks: false,\n triggerPopulation: false,\n })\n}\n\nconst statusIncludesDraft = (status: unknown): boolean =>\n status === 'draft' ||\n (Boolean(status) &&\n typeof status === 'object' &&\n Object.values(status as Record<string, unknown>).includes('draft'))\n"],"names":["afterRead","traverseForLocalizedFields","isolateBranchState","branchField","MAIN_BRANCH","resolveGlobalMergeWrites","branch","globalSlug","payload","req","branchGlobal","db","findGlobal","slug","locale","where","equals","hasPublishedWrite","Boolean","Object","keys","length","globalConfig","globals","config","find","versions","draft","docs","findGlobalVersions","global","limit","pagination","sort","and","latest","latestVersion","version","hasNewerDraft","statusIncludesDraft","_status","getGlobalMergeLocales","localization","fields","localeCodes","defaultLocale","readBranchGlobalWrite","branchReq","context","_branchBypass","storedDocument","collection","depth","doc","fallbackLocale","overrideAccess","showHiddenFields","triggerAccessControl","triggerDefaultValue","triggerHooks","triggerPopulation","status","values","includes"],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { PayloadRequest, Where } from '../types/index.js';
|
|
2
|
-
type BaseArgs = {
|
|
3
|
-
branch?: false | string;
|
|
4
|
-
globalSlug: string;
|
|
5
|
-
req?: Partial<PayloadRequest>;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Branch predicate for reading a global.
|
|
9
|
-
*
|
|
10
|
-
* Unlike collections, this does not have to resolve everything inside one
|
|
11
|
-
* query: a global is a single document, so there is no result set to paginate
|
|
12
|
-
* or count and nothing a post-query step could get wrong. The query fetches the
|
|
13
|
-
* branch's row and main's row together and `pickBranchGlobal` prefers the
|
|
14
|
-
* branch's — one round trip, at most two rows.
|
|
15
|
-
*/
|
|
16
|
-
export declare const resolveBranchGlobalQuery: ({ branch, globalSlug, req, where, }: {
|
|
17
|
-
where: undefined | Where;
|
|
18
|
-
} & BaseArgs) => undefined | Where;
|
|
19
|
-
/** True when the read should fetch two rows so the branch's copy can win. */
|
|
20
|
-
export declare const branchGlobalNeedsBothRows: (args: BaseArgs) => boolean;
|
|
21
|
-
/** Picks the branch's copy of a global when it has one, else main's. */
|
|
22
|
-
export declare const pickBranchGlobal: <T extends Record<string, any>>(docs: T[], branch: string) => T | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* The branch a global write should be scoped to, or `null` on main.
|
|
25
|
-
*
|
|
26
|
-
* Storage differs too much between adapters to upsert the branch's copy here —
|
|
27
|
-
* Mongo keeps every global in one discriminated collection and Drizzle gives each
|
|
28
|
-
* its own table, so each adapter performs the upsert. The global operation records
|
|
29
|
-
* the change after that adapter write succeeds.
|
|
30
|
-
*/
|
|
31
|
-
export declare const resolveBranchGlobalWrite: (args: BaseArgs) => null | string;
|
|
32
|
-
/** Registers a global as changed on a branch, if it is not already. */
|
|
33
|
-
export declare const recordBranchGlobalChange: ({ branch, globalSlug, req, }: {
|
|
34
|
-
branch: string;
|
|
35
|
-
} & BaseArgs) => Promise<void>;
|
|
36
|
-
/**
|
|
37
|
-
* Branch predicate for global version reads.
|
|
38
|
-
*
|
|
39
|
-
* Strict equality rather than the read-through used for the global itself: a
|
|
40
|
-
* version list must not interleave two branches' histories, and ordering by
|
|
41
|
-
* timestamp would pick between them nondeterministically. A branch that has
|
|
42
|
-
* never touched the global simply has no versions of it, and the global read
|
|
43
|
-
* still falls back to main.
|
|
44
|
-
*/
|
|
45
|
-
export declare const resolveBranchGlobalVersionQuery: ({ branch, globalSlug, req, where, }: {
|
|
46
|
-
where: undefined | Where;
|
|
47
|
-
} & BaseArgs) => undefined | Where;
|
|
48
|
-
export {};
|
|
49
|
-
//# sourceMappingURL=globals.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/branching/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAU9D,KAAK,QAAQ,GAAG;IACd,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,CAAA;AAuBD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,wCAKlC;IAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAA;CAAE,GAAG,QAAQ,KAAG,SAAS,GAAG,KAcxD,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,yBAAyB,SAAU,QAAQ,KAAG,OAI1D,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QACtD,CAAC,EAAE,UACD,MAAM,KACb,CAAC,GAAG,SAAyE,CAAA;AAEhF;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,SAAU,QAAQ,KAAG,IAAI,GAAG,MAIhE,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,iCAIlC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,KAAG,OAAO,CAAC,IAAI,CAsD9C,CAAA;AA0BD;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,wCAKzC;IAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAA;CAAE,GAAG,QAAQ,KAAG,SAAS,GAAG,KAUxD,CAAA"}
|