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,363 +0,0 @@
|
|
|
1
|
-
import { getDataLoader } from '../collections/dataloader.js';
|
|
2
|
-
import { branchesCollectionSlug, MAIN_BRANCH } from './types.js';
|
|
3
|
-
const stateKey = '_branchState';
|
|
4
|
-
const getBranchingConfig = (req)=>req?.payload?.config?.branching;
|
|
5
|
-
/**
|
|
6
|
-
* Resolves the active branch for a request.
|
|
7
|
-
*
|
|
8
|
-
* The branch is an argument, exactly like `locale` and `depth`: it is whatever
|
|
9
|
-
* the caller passed, and `main` when they passed nothing. Nothing is read from
|
|
10
|
-
* storage here — no preference lookup, no cookie — so an unbranched request
|
|
11
|
-
* costs nothing beyond this function.
|
|
12
|
-
*
|
|
13
|
-
* Where the admin UI's persisted selection turns into that argument is the
|
|
14
|
-
* admin UI's business (`initAdminContext`), the same division `locale` already uses.
|
|
15
|
-
*
|
|
16
|
-
* Precedence, highest first:
|
|
17
|
-
* 1. explicit Local API argument (`req.branch`, set by the caller)
|
|
18
|
-
* 2. `branch` query param
|
|
19
|
-
* 3. `main`
|
|
20
|
-
*/ export const resolveBranch = (req)=>{
|
|
21
|
-
const branching = getBranchingConfig(req);
|
|
22
|
-
if (!branching?.enabled) {
|
|
23
|
-
return MAIN_BRANCH;
|
|
24
|
-
}
|
|
25
|
-
const context = req.context;
|
|
26
|
-
const existing = context?.[stateKey];
|
|
27
|
-
if (existing) {
|
|
28
|
-
return existing.branch;
|
|
29
|
-
}
|
|
30
|
-
// The bypass sentinel `createPayloadRequest` sets for `branch: false`. Honoured here and not
|
|
31
|
-
// only at the database layer, because a request told to ignore branching must not
|
|
32
|
-
// report a branch to anything that asks — a `branch: false` request built from an HTTP
|
|
33
|
-
// request still carries `?branch=` in its query, and falling through to it made the
|
|
34
|
-
// merge engine resolve against the very branch it was merging.
|
|
35
|
-
if (context?._branchBypass) {
|
|
36
|
-
req.branch = MAIN_BRANCH;
|
|
37
|
-
return MAIN_BRANCH;
|
|
38
|
-
}
|
|
39
|
-
const branch = resolveBranchFromRequest(req) ?? MAIN_BRANCH;
|
|
40
|
-
if (context) {
|
|
41
|
-
context[stateKey] = {
|
|
42
|
-
branch,
|
|
43
|
-
deleted: new Map(),
|
|
44
|
-
manifest: new Map(),
|
|
45
|
-
manifestLoaded: false,
|
|
46
|
-
operations: new Map(),
|
|
47
|
-
rowIDs: new Map()
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
req.branch = branch;
|
|
51
|
-
return branch;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* The branch the caller asked for, whether through the Local API option or the
|
|
55
|
-
* `branch` query param — the same two ways `locale` is supplied.
|
|
56
|
-
*/ const resolveBranchFromRequest = (req)=>{
|
|
57
|
-
if (typeof req.branch === 'string' && req.branch) {
|
|
58
|
-
return req.branch;
|
|
59
|
-
}
|
|
60
|
-
if (typeof req.query?.branch === 'string' && req.query.branch) {
|
|
61
|
-
return req.query.branch;
|
|
62
|
-
}
|
|
63
|
-
return undefined;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Loads every change the active branch has made, in one query, and groups it
|
|
67
|
-
* by collection in memory.
|
|
68
|
-
*
|
|
69
|
-
* One query per request rather than per collection: a request touching a dozen
|
|
70
|
-
* collections still issues a single manifest read. Bounded by branch size, not
|
|
71
|
-
* table size.
|
|
72
|
-
*/ export const loadBranchManifest = async (req)=>{
|
|
73
|
-
const branch = resolveBranch(req);
|
|
74
|
-
const context = req.context;
|
|
75
|
-
const state = context?.[stateKey];
|
|
76
|
-
if (!state || branch === MAIN_BRANCH) {
|
|
77
|
-
return new Map();
|
|
78
|
-
}
|
|
79
|
-
if (state.manifestLoaded) {
|
|
80
|
-
return state.manifest;
|
|
81
|
-
}
|
|
82
|
-
// Marked loaded up front so the manifest read below — which itself goes
|
|
83
|
-
// through the adapter — cannot recurse back into loading the manifest.
|
|
84
|
-
state.manifestLoaded = true;
|
|
85
|
-
const { docs } = await req.payload.db.find({
|
|
86
|
-
collection: 'payload-branch-changes',
|
|
87
|
-
limit: 0,
|
|
88
|
-
pagination: false,
|
|
89
|
-
req,
|
|
90
|
-
where: {
|
|
91
|
-
and: [
|
|
92
|
-
{
|
|
93
|
-
branch: {
|
|
94
|
-
equals: branch
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
entityType: {
|
|
99
|
-
equals: 'collection'
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
for (const change of docs){
|
|
106
|
-
const slug = change.collectionSlug;
|
|
107
|
-
const docID = change.doc?.value ?? change.doc;
|
|
108
|
-
if (!slug || docID === undefined || docID === null) {
|
|
109
|
-
continue;
|
|
110
|
-
}
|
|
111
|
-
const existing = state.manifest.get(slug);
|
|
112
|
-
if (existing) {
|
|
113
|
-
existing.push(docID);
|
|
114
|
-
} else {
|
|
115
|
-
state.manifest.set(slug, [
|
|
116
|
-
docID
|
|
117
|
-
]);
|
|
118
|
-
}
|
|
119
|
-
if (change.operation === 'delete') {
|
|
120
|
-
const deleted = state.deleted.get(slug);
|
|
121
|
-
if (deleted) {
|
|
122
|
-
deleted.push(docID);
|
|
123
|
-
} else {
|
|
124
|
-
state.deleted.set(slug, [
|
|
125
|
-
docID
|
|
126
|
-
]);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (change.operation === 'create' || change.operation === 'delete' || change.operation === 'update') {
|
|
130
|
-
state.operations.set(`${slug}:${String(docID)}`, change.operation);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return state.manifest;
|
|
134
|
-
};
|
|
135
|
-
/**
|
|
136
|
-
* Canonical IDs the active branch has tombstoned, keyed by collection slug.
|
|
137
|
-
*
|
|
138
|
-
* Version and collection queries both exclude these documents by canonical
|
|
139
|
-
* identity from the authoritative change manifest.
|
|
140
|
-
*
|
|
141
|
-
* Loaded from the same manifest query, so asking for this costs nothing beyond
|
|
142
|
-
* the read the request already made.
|
|
143
|
-
*/ export const loadBranchDeletions = async (req)=>{
|
|
144
|
-
await loadBranchManifest(req);
|
|
145
|
-
const state = req?.context?.[stateKey];
|
|
146
|
-
return state?.deleted ?? new Map();
|
|
147
|
-
};
|
|
148
|
-
export const loadBranchOperation = async ({ collectionSlug, docID, req })=>{
|
|
149
|
-
const branch = resolveBranch(req);
|
|
150
|
-
const state = req.context?.[stateKey];
|
|
151
|
-
const operationKey = `${collectionSlug}:${String(docID)}`;
|
|
152
|
-
const cachedOperation = state?.operations.get(operationKey);
|
|
153
|
-
if (cachedOperation || branch === MAIN_BRANCH) {
|
|
154
|
-
return cachedOperation;
|
|
155
|
-
}
|
|
156
|
-
const change = await req.payload.db.findOne({
|
|
157
|
-
branch: false,
|
|
158
|
-
collection: 'payload-branch-changes',
|
|
159
|
-
req,
|
|
160
|
-
where: {
|
|
161
|
-
and: [
|
|
162
|
-
{
|
|
163
|
-
branch: {
|
|
164
|
-
equals: branch
|
|
165
|
-
}
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
collectionSlug: {
|
|
169
|
-
equals: collectionSlug
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
documentID: {
|
|
174
|
-
equals: String(docID)
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
]
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
const operation = change?.operation;
|
|
181
|
-
if (operation === 'create' || operation === 'delete' || operation === 'update') {
|
|
182
|
-
state?.operations.set(operationKey, operation);
|
|
183
|
-
return operation;
|
|
184
|
-
}
|
|
185
|
-
return undefined;
|
|
186
|
-
};
|
|
187
|
-
/**
|
|
188
|
-
* A copy of the request that can resolve a branch of its own.
|
|
189
|
-
*
|
|
190
|
-
* The resolved branch and its manifest are memoized on `req.context`, so one
|
|
191
|
-
* request reads one branch — an explicit `branch` argument passed alongside a
|
|
192
|
-
* request that has already resolved a different one is otherwise accepted and
|
|
193
|
-
* ignored. Reading the same document on two branches, as a diff does, therefore
|
|
194
|
-
* needs a request per branch.
|
|
195
|
-
*
|
|
196
|
-
* The copy carries the transaction, the user and the locale, so it is the same
|
|
197
|
-
* request in every respect but the branch. Its dataloader is its own, because
|
|
198
|
-
* the dataloader's cache key does not include the branch and would otherwise
|
|
199
|
-
* serve one branch's document to the other.
|
|
200
|
-
*/ export const isolateBranchState = (req)=>{
|
|
201
|
-
const isolated = {
|
|
202
|
-
...req,
|
|
203
|
-
context: {
|
|
204
|
-
...req.context
|
|
205
|
-
},
|
|
206
|
-
headers: req.headers
|
|
207
|
-
};
|
|
208
|
-
resetBranchState(isolated);
|
|
209
|
-
isolated.payloadDataLoader = getDataLoader(isolated);
|
|
210
|
-
return isolated;
|
|
211
|
-
};
|
|
212
|
-
/**
|
|
213
|
-
* The branch's own row, read once per request.
|
|
214
|
-
*
|
|
215
|
-
* Three separate checks want it — whether the branch is closed, whether a merged branch
|
|
216
|
-
* should reopen, and whether the caller may see it at all — and each used to read it
|
|
217
|
-
* again. This is the trusted read (`overrideAccess: true`), so it deliberately does *not*
|
|
218
|
-
* serve the access-checked visibility gate: a row fetched without access control must
|
|
219
|
-
* never stand in for one fetched with it.
|
|
220
|
-
*/ export const loadBranchRow = async ({ branch, req })=>{
|
|
221
|
-
const context = req.context;
|
|
222
|
-
const state = context?.[stateKey];
|
|
223
|
-
if (state && state.branch === branch && state.branchRow !== undefined) {
|
|
224
|
-
return state.branchRow;
|
|
225
|
-
}
|
|
226
|
-
const { docs } = await req.payload.find({
|
|
227
|
-
collection: branchesCollectionSlug,
|
|
228
|
-
depth: 0,
|
|
229
|
-
limit: 1,
|
|
230
|
-
overrideAccess: true,
|
|
231
|
-
pagination: false,
|
|
232
|
-
req,
|
|
233
|
-
select: {
|
|
234
|
-
slug: true,
|
|
235
|
-
status: true
|
|
236
|
-
},
|
|
237
|
-
where: {
|
|
238
|
-
slug: {
|
|
239
|
-
equals: branch
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
const row = docs[0] ?? null;
|
|
244
|
-
if (state && state.branch === branch) {
|
|
245
|
-
state.branchRow = row;
|
|
246
|
-
}
|
|
247
|
-
return row;
|
|
248
|
-
};
|
|
249
|
-
/** Replaces the memoized branch row after something changed it. */ export const setBranchRow = ({ branch, req, row })=>{
|
|
250
|
-
const context = req.context;
|
|
251
|
-
const state = context?.[stateKey];
|
|
252
|
-
if (state && state.branch === branch) {
|
|
253
|
-
state.branchRow = row;
|
|
254
|
-
}
|
|
255
|
-
};
|
|
256
|
-
/**
|
|
257
|
-
* Records a newly forked document in the memoized manifest.
|
|
258
|
-
*
|
|
259
|
-
* Cheaper than dropping the manifest and reloading it, which is what a fork used to do:
|
|
260
|
-
* the manifest needs to know the branch now shadows this document, and that is one ID —
|
|
261
|
-
* not a reason to re-read every change row on the branch. Reads later in the same request
|
|
262
|
-
* then exclude main's copy without a second query.
|
|
263
|
-
*/ export const addToBranchManifest = ({ collectionSlug, docID, operation, req })=>{
|
|
264
|
-
const context = req.context;
|
|
265
|
-
const state = context?.[stateKey];
|
|
266
|
-
// Not loaded yet is the common case on a write-only request: the next read loads it
|
|
267
|
-
// fresh, and it will include this document.
|
|
268
|
-
if (!state?.manifestLoaded) {
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
271
|
-
const existing = state.manifest.get(collectionSlug);
|
|
272
|
-
if (existing) {
|
|
273
|
-
if (!existing.some((id)=>String(id) === String(docID))) {
|
|
274
|
-
existing.push(docID);
|
|
275
|
-
}
|
|
276
|
-
} else {
|
|
277
|
-
state.manifest.set(collectionSlug, [
|
|
278
|
-
docID
|
|
279
|
-
]);
|
|
280
|
-
}
|
|
281
|
-
state.operations.set(`${collectionSlug}:${String(docID)}`, operation);
|
|
282
|
-
};
|
|
283
|
-
/** The shadow row ID this request has already resolved for a canonical ID, if any. */ export const peekBranchRowID = ({ collectionSlug, docID, req })=>{
|
|
284
|
-
const context = req?.context;
|
|
285
|
-
const state = context?.[stateKey];
|
|
286
|
-
return state?.rowIDs.get(`${collectionSlug}:${docID}`);
|
|
287
|
-
};
|
|
288
|
-
/** Remembers a canonical ID's shadow row, so the next write does not look it up again. */ export const rememberBranchRowID = ({ collectionSlug, docID, req, rowID })=>{
|
|
289
|
-
const context = req?.context;
|
|
290
|
-
const state = context?.[stateKey];
|
|
291
|
-
state?.rowIDs.set(`${collectionSlug}:${docID}`, rowID);
|
|
292
|
-
};
|
|
293
|
-
/**
|
|
294
|
-
* The same request with branch resolution switched off.
|
|
295
|
-
*
|
|
296
|
-
* For the engines that write to `main` on a branch's behalf — merge and discard. They
|
|
297
|
-
* address shadow rows by their real primary keys and write production, so every write
|
|
298
|
-
* they make must bypass branch resolution. Passing `branch: false` per call is one
|
|
299
|
-
* omission away from a silent no-op: the merge-create promotion goes through
|
|
300
|
-
* `updateByIDOperation`, which takes no `branch` argument at all and reads the request,
|
|
301
|
-
* so a merge triggered over HTTP with `?branch=` resolved that write against the branch
|
|
302
|
-
* it was merging.
|
|
303
|
-
*
|
|
304
|
-
* Isolated rather than mutated, because the caller's request keeps its own branch — the
|
|
305
|
-
* HTTP handler still has a response to render on it.
|
|
306
|
-
*/ export const withoutBranch = (req)=>{
|
|
307
|
-
const isolated = isolateBranchState(req);
|
|
308
|
-
// The same sentinel `createPayloadRequest({ branch: false })` sets, rather than a `branch`
|
|
309
|
-
// of our own: `req.branch` alone is not enough, because resolution falls back to the
|
|
310
|
-
// query string behind it.
|
|
311
|
-
isolated.branch = undefined;
|
|
312
|
-
isolated.context._branchBypass = true;
|
|
313
|
-
return isolated;
|
|
314
|
-
};
|
|
315
|
-
/**
|
|
316
|
-
* The branch this request has already resolved, or `undefined` if it has not.
|
|
317
|
-
*
|
|
318
|
-
* Deliberately does not resolve: callers use this to find out whether they are about to
|
|
319
|
-
* *change* the branch, and resolving here would create the state they are checking for.
|
|
320
|
-
*/ export const peekResolvedBranch = (req)=>{
|
|
321
|
-
const context = req?.context;
|
|
322
|
-
return context?.[stateKey]?.branch;
|
|
323
|
-
};
|
|
324
|
-
/** Clears memoized branch state, for tests and for cross-branch reads. */ export const resetBranchState = (req)=>{
|
|
325
|
-
const context = req.context;
|
|
326
|
-
if (context) {
|
|
327
|
-
delete context[stateKey];
|
|
328
|
-
}
|
|
329
|
-
};
|
|
330
|
-
/** Clears memoized branch and document state after a write changes what this request can read. */ export const refreshBranchState = (req)=>{
|
|
331
|
-
resetBranchState(req);
|
|
332
|
-
refreshRequestDataLoader(req);
|
|
333
|
-
};
|
|
334
|
-
/** Clears documents cached while populating relationships on this request. */ export const refreshRequestDataLoader = (req)=>{
|
|
335
|
-
req.payloadDataLoader = getDataLoader(req);
|
|
336
|
-
};
|
|
337
|
-
/**
|
|
338
|
-
* The manifest already loaded for this request, without loading it.
|
|
339
|
-
*
|
|
340
|
-
* For synchronous callers such as join query builders, which run after the
|
|
341
|
-
* top-level read has resolved the branch and populated the manifest.
|
|
342
|
-
*/ export const peekBranchManifest = (req)=>{
|
|
343
|
-
const context = req?.context;
|
|
344
|
-
const state = context?.[stateKey];
|
|
345
|
-
return state?.manifest ?? new Map();
|
|
346
|
-
};
|
|
347
|
-
/**
|
|
348
|
-
* The branch deletions already loaded for this request, without loading them.
|
|
349
|
-
*
|
|
350
|
-
* Version join builders are synchronous. They run after the top-level branch query has loaded the
|
|
351
|
-
* manifest, which also records deletions, so they can reuse that state without another query.
|
|
352
|
-
*/ export const peekBranchDeletions = (req)=>{
|
|
353
|
-
const context = req?.context;
|
|
354
|
-
const state = context?.[stateKey];
|
|
355
|
-
return state?.deleted ?? new Map();
|
|
356
|
-
};
|
|
357
|
-
/** The authoritative operation for one collection document in the loaded change manifest. */ export const peekBranchOperation = ({ collectionSlug, docID, req })=>{
|
|
358
|
-
const context = req?.context;
|
|
359
|
-
const state = context?.[stateKey];
|
|
360
|
-
return state?.operations.get(`${collectionSlug}:${String(docID)}`);
|
|
361
|
-
};
|
|
362
|
-
|
|
363
|
-
//# sourceMappingURL=resolveBranch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/branching/resolveBranch.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\nimport type { BranchOperation, SanitizedBranchingConfig } from './types.js'\n\nimport { getDataLoader } from '../collections/dataloader.js'\nimport { branchesCollectionSlug, MAIN_BRANCH } from './types.js'\n\n/**\n * Per-request branch state, memoized on `req` so a page rendering many\n * collections resolves the branch once and loads the change manifest once.\n */\ntype BranchState = {\n branch: string\n /** The branch's own row, read once per request rather than per check. */\n branchRow?: null | Record<string, unknown>\n /** Canonical IDs tombstoned on this branch, keyed by collection slug. */\n deleted: Map<string, (number | string)[]>\n /** Canonical shadowed document IDs, keyed by collection slug. */\n manifest: Map<string, (number | string)[]>\n manifestLoaded: boolean\n /** Change-record operation keyed by collection and canonical document ID. */\n operations: Map<string, BranchOperation>\n /** Canonical ID → shadow row primary key, for the writes that resolved it. */\n rowIDs: Map<string, number | string>\n}\n\nconst stateKey = '_branchState'\n\nconst getBranchingConfig = (req: PayloadRequest): SanitizedBranchingConfig | undefined =>\n req?.payload?.config?.branching\n\n/**\n * Resolves the active branch for a request.\n *\n * The branch is an argument, exactly like `locale` and `depth`: it is whatever\n * the caller passed, and `main` when they passed nothing. Nothing is read from\n * storage here — no preference lookup, no cookie — so an unbranched request\n * costs nothing beyond this function.\n *\n * Where the admin UI's persisted selection turns into that argument is the\n * admin UI's business (`initAdminContext`), the same division `locale` already uses.\n *\n * Precedence, highest first:\n * 1. explicit Local API argument (`req.branch`, set by the caller)\n * 2. `branch` query param\n * 3. `main`\n */\nexport const resolveBranch = (req: PayloadRequest): string => {\n const branching = getBranchingConfig(req)\n\n if (!branching?.enabled) {\n return MAIN_BRANCH\n }\n\n const context = req.context as Record<string, unknown> | undefined\n const existing = context?.[stateKey] as BranchState | undefined\n\n if (existing) {\n return existing.branch\n }\n\n // The bypass sentinel `createPayloadRequest` sets for `branch: false`. Honoured here and not\n // only at the database layer, because a request told to ignore branching must not\n // report a branch to anything that asks — a `branch: false` request built from an HTTP\n // request still carries `?branch=` in its query, and falling through to it made the\n // merge engine resolve against the very branch it was merging.\n if (context?._branchBypass) {\n req.branch = MAIN_BRANCH\n\n return MAIN_BRANCH\n }\n\n const branch = resolveBranchFromRequest(req) ?? MAIN_BRANCH\n\n if (context) {\n context[stateKey] = {\n branch,\n deleted: new Map(),\n manifest: new Map(),\n manifestLoaded: false,\n operations: new Map(),\n rowIDs: new Map(),\n } satisfies BranchState\n }\n\n req.branch = branch\n\n return branch\n}\n\n/**\n * The branch the caller asked for, whether through the Local API option or the\n * `branch` query param — the same two ways `locale` is supplied.\n */\nconst resolveBranchFromRequest = (req: PayloadRequest): string | undefined => {\n if (typeof req.branch === 'string' && req.branch) {\n return req.branch\n }\n\n if (typeof req.query?.branch === 'string' && req.query.branch) {\n return req.query.branch\n }\n\n return undefined\n}\n\n/**\n * Loads every change the active branch has made, in one query, and groups it\n * by collection in memory.\n *\n * One query per request rather than per collection: a request touching a dozen\n * collections still issues a single manifest read. Bounded by branch size, not\n * table size.\n */\nexport const loadBranchManifest = async (\n req: PayloadRequest,\n): Promise<Map<string, (number | string)[]>> => {\n const branch = resolveBranch(req)\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n if (!state || branch === MAIN_BRANCH) {\n return new Map()\n }\n\n if (state.manifestLoaded) {\n return state.manifest\n }\n\n // Marked loaded up front so the manifest read below — which itself goes\n // through the adapter — cannot recurse back into loading the manifest.\n state.manifestLoaded = true\n\n const { docs } = await req.payload.db.find({\n collection: 'payload-branch-changes',\n limit: 0,\n pagination: false,\n req,\n where: {\n and: [{ branch: { equals: branch } }, { entityType: { equals: 'collection' } }],\n },\n })\n\n for (const change of docs as Record<string, any>[]) {\n const slug = change.collectionSlug as string\n const docID = change.doc?.value ?? change.doc\n\n if (!slug || docID === undefined || docID === null) {\n continue\n }\n\n const existing = state.manifest.get(slug)\n\n if (existing) {\n existing.push(docID)\n } else {\n state.manifest.set(slug, [docID])\n }\n\n if (change.operation === 'delete') {\n const deleted = state.deleted.get(slug)\n\n if (deleted) {\n deleted.push(docID)\n } else {\n state.deleted.set(slug, [docID])\n }\n }\n\n if (\n change.operation === 'create' ||\n change.operation === 'delete' ||\n change.operation === 'update'\n ) {\n state.operations.set(`${slug}:${String(docID)}`, change.operation)\n }\n }\n\n return state.manifest\n}\n\n/**\n * Canonical IDs the active branch has tombstoned, keyed by collection slug.\n *\n * Version and collection queries both exclude these documents by canonical\n * identity from the authoritative change manifest.\n *\n * Loaded from the same manifest query, so asking for this costs nothing beyond\n * the read the request already made.\n */\nexport const loadBranchDeletions = async (\n req: PayloadRequest,\n): Promise<Map<string, (number | string)[]>> => {\n await loadBranchManifest(req)\n\n const state = (req?.context as Record<string, unknown> | undefined)?.[stateKey] as\n | BranchState\n | undefined\n\n return state?.deleted ?? new Map()\n}\n\nexport const loadBranchOperation = async ({\n collectionSlug,\n docID,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n req: PayloadRequest\n}): Promise<BranchOperation | undefined> => {\n const branch = resolveBranch(req)\n const state = (req.context as Record<string, unknown> | undefined)?.[stateKey] as\n | BranchState\n | undefined\n const operationKey = `${collectionSlug}:${String(docID)}`\n const cachedOperation = state?.operations.get(operationKey)\n\n if (cachedOperation || branch === MAIN_BRANCH) {\n return cachedOperation\n }\n\n const change = await req.payload.db.findOne({\n branch: false,\n collection: 'payload-branch-changes',\n req,\n where: {\n and: [\n { branch: { equals: branch } },\n { collectionSlug: { equals: collectionSlug } },\n { documentID: { equals: String(docID) } },\n ],\n },\n })\n const operation = (change as { operation?: unknown } | null)?.operation\n\n if (operation === 'create' || operation === 'delete' || operation === 'update') {\n state?.operations.set(operationKey, operation)\n\n return operation\n }\n\n return undefined\n}\n\n/**\n * A copy of the request that can resolve a branch of its own.\n *\n * The resolved branch and its manifest are memoized on `req.context`, so one\n * request reads one branch — an explicit `branch` argument passed alongside a\n * request that has already resolved a different one is otherwise accepted and\n * ignored. Reading the same document on two branches, as a diff does, therefore\n * needs a request per branch.\n *\n * The copy carries the transaction, the user and the locale, so it is the same\n * request in every respect but the branch. Its dataloader is its own, because\n * the dataloader's cache key does not include the branch and would otherwise\n * serve one branch's document to the other.\n */\nexport const isolateBranchState = (req: PayloadRequest): PayloadRequest => {\n const isolated = { ...req, context: { ...req.context }, headers: req.headers } as PayloadRequest\n\n resetBranchState(isolated)\n isolated.payloadDataLoader = getDataLoader(isolated)\n\n return isolated\n}\n\n/**\n * The branch's own row, read once per request.\n *\n * Three separate checks want it — whether the branch is closed, whether a merged branch\n * should reopen, and whether the caller may see it at all — and each used to read it\n * again. This is the trusted read (`overrideAccess: true`), so it deliberately does *not*\n * serve the access-checked visibility gate: a row fetched without access control must\n * never stand in for one fetched with it.\n */\nexport const loadBranchRow = async ({\n branch,\n req,\n}: {\n branch: string\n req: PayloadRequest\n}): Promise<null | Record<string, unknown>> => {\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n if (state && state.branch === branch && state.branchRow !== undefined) {\n return state.branchRow\n }\n\n const { docs } = await req.payload.find({\n collection: branchesCollectionSlug,\n depth: 0,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n req,\n select: { slug: true, status: true },\n where: { slug: { equals: branch } },\n })\n\n const row = (docs[0] as Record<string, unknown> | undefined) ?? null\n\n if (state && state.branch === branch) {\n state.branchRow = row\n }\n\n return row\n}\n\n/** Replaces the memoized branch row after something changed it. */\nexport const setBranchRow = ({\n branch,\n req,\n row,\n}: {\n branch: string\n req: PayloadRequest\n row: null | Record<string, unknown>\n}): void => {\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n if (state && state.branch === branch) {\n state.branchRow = row\n }\n}\n\n/**\n * Records a newly forked document in the memoized manifest.\n *\n * Cheaper than dropping the manifest and reloading it, which is what a fork used to do:\n * the manifest needs to know the branch now shadows this document, and that is one ID —\n * not a reason to re-read every change row on the branch. Reads later in the same request\n * then exclude main's copy without a second query.\n */\nexport const addToBranchManifest = ({\n collectionSlug,\n docID,\n operation,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n operation: BranchOperation\n req: PayloadRequest\n}): void => {\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n // Not loaded yet is the common case on a write-only request: the next read loads it\n // fresh, and it will include this document.\n if (!state?.manifestLoaded) {\n return\n }\n\n const existing = state.manifest.get(collectionSlug)\n\n if (existing) {\n if (!existing.some((id) => String(id) === String(docID))) {\n existing.push(docID)\n }\n } else {\n state.manifest.set(collectionSlug, [docID])\n }\n\n state.operations.set(`${collectionSlug}:${String(docID)}`, operation)\n}\n\n/** The shadow row ID this request has already resolved for a canonical ID, if any. */\nexport const peekBranchRowID = ({\n collectionSlug,\n docID,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n req?: Partial<PayloadRequest>\n}): number | string | undefined => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.rowIDs.get(`${collectionSlug}:${docID}`)\n}\n\n/** Remembers a canonical ID's shadow row, so the next write does not look it up again. */\nexport const rememberBranchRowID = ({\n collectionSlug,\n docID,\n req,\n rowID,\n}: {\n collectionSlug: string\n docID: number | string\n req?: Partial<PayloadRequest>\n rowID: number | string\n}): void => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n state?.rowIDs.set(`${collectionSlug}:${docID}`, rowID)\n}\n\n/**\n * The same request with branch resolution switched off.\n *\n * For the engines that write to `main` on a branch's behalf — merge and discard. They\n * address shadow rows by their real primary keys and write production, so every write\n * they make must bypass branch resolution. Passing `branch: false` per call is one\n * omission away from a silent no-op: the merge-create promotion goes through\n * `updateByIDOperation`, which takes no `branch` argument at all and reads the request,\n * so a merge triggered over HTTP with `?branch=` resolved that write against the branch\n * it was merging.\n *\n * Isolated rather than mutated, because the caller's request keeps its own branch — the\n * HTTP handler still has a response to render on it.\n */\nexport const withoutBranch = (req: PayloadRequest): PayloadRequest => {\n const isolated = isolateBranchState(req)\n\n // The same sentinel `createPayloadRequest({ branch: false })` sets, rather than a `branch`\n // of our own: `req.branch` alone is not enough, because resolution falls back to the\n // query string behind it.\n isolated.branch = undefined\n ;(isolated.context as Record<string, unknown>)._branchBypass = true\n\n return isolated\n}\n\n/**\n * The branch this request has already resolved, or `undefined` if it has not.\n *\n * Deliberately does not resolve: callers use this to find out whether they are about to\n * *change* the branch, and resolving here would create the state they are checking for.\n */\nexport const peekResolvedBranch = (req?: Partial<PayloadRequest>): string | undefined => {\n const context = req?.context as Record<string, unknown> | undefined\n\n return (context?.[stateKey] as BranchState | undefined)?.branch\n}\n\n/** Clears memoized branch state, for tests and for cross-branch reads. */\nexport const resetBranchState = (req: PayloadRequest): void => {\n const context = req.context as Record<string, unknown> | undefined\n\n if (context) {\n delete context[stateKey]\n }\n}\n\n/** Clears memoized branch and document state after a write changes what this request can read. */\nexport const refreshBranchState = (req: PayloadRequest): void => {\n resetBranchState(req)\n refreshRequestDataLoader(req)\n}\n\n/** Clears documents cached while populating relationships on this request. */\nexport const refreshRequestDataLoader = (req: PayloadRequest): void => {\n req.payloadDataLoader = getDataLoader(req)\n}\n\n/**\n * The manifest already loaded for this request, without loading it.\n *\n * For synchronous callers such as join query builders, which run after the\n * top-level read has resolved the branch and populated the manifest.\n */\nexport const peekBranchManifest = (req: PayloadRequest): Map<string, (number | string)[]> => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.manifest ?? new Map()\n}\n\n/**\n * The branch deletions already loaded for this request, without loading them.\n *\n * Version join builders are synchronous. They run after the top-level branch query has loaded the\n * manifest, which also records deletions, so they can reuse that state without another query.\n */\nexport const peekBranchDeletions = (req: PayloadRequest): Map<string, (number | string)[]> => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.deleted ?? new Map()\n}\n\n/** The authoritative operation for one collection document in the loaded change manifest. */\nexport const peekBranchOperation = ({\n collectionSlug,\n docID,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n req?: Partial<PayloadRequest>\n}): BranchOperation | undefined => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.operations.get(`${collectionSlug}:${String(docID)}`)\n}\n"],"names":["getDataLoader","branchesCollectionSlug","MAIN_BRANCH","stateKey","getBranchingConfig","req","payload","config","branching","resolveBranch","enabled","context","existing","branch","_branchBypass","resolveBranchFromRequest","deleted","Map","manifest","manifestLoaded","operations","rowIDs","query","undefined","loadBranchManifest","state","docs","db","find","collection","limit","pagination","where","and","equals","entityType","change","slug","collectionSlug","docID","doc","value","get","push","set","operation","String","loadBranchDeletions","loadBranchOperation","operationKey","cachedOperation","findOne","documentID","isolateBranchState","isolated","headers","resetBranchState","payloadDataLoader","loadBranchRow","branchRow","depth","overrideAccess","select","status","row","setBranchRow","addToBranchManifest","some","id","peekBranchRowID","rememberBranchRowID","rowID","withoutBranch","peekResolvedBranch","refreshBranchState","refreshRequestDataLoader","peekBranchManifest","peekBranchDeletions","peekBranchOperation"],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { Access } from '../config/types.js';
|
|
2
|
-
import type { SanitizedBranchingConfig } from './types.js';
|
|
3
|
-
export type BranchAction = 'discardBranch' | 'mergeBranch';
|
|
4
|
-
export declare const resolveBranchActionAccess: ({ action, branching, }: {
|
|
5
|
-
action: BranchAction;
|
|
6
|
-
branching: SanitizedBranchingConfig;
|
|
7
|
-
}) => Access;
|
|
8
|
-
//# sourceMappingURL=resolveBranchActionAccess.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBranchActionAccess.d.ts","sourceRoot":"","sources":["../../src/branching/resolveBranchActionAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAI1D,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,CAAA;AAE1D,eAAO,MAAM,yBAAyB,2BAGnC;IACD,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,wBAAwB,CAAA;CACpC,KAAG,MAMH,CAAA"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { defaultAccess } from '../auth/defaultAccess.js';
|
|
2
|
-
export const resolveBranchActionAccess = ({ action, branching })=>{
|
|
3
|
-
if (action === 'mergeBranch') {
|
|
4
|
-
return branching.access?.mergeBranch ?? branching.access?.readBranch ?? defaultAccess;
|
|
5
|
-
}
|
|
6
|
-
return branching.access?.discardBranch ?? branching.access?.deleteBranch ?? defaultAccess;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=resolveBranchActionAccess.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/branching/resolveBranchActionAccess.ts"],"sourcesContent":["import type { Access } from '../config/types.js'\nimport type { SanitizedBranchingConfig } from './types.js'\n\nimport { defaultAccess } from '../auth/defaultAccess.js'\n\nexport type BranchAction = 'discardBranch' | 'mergeBranch'\n\nexport const resolveBranchActionAccess = ({\n action,\n branching,\n}: {\n action: BranchAction\n branching: SanitizedBranchingConfig\n}): Access => {\n if (action === 'mergeBranch') {\n return branching.access?.mergeBranch ?? branching.access?.readBranch ?? defaultAccess\n }\n\n return branching.access?.discardBranch ?? branching.access?.deleteBranch ?? defaultAccess\n}\n"],"names":["defaultAccess","resolveBranchActionAccess","action","branching","access","mergeBranch","readBranch","discardBranch","deleteBranch"],"mappings":"AAGA,SAASA,aAAa,QAAQ,2BAA0B;AAIxD,OAAO,MAAMC,4BAA4B,CAAC,EACxCC,MAAM,EACNC,SAAS,EAIV;IACC,IAAID,WAAW,eAAe;QAC5B,OAAOC,UAAUC,MAAM,EAAEC,eAAeF,UAAUC,MAAM,EAAEE,cAAcN;IAC1E;IAEA,OAAOG,UAAUC,MAAM,EAAEG,iBAAiBJ,UAAUC,MAAM,EAAEI,gBAAgBR;AAC9E,EAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import type { PayloadRequest, Where } from '../types/index.js';
|
|
2
|
-
type Args = {
|
|
3
|
-
/**
|
|
4
|
-
* Explicit override. `false` bypasses branching entirely — used by the merge
|
|
5
|
-
* engine, which must reach shadow rows by their real primary key, and by
|
|
6
|
-
* cross-branch reads such as diff views.
|
|
7
|
-
*/
|
|
8
|
-
branch?: false | string;
|
|
9
|
-
collectionSlug?: string;
|
|
10
|
-
globalSlug?: string;
|
|
11
|
-
req?: Partial<PayloadRequest>;
|
|
12
|
-
where: undefined | Where;
|
|
13
|
-
};
|
|
14
|
-
export type BranchReadState = {
|
|
15
|
-
branch: string;
|
|
16
|
-
useBranching: boolean;
|
|
17
|
-
};
|
|
18
|
-
export declare const resolveBranchReadState: ({ branch: branchOverride, collectionSlug, globalSlug, req, }: Omit<Args, 'where'>) => BranchReadState;
|
|
19
|
-
/**
|
|
20
|
-
* The single entry point adapters call to make a read branch-aware.
|
|
21
|
-
*
|
|
22
|
-
* Lives in `payload` rather than in each adapter so that Mongo and Drizzle
|
|
23
|
-
* cannot drift apart on branch semantics — adapters supply only the query
|
|
24
|
-
* translation they already do.
|
|
25
|
-
*
|
|
26
|
-
* Returns `where` untouched when branching is off, when the entity is not
|
|
27
|
-
* branch-enabled, or when the caller opted out, so a branching-disabled config
|
|
28
|
-
* takes the same code path it does today.
|
|
29
|
-
*/
|
|
30
|
-
export declare const resolveBranchQuery: ({ branch: branchOverride, collectionSlug, globalSlug, req, where, }: Args) => Promise<undefined | Where>;
|
|
31
|
-
/**
|
|
32
|
-
* Synchronous branch predicate, for query builders that are not async.
|
|
33
|
-
*
|
|
34
|
-
* Reads the change manifest that `resolveBranchQuery` has already loaded and
|
|
35
|
-
* memoized on the request earlier in the same read. Returns `null` when
|
|
36
|
-
* branching is inactive for the entity, so callers can skip cleanly.
|
|
37
|
-
*
|
|
38
|
-
* Join subqueries need this: they are assembled inside synchronous query
|
|
39
|
-
* builders, but must carry the same branch predicate as the top-level read or
|
|
40
|
-
* a branch would see main's related documents.
|
|
41
|
-
*/
|
|
42
|
-
export declare const getBranchPredicateSync: ({ branch: branchOverride, collectionSlug, req, }: {
|
|
43
|
-
branch?: false | string;
|
|
44
|
-
collectionSlug: string;
|
|
45
|
-
req?: Partial<PayloadRequest>;
|
|
46
|
-
}) => null | Where;
|
|
47
|
-
export {};
|
|
48
|
-
//# sourceMappingURL=resolveBranchQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBranchQuery.d.ts","sourceRoot":"","sources":["../../src/branching/resolveBranchQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAa9D,KAAK,IAAI,GAAG;IACV;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,KAAK,EAAE,SAAS,GAAG,KAAK,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,sBAAsB,iEAKhC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAG,eAkCxB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,wEAM5B,IAAI,KAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CA+DlC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,qDAIhC;IACD,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,KAAG,IAAI,GAAG,KA2BV,CAAA"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { appendBranchFilter } from './appendBranchFilter.js';
|
|
2
|
-
import { rewriteBranchIDs } from './branchIDs.js';
|
|
3
|
-
import { loadBranchDeletions, loadBranchManifest, peekBranchDeletions, peekBranchManifest, resolveBranch } from './resolveBranch.js';
|
|
4
|
-
import { MAIN_BRANCH } from './types.js';
|
|
5
|
-
export const resolveBranchReadState = ({ branch: branchOverride, collectionSlug, globalSlug, req })=>{
|
|
6
|
-
const branching = req?.payload?.config?.branching;
|
|
7
|
-
const isBranchable = collectionSlug ? Boolean(branching?.branchableCollections.has(collectionSlug)) : globalSlug ? Boolean(branching?.branchableGlobals.has(globalSlug)) : false;
|
|
8
|
-
const isRequestBypassed = Boolean(req?.context?._branchBypass);
|
|
9
|
-
const isBypassed = branchOverride === false || isRequestBypassed;
|
|
10
|
-
if (isRequestBypassed && req?.payload) {
|
|
11
|
-
resolveBranch(req);
|
|
12
|
-
}
|
|
13
|
-
if (!branching?.enabled || !isBranchable || isBypassed) {
|
|
14
|
-
return {
|
|
15
|
-
branch: typeof branchOverride === 'string' ? branchOverride : MAIN_BRANCH,
|
|
16
|
-
useBranching: false
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
const branch = typeof branchOverride === 'string' ? branchOverride : req?.payload ? resolveBranch(req) : MAIN_BRANCH;
|
|
20
|
-
return {
|
|
21
|
-
branch,
|
|
22
|
-
useBranching: branch !== MAIN_BRANCH
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* The single entry point adapters call to make a read branch-aware.
|
|
27
|
-
*
|
|
28
|
-
* Lives in `payload` rather than in each adapter so that Mongo and Drizzle
|
|
29
|
-
* cannot drift apart on branch semantics — adapters supply only the query
|
|
30
|
-
* translation they already do.
|
|
31
|
-
*
|
|
32
|
-
* Returns `where` untouched when branching is off, when the entity is not
|
|
33
|
-
* branch-enabled, or when the caller opted out, so a branching-disabled config
|
|
34
|
-
* takes the same code path it does today.
|
|
35
|
-
*/ export const resolveBranchQuery = async ({ branch: branchOverride, collectionSlug, globalSlug, req, where })=>{
|
|
36
|
-
if (branchOverride === false || !req?.payload) {
|
|
37
|
-
return where;
|
|
38
|
-
}
|
|
39
|
-
// Local API `branch: false` bypass, carried on context so it survives the
|
|
40
|
-
// hop from operation options into the adapter.
|
|
41
|
-
if (req.context?._branchBypass) {
|
|
42
|
-
return where;
|
|
43
|
-
}
|
|
44
|
-
const branching = req.payload.config?.branching;
|
|
45
|
-
if (!branching?.enabled) {
|
|
46
|
-
return where;
|
|
47
|
-
}
|
|
48
|
-
const isBranchable = collectionSlug ? branching.branchableCollections.has(collectionSlug) : globalSlug ? branching.branchableGlobals.has(globalSlug) : false;
|
|
49
|
-
if (!isBranchable) {
|
|
50
|
-
return where;
|
|
51
|
-
}
|
|
52
|
-
const branch = branchOverride ?? resolveBranch(req);
|
|
53
|
-
if (branch === MAIN_BRANCH) {
|
|
54
|
-
return appendBranchFilter({
|
|
55
|
-
branch,
|
|
56
|
-
deletedIDs: [],
|
|
57
|
-
enabled: true,
|
|
58
|
-
shadowedIDs: [],
|
|
59
|
-
where: where ?? {}
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
const [manifest, deletions] = await Promise.all([
|
|
63
|
-
loadBranchManifest(req),
|
|
64
|
-
loadBranchDeletions(req)
|
|
65
|
-
]);
|
|
66
|
-
const shadowedIDs = collectionSlug ? manifest.get(collectionSlug) ?? [] : [];
|
|
67
|
-
const deletedIDs = collectionSlug ? deletions.get(collectionSlug) ?? [] : [];
|
|
68
|
-
// A shadow row's primary key is not the document's canonical ID, so any `id`
|
|
69
|
-
// constraint has to be redirected before the branch predicate is applied.
|
|
70
|
-
const rewritten = rewriteBranchIDs(where ?? {});
|
|
71
|
-
if (shadowedIDs.length > branching.maxShadowedIDs) {
|
|
72
|
-
req.payload.logger.warn(`Branch "${branch}" has shadowed ${shadowedIDs.length} documents in "${collectionSlug}", above maxShadowedIDs (${branching.maxShadowedIDs}). Read performance will degrade.`);
|
|
73
|
-
}
|
|
74
|
-
return appendBranchFilter({
|
|
75
|
-
branch,
|
|
76
|
-
deletedIDs,
|
|
77
|
-
enabled: true,
|
|
78
|
-
shadowedIDs,
|
|
79
|
-
where: rewritten ?? {}
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Synchronous branch predicate, for query builders that are not async.
|
|
84
|
-
*
|
|
85
|
-
* Reads the change manifest that `resolveBranchQuery` has already loaded and
|
|
86
|
-
* memoized on the request earlier in the same read. Returns `null` when
|
|
87
|
-
* branching is inactive for the entity, so callers can skip cleanly.
|
|
88
|
-
*
|
|
89
|
-
* Join subqueries need this: they are assembled inside synchronous query
|
|
90
|
-
* builders, but must carry the same branch predicate as the top-level read or
|
|
91
|
-
* a branch would see main's related documents.
|
|
92
|
-
*/ export const getBranchPredicateSync = ({ branch: branchOverride, collectionSlug, req })=>{
|
|
93
|
-
if (branchOverride === false || !req?.payload) {
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
if (req.context?._branchBypass) {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
const branching = req.payload.config?.branching;
|
|
100
|
-
if (!branching?.enabled || !branching.branchableCollections.has(collectionSlug)) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
const branch = branchOverride ?? resolveBranch(req);
|
|
104
|
-
const shadowedIDs = branch === MAIN_BRANCH ? [] : peekBranchManifest(req).get(collectionSlug) ?? [];
|
|
105
|
-
const deletedIDs = branch === MAIN_BRANCH ? [] : peekBranchDeletions(req).get(collectionSlug) ?? [];
|
|
106
|
-
return appendBranchFilter({
|
|
107
|
-
branch,
|
|
108
|
-
deletedIDs,
|
|
109
|
-
enabled: true,
|
|
110
|
-
shadowedIDs,
|
|
111
|
-
where: {}
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
//# sourceMappingURL=resolveBranchQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/branching/resolveBranchQuery.ts"],"sourcesContent":["import type { PayloadRequest, Where } from '../types/index.js'\n\nimport { appendBranchFilter } from './appendBranchFilter.js'\nimport { rewriteBranchIDs } from './branchIDs.js'\nimport {\n loadBranchDeletions,\n loadBranchManifest,\n peekBranchDeletions,\n peekBranchManifest,\n resolveBranch,\n} from './resolveBranch.js'\nimport { MAIN_BRANCH } from './types.js'\n\ntype Args = {\n /**\n * Explicit override. `false` bypasses branching entirely — used by the merge\n * engine, which must reach shadow rows by their real primary key, and by\n * cross-branch reads such as diff views.\n */\n branch?: false | string\n collectionSlug?: string\n globalSlug?: string\n req?: Partial<PayloadRequest>\n where: undefined | Where\n}\n\nexport type BranchReadState = {\n branch: string\n useBranching: boolean\n}\n\nexport const resolveBranchReadState = ({\n branch: branchOverride,\n collectionSlug,\n globalSlug,\n req,\n}: Omit<Args, 'where'>): BranchReadState => {\n const branching = req?.payload?.config?.branching\n const isBranchable = collectionSlug\n ? Boolean(branching?.branchableCollections.has(collectionSlug))\n : globalSlug\n ? Boolean(branching?.branchableGlobals.has(globalSlug))\n : false\n const isRequestBypassed = Boolean(\n (req?.context as Record<string, unknown> | undefined)?._branchBypass,\n )\n const isBypassed = branchOverride === false || isRequestBypassed\n\n if (isRequestBypassed && req?.payload) {\n resolveBranch(req as PayloadRequest)\n }\n\n if (!branching?.enabled || !isBranchable || isBypassed) {\n return {\n branch: typeof branchOverride === 'string' ? branchOverride : MAIN_BRANCH,\n useBranching: false,\n }\n }\n\n const branch =\n typeof branchOverride === 'string'\n ? branchOverride\n : req?.payload\n ? resolveBranch(req as PayloadRequest)\n : MAIN_BRANCH\n\n return {\n branch,\n useBranching: branch !== MAIN_BRANCH,\n }\n}\n\n/**\n * The single entry point adapters call to make a read branch-aware.\n *\n * Lives in `payload` rather than in each adapter so that Mongo and Drizzle\n * cannot drift apart on branch semantics — adapters supply only the query\n * translation they already do.\n *\n * Returns `where` untouched when branching is off, when the entity is not\n * branch-enabled, or when the caller opted out, so a branching-disabled config\n * takes the same code path it does today.\n */\nexport const resolveBranchQuery = async ({\n branch: branchOverride,\n collectionSlug,\n globalSlug,\n req,\n where,\n}: Args): Promise<undefined | Where> => {\n if (branchOverride === false || !req?.payload) {\n return where\n }\n\n // Local API `branch: false` bypass, carried on context so it survives the\n // hop from operation options into the adapter.\n if ((req.context as Record<string, unknown> | undefined)?._branchBypass) {\n return where\n }\n\n const branching = req.payload.config?.branching\n\n if (!branching?.enabled) {\n return where\n }\n\n const isBranchable = collectionSlug\n ? branching.branchableCollections.has(collectionSlug)\n : globalSlug\n ? branching.branchableGlobals.has(globalSlug)\n : false\n\n if (!isBranchable) {\n return where\n }\n\n const branch = branchOverride ?? resolveBranch(req as PayloadRequest)\n\n if (branch === MAIN_BRANCH) {\n return appendBranchFilter({\n branch,\n deletedIDs: [],\n enabled: true,\n shadowedIDs: [],\n where: where ?? {},\n })\n }\n\n const [manifest, deletions] = await Promise.all([\n loadBranchManifest(req as PayloadRequest),\n loadBranchDeletions(req as PayloadRequest),\n ])\n const shadowedIDs = collectionSlug ? (manifest.get(collectionSlug) ?? []) : []\n const deletedIDs = collectionSlug ? (deletions.get(collectionSlug) ?? []) : []\n\n // A shadow row's primary key is not the document's canonical ID, so any `id`\n // constraint has to be redirected before the branch predicate is applied.\n const rewritten = rewriteBranchIDs(where ?? {})\n\n if (shadowedIDs.length > branching.maxShadowedIDs) {\n req.payload.logger.warn(\n `Branch \"${branch}\" has shadowed ${shadowedIDs.length} documents in \"${collectionSlug}\", above maxShadowedIDs (${branching.maxShadowedIDs}). Read performance will degrade.`,\n )\n }\n\n return appendBranchFilter({\n branch,\n deletedIDs,\n enabled: true,\n shadowedIDs,\n where: rewritten ?? {},\n })\n}\n\n/**\n * Synchronous branch predicate, for query builders that are not async.\n *\n * Reads the change manifest that `resolveBranchQuery` has already loaded and\n * memoized on the request earlier in the same read. Returns `null` when\n * branching is inactive for the entity, so callers can skip cleanly.\n *\n * Join subqueries need this: they are assembled inside synchronous query\n * builders, but must carry the same branch predicate as the top-level read or\n * a branch would see main's related documents.\n */\nexport const getBranchPredicateSync = ({\n branch: branchOverride,\n collectionSlug,\n req,\n}: {\n branch?: false | string\n collectionSlug: string\n req?: Partial<PayloadRequest>\n}): null | Where => {\n if (branchOverride === false || !req?.payload) {\n return null\n }\n\n if ((req.context as Record<string, unknown> | undefined)?._branchBypass) {\n return null\n }\n\n const branching = req.payload.config?.branching\n\n if (!branching?.enabled || !branching.branchableCollections.has(collectionSlug)) {\n return null\n }\n\n const branch = branchOverride ?? resolveBranch(req as PayloadRequest)\n\n const shadowedIDs =\n branch === MAIN_BRANCH\n ? []\n : (peekBranchManifest(req as PayloadRequest).get(collectionSlug) ?? [])\n const deletedIDs =\n branch === MAIN_BRANCH\n ? []\n : (peekBranchDeletions(req as PayloadRequest).get(collectionSlug) ?? [])\n\n return appendBranchFilter({ branch, deletedIDs, enabled: true, shadowedIDs, where: {} })\n}\n"],"names":["appendBranchFilter","rewriteBranchIDs","loadBranchDeletions","loadBranchManifest","peekBranchDeletions","peekBranchManifest","resolveBranch","MAIN_BRANCH","resolveBranchReadState","branch","branchOverride","collectionSlug","globalSlug","req","branching","payload","config","isBranchable","Boolean","branchableCollections","has","branchableGlobals","isRequestBypassed","context","_branchBypass","isBypassed","enabled","useBranching","resolveBranchQuery","where","deletedIDs","shadowedIDs","manifest","deletions","Promise","all","get","rewritten","length","maxShadowedIDs","logger","warn","getBranchPredicateSync"],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { PayloadRequest } from '../types/index.js';
|
|
2
|
-
type Args = {
|
|
3
|
-
branch?: false | string;
|
|
4
|
-
collectionSlug: string;
|
|
5
|
-
id: number | string;
|
|
6
|
-
req?: Partial<PayloadRequest>;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Translates a canonical document ID into the primary key of the row that the
|
|
10
|
-
* active branch should actually write to.
|
|
11
|
-
*
|
|
12
|
-
* A canonical ID is the only identity the API exposes: on a branch it addresses
|
|
13
|
-
* the branch's own copy, on main it addresses the main row. Reads resolve this
|
|
14
|
-
* through the `where`-tree rewrite; writes cannot, because they address a row
|
|
15
|
-
* by primary key directly — so they resolve it here instead.
|
|
16
|
-
*
|
|
17
|
-
* Returns the ID unchanged on main, when branching is off, or when the branch
|
|
18
|
-
* has no copy of the document.
|
|
19
|
-
*/
|
|
20
|
-
export declare const resolveBranchRowID: ({ id, branch: branchOverride, collectionSlug, req, }: Args) => Promise<number | string>;
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=resolveBranchRowID.d.ts.map
|