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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findByID.ts"],"sourcesContent":["import type { FindOneArgs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n ApplyDisableErrors,\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead, type AfterReadArgs } from '../../fields/hooks/afterRead/index.js'\nimport { validateQueryPaths } from '../../index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type FindByIDArgs = {\n collection: Collection\n currentDepth?: number\n /**\n * You may pass the document data directly which will skip the `db.findOne` database query.\n * This is useful if you want to use this endpoint solely for running hooks and populating data.\n */\n data?: Record<string, unknown>\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<AfterReadArgs<JsonObject>, 'flattenLocales'> &\n Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findByIDOperation = async <\n TSlug extends CollectionSlug,\n TDisableErrors extends boolean,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: FindByIDArgs,\n): Promise<ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'read',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n draft: replaceWithVersion = false,\n flattenLocales,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n overrideAccess = false,\n populate,\n req: { fallbackLocale, locale, t },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess(\n { id, slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResult === false) {\n return null!\n }\n\n const isValidID =\n (typeof id === 'string' && id.length > 0) || (typeof id === 'number' && Number.isFinite(id))\n\n if (!isValidID) {\n throw new NotFound(t)\n }\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResult)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({\n fields: collectionConfig.flattenedFields,\n payload: args.req.payload,\n where: fullWhere,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n // execute only if there's a custom ID and potentially overwriten access on id\n if (req.payload.collections[collectionConfig.slug]!.customIDType) {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const shouldQueryDrafts = !args.data && replaceWithVersion && hasDraftsEnabled(collectionConfig)\n let docWithLocales: DataFromCollectionSlug<TSlug> | null | undefined\n let query = fullWhere\n\n let dbSelect = select\n\n if (\n collectionConfig.versions?.drafts &&\n replaceWithVersion &&\n select &&\n getSelectMode(select) === 'include'\n ) {\n dbSelect = { ...select, createdAt: true, updatedAt: true }\n }\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n draftsEnabled: replaceWithVersion,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n locale: locale!,\n req: {\n // `branch`, `context` and `payload` are needed so the adapter can apply\n // the branch predicate and reuse this request's memoized change\n // manifest. Without them the read silently resolves against main.\n branch: req.branch,\n context: req.context,\n payload: req.payload,\n transactionID: req.transactionID,\n } as PayloadRequest,\n select: dbSelect,\n where: fullWhere,\n }\n\n if (shouldQueryDrafts) {\n query = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(req.payload.config, collectionConfig, true),\n where: appendVersionToQueryKey(where),\n })\n\n const { docs } = await req.payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: getQueryDraftsSelect({ select }),\n where: query,\n })\n\n docWithLocales = docs[0]\n\n if (!docWithLocales) {\n const { docs: existingVersions } = await req.payload.db.queryDrafts({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: { parent: true },\n where: appendVersionToQueryKey(where),\n })\n\n if (!existingVersions[0]) {\n query = fullWhere\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n }\n } else {\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n\n if (!docWithLocales && !args.data) {\n if (!disableErrors) {\n throw new NotFound(req.t)\n }\n return null!\n }\n\n let result: DataFromCollectionSlug<TSlug> =\n (args.data as DataFromCollectionSlug<TSlug>) ?? docWithLocales!\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Include Lock Status if required\n // /////////////////////////////////////\n\n if (includeLockStatus && id) {\n let lockStatus: (JsonObject & TypeWithID) | null = null\n\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const lockedDocument = await req.payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n equals: id,\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(new Date().getTime() - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n if (lockedDocument && lockedDocument.docs.length > 0) {\n lockStatus = lockedDocument.docs[0]!\n }\n } catch {\n // swallow error\n }\n\n result._isLocked = !!lockStatus\n result._userEditing = lockStatus?.user?.value ?? null\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (!shouldQueryDrafts && replaceWithVersion && hasDraftsEnabled(collectionConfig)) {\n result = await replaceWithDraftIfAvailable({\n accessResult,\n doc: result,\n entity: collectionConfig,\n entityType: 'collection',\n overrideAccess,\n req,\n select,\n })\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result,\n draft: replaceWithVersion,\n fallbackLocale: fallbackLocale!,\n flattenLocales,\n global: null,\n locale: locale!,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","getSelectMode","hasDraftsEnabled","resolveSelect","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","replaceWithDraftIfAvailable","buildAfterOperation","buildBeforeOperation","findByIDOperation","incomingArgs","args","collection","config","operation","overrideAccess","id","collectionConfig","currentDepth","depth","disableErrors","draft","replaceWithVersion","flattenLocales","includeLockStatus","includeLockStatusFromArgs","joins","populate","req","fallbackLocale","locale","t","select","incomingSelect","showHiddenFields","trash","payload","collections","fields","flattenedFields","accessResult","slug","access","read","isValidID","length","Number","isFinite","where","equals","fullWhere","enableTrash","sanitizedJoins","customIDType","shouldQueryDrafts","data","docWithLocales","query","dbSelect","versions","drafts","createdAt","updatedAt","findOneArgs","draftsEnabled","payloadAPI","branch","context","transactionID","versionFields","docs","db","queryDrafts","limit","pagination","existingVersions","parent","findOne","result","auth","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","and","greater_than","Date","getTime","_isLocked","_userEditing","user","value","doc","entity","entityType","hooks","beforeRead","hook","global"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findByID.ts"],"sourcesContent":["import type { FindOneArgs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n ApplyDisableErrors,\n JsonObject,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n TypeWithID,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead, type AfterReadArgs } from '../../fields/hooks/afterRead/index.js'\nimport { validateQueryPaths } from '../../index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { replaceWithDraftIfAvailable } from '../../versions/drafts/replaceWithDraftIfAvailable.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type FindByIDArgs = {\n collection: Collection\n currentDepth?: number\n /**\n * You may pass the document data directly which will skip the `db.findOne` database query.\n * This is useful if you want to use this endpoint solely for running hooks and populating data.\n */\n data?: Record<string, unknown>\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n id: number | string\n includeLockStatus?: boolean\n joins?: JoinQuery\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<AfterReadArgs<JsonObject>, 'flattenLocales'> &\n Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findByIDOperation = async <\n TSlug extends CollectionSlug,\n TDisableErrors extends boolean,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: FindByIDArgs,\n): Promise<ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'read',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n draft: replaceWithVersion = false,\n flattenLocales,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n overrideAccess = false,\n populate,\n req: { fallbackLocale, locale, t },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResult = !overrideAccess\n ? await executeAccess(\n { id, slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResult === false) {\n return null!\n }\n\n const isValidID =\n (typeof id === 'string' && id.length > 0) || (typeof id === 'number' && Number.isFinite(id))\n\n if (!isValidID) {\n throw new NotFound(t)\n }\n\n const where = { id: { equals: id } }\n\n let fullWhere = combineQueries(where, accessResult)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({\n fields: collectionConfig.flattenedFields,\n payload: args.req.payload,\n where: fullWhere,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n // execute only if there's a custom ID and potentially overwriten access on id\n if (req.payload.collections[collectionConfig.slug]!.customIDType) {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n }\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n const shouldQueryDrafts = !args.data && replaceWithVersion && hasDraftsEnabled(collectionConfig)\n let docWithLocales: DataFromCollectionSlug<TSlug> | null | undefined\n let query = fullWhere\n\n let dbSelect = select\n\n if (\n collectionConfig.versions?.drafts &&\n replaceWithVersion &&\n select &&\n getSelectMode(select) === 'include'\n ) {\n dbSelect = { ...select, createdAt: true, updatedAt: true }\n }\n\n const findOneArgs: FindOneArgs = {\n collection: collectionConfig.slug,\n draftsEnabled: replaceWithVersion,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n locale: locale!,\n req: {\n transactionID: req.transactionID,\n },\n select: dbSelect,\n where: fullWhere,\n }\n\n if (shouldQueryDrafts) {\n query = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(req.payload.config, collectionConfig, true),\n where: appendVersionToQueryKey(where),\n })\n\n const { docs } = await req.payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: getQueryDraftsSelect({ select }),\n where: query,\n })\n\n docWithLocales = docs[0]\n\n if (!docWithLocales) {\n const { docs: existingVersions } = await req.payload.db.queryDrafts({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select: { parent: true },\n where: appendVersionToQueryKey(where),\n })\n\n if (!existingVersions[0]) {\n query = fullWhere\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n }\n } else {\n docWithLocales = await req.payload.db.findOne(findOneArgs)\n }\n\n if (!docWithLocales && !args.data) {\n if (!disableErrors) {\n throw new NotFound(req.t)\n }\n return null!\n }\n\n let result: DataFromCollectionSlug<TSlug> =\n (args.data as DataFromCollectionSlug<TSlug>) ?? docWithLocales!\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Include Lock Status if required\n // /////////////////////////////////////\n\n if (includeLockStatus && id) {\n let lockStatus: (JsonObject & TypeWithID) | null = null\n\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const lockedDocument = await req.payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n equals: id,\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(new Date().getTime() - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n if (lockedDocument && lockedDocument.docs.length > 0) {\n lockStatus = lockedDocument.docs[0]!\n }\n } catch {\n // swallow error\n }\n\n result._isLocked = !!lockStatus\n result._userEditing = lockStatus?.user?.value ?? null\n }\n\n // /////////////////////////////////////\n // Replace document with draft if available\n // /////////////////////////////////////\n\n if (!shouldQueryDrafts && replaceWithVersion && hasDraftsEnabled(collectionConfig)) {\n result = await replaceWithDraftIfAvailable({\n accessResult,\n doc: result,\n entity: collectionConfig,\n entityType: 'collection',\n overrideAccess,\n req,\n select,\n })\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result,\n draft: replaceWithVersion,\n fallbackLocale: fallbackLocale!,\n flattenLocales,\n global: null,\n locale: locale!,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result,\n overrideAccess,\n query,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as ApplyDisableErrors<TransformCollectionWithSelect<TSlug, TSelect>, TDisableErrors>\n}\n"],"names":["executeAccess","combineQueries","sanitizeJoinQuery","sanitizeWhereQuery","NotFound","afterRead","validateQueryPaths","lockedDocumentsCollectionSlug","appendNonTrashedFilter","getSelectMode","hasDraftsEnabled","resolveSelect","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","replaceWithDraftIfAvailable","buildAfterOperation","buildBeforeOperation","findByIDOperation","incomingArgs","args","collection","config","operation","overrideAccess","id","collectionConfig","currentDepth","depth","disableErrors","draft","replaceWithVersion","flattenLocales","includeLockStatus","includeLockStatusFromArgs","joins","populate","req","fallbackLocale","locale","t","select","incomingSelect","showHiddenFields","trash","payload","collections","fields","flattenedFields","accessResult","slug","access","read","isValidID","length","Number","isFinite","where","equals","fullWhere","enableTrash","sanitizedJoins","customIDType","shouldQueryDrafts","data","docWithLocales","query","dbSelect","versions","drafts","createdAt","updatedAt","findOneArgs","draftsEnabled","payloadAPI","transactionID","versionFields","docs","db","queryDrafts","limit","pagination","existingVersions","parent","findOne","result","auth","lockStatus","lockDocumentsProp","lockDocuments","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","lockedDocument","find","and","greater_than","Date","getTime","_isLocked","_userEditing","user","value","doc","entity","entityType","hooks","beforeRead","hook","context","global"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAmBpD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAmBD,eAAO,MAAM,qBAAqB,iBAClB,SAAS,KACtB,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"findDistinct.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findDistinct.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAmBpD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAmBD,eAAO,MAAM,qBAAqB,iBAClB,SAAS,KACtB,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA2SxD,CAAA"}
|
|
@@ -79,20 +79,19 @@ export const findDistinctOperation = async (incomingArgs)=>{
|
|
|
79
79
|
req,
|
|
80
80
|
where: where ?? {}
|
|
81
81
|
});
|
|
82
|
-
const
|
|
83
|
-
const fieldResult = isIDField ? undefined : getFieldByPath({
|
|
82
|
+
const fieldResult = getFieldByPath({
|
|
84
83
|
config: payload.config,
|
|
85
84
|
fields: collectionConfig.flattenedFields,
|
|
86
85
|
includeRelationships: true,
|
|
87
86
|
path: args.field
|
|
88
87
|
});
|
|
89
|
-
if (!
|
|
88
|
+
if (!fieldResult) {
|
|
90
89
|
throw new APIError(`Field ${args.field} was not found in the collection ${collectionConfig.slug}`, httpStatus.BAD_REQUEST);
|
|
91
90
|
}
|
|
92
|
-
if (fieldResult
|
|
91
|
+
if (fieldResult.field.hidden && !showHiddenFields) {
|
|
93
92
|
throw new Forbidden(req.t);
|
|
94
93
|
}
|
|
95
|
-
if (fieldResult
|
|
94
|
+
if (fieldResult.field.access?.read) {
|
|
96
95
|
const hasAccess = await fieldResult.field.access.read({
|
|
97
96
|
collection: collectionConfig,
|
|
98
97
|
req
|
|
@@ -178,7 +177,7 @@ export const findDistinctOperation = async (incomingArgs)=>{
|
|
|
178
177
|
sort: args.sort
|
|
179
178
|
});
|
|
180
179
|
}
|
|
181
|
-
if (
|
|
180
|
+
if ('virtual' in fieldResult.field && fieldResult.field.virtual) {
|
|
182
181
|
if (typeof fieldResult.field.virtual !== 'string') {
|
|
183
182
|
throw new APIError(`Cannot findDistinct by a virtual field that isn't linked to a relationship field.`);
|
|
184
183
|
}
|
|
@@ -230,7 +229,7 @@ export const findDistinctOperation = async (incomingArgs)=>{
|
|
|
230
229
|
sort: args.sort,
|
|
231
230
|
where: fullWhere
|
|
232
231
|
});
|
|
233
|
-
if (
|
|
232
|
+
if ((fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') && args.depth) {
|
|
234
233
|
const populationPromises = [];
|
|
235
234
|
const sanitizedField = {
|
|
236
235
|
...fieldResult.field
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findDistinct.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDistinctDocs } from '../../database/types.js'\nimport type { FlattenedField } from '../../fields/config/types.js'\nimport type { PayloadRequest, PopulateType, Sort, Where } from '../../types/index.js'\nimport type { Collection } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { getLocalizedPaths } from '../../database/getLocalizedPaths.js'\nimport { prefixWherePaths } from '../../database/prefixWherePaths.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/APIError.js'\nimport { Forbidden } from '../../errors/Forbidden.js'\nimport { QueryError } from '../../errors/QueryError.js'\nimport { relationshipPopulationPromise } from '../../fields/hooks/afterRead/relationshipPopulationPromise.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getFieldByPath } from '../../utilities/getFieldByPath.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableErrors?: boolean\n field: string\n limit?: number\n locale?: string\n overrideAccess?: boolean\n page?: number\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n}\n\nconst getEmptyResult = ({\n limit,\n}: {\n limit?: number\n}): PaginatedDistinctDocs<Record<string, unknown>> => ({\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit || 0,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n values: [],\n})\n\nexport const findDistinctOperation = async (\n incomingArgs: Arguments,\n): Promise<PaginatedDistinctDocs<Record<string, unknown>>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'readDistinct',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n disableErrors,\n overrideAccess,\n populate,\n showHiddenFields = false,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { locale, payload } = req\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess(\n { slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return getEmptyResult({ limit: args.limit })\n }\n }\n\n // /////////////////////////////////////\n // Find Distinct\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where!, accessResult!)\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const relatedAccessByPath: Record<string, Where> = {}\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where ?? {},\n })\n\n const isIDField = args.field === 'id'\n const fieldResult = isIDField\n ? undefined\n : getFieldByPath({\n config: payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n\n if (!isIDField && !fieldResult) {\n throw new APIError(\n `Field ${args.field} was not found in the collection ${collectionConfig.slug}`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n if (fieldResult?.field.hidden && !showHiddenFields) {\n throw new Forbidden(req.t)\n }\n\n if (fieldResult?.field.access?.read) {\n const hasAccess = await fieldResult.field.access.read({\n collection: collectionConfig,\n req,\n })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n if (!overrideAccess) {\n const paths = getLocalizedPaths({\n collectionSlug: collectionConfig.slug,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: req.locale!,\n overrideAccess: true,\n payload,\n })\n\n if (paths.at(-1)?.path === 'id') {\n const previousField = paths.at(-2)?.field\n if (\n previousField &&\n (previousField.type === 'relationship' || previousField.type === 'upload') &&\n typeof previousField.relationTo === 'string'\n ) {\n paths.pop()\n }\n }\n\n const relatedAccessByCollection = new Map<string, AccessResult>()\n\n for (let pathIndex = 1; pathIndex < paths.length; pathIndex++) {\n const collectionSlug = paths[pathIndex]?.collectionSlug\n\n if (!collectionSlug) {\n continue\n }\n\n if (!relatedAccessByCollection.has(collectionSlug)) {\n const relatedCollectionConfig = payload.collections[collectionSlug]!.config\n const relatedAccess = await executeAccess(\n { slug: collectionSlug, disableErrors: true, req },\n relatedCollectionConfig.access.read,\n )\n\n if (typeof relatedAccess === 'object') {\n sanitizeWhereQuery({\n fields: relatedCollectionConfig.flattenedFields,\n payload,\n where: relatedAccess,\n })\n }\n\n relatedAccessByCollection.set(collectionSlug, relatedAccess)\n }\n\n const relatedAccess = relatedAccessByCollection.get(collectionSlug)!\n\n if (relatedAccess === false) {\n if (disableErrors) {\n return getEmptyResult({ limit: args.limit })\n }\n\n throw new QueryError([{ path: args.field }])\n }\n\n if (typeof relatedAccess === 'object') {\n const relationshipPath = paths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n\n relatedAccessByPath[relationshipPath] = relatedAccess\n fullWhere = combineQueries(\n fullWhere,\n prefixWherePaths({ prefix: relationshipPath, where: relatedAccess }),\n )\n }\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: false,\n req,\n showHiddenFields,\n where: {\n [args.field]: {\n exists: true,\n },\n },\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: false,\n req,\n sort: args.sort,\n })\n }\n\n if (fieldResult && 'virtual' in fieldResult.field && fieldResult.field.virtual) {\n if (typeof fieldResult.field.virtual !== 'string') {\n throw new APIError(\n `Cannot findDistinct by a virtual field that isn't linked to a relationship field.`,\n )\n }\n\n let relationPath: string = ''\n let currentFields: FlattenedField[] = collectionConfig.flattenedFields\n const fieldPathSegments = fieldResult.field.virtual.split('.')\n for (const segment of fieldResult.field.virtual.split('.')) {\n relationPath = `${relationPath}${segment}`\n fieldPathSegments.shift()\n const field = currentFields.find((e) => e.name === segment)!\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n break\n }\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n }\n }\n\n const path = `${relationPath}.${fieldPathSegments.join('.')}`\n\n const result = await payload.findDistinct({\n collection: collectionConfig.slug,\n depth: args.depth,\n disableErrors,\n field: path,\n limit: args.limit,\n locale,\n overrideAccess,\n page: args.page,\n populate,\n req,\n showHiddenFields,\n sort: args.sort,\n trash,\n where,\n })\n\n for (const val of result.values) {\n val[args.field] = val[path]\n delete val[path]\n }\n\n return result\n }\n\n let result = await payload.db.findDistinct({\n collection: collectionConfig.slug,\n field: args.field,\n limit: args.limit,\n locale: locale!,\n page: args.page,\n relatedAccess: relatedAccessByPath,\n req,\n sort: args.sort,\n where: fullWhere,\n })\n\n if (\n fieldResult &&\n (fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') &&\n args.depth\n ) {\n const populationPromises: Promise<void>[] = []\n const sanitizedField = { ...fieldResult.field }\n if (fieldResult.field.hasMany) {\n sanitizedField.hasMany = false\n }\n for (const doc of result.values) {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth: 0,\n depth: args.depth,\n draft: false,\n fallbackLocale: req.fallbackLocale || null,\n field: sanitizedField,\n locale: req.locale || null,\n overrideAccess: args.overrideAccess ?? false,\n parentIsLocalized: false,\n populate,\n req,\n showHiddenFields: false,\n siblingDoc: doc,\n }),\n )\n }\n await Promise.all(populationPromises)\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findDistinct',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","getLocalizedPaths","prefixWherePaths","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","Forbidden","QueryError","relationshipPopulationPromise","appendNonTrashedFilter","getFieldByPath","httpStatus","buildAfterOperation","buildBeforeOperation","getEmptyResult","limit","hasNextPage","hasPrevPage","nextPage","page","pagingCounter","prevPage","totalDocs","totalPages","values","findDistinctOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","disableErrors","populate","showHiddenFields","trash","where","req","locale","payload","accessResult","slug","access","read","fullWhere","fields","flattenedFields","enableTrash","relatedAccessByPath","isIDField","field","fieldResult","undefined","includeRelationships","path","BAD_REQUEST","hidden","t","hasAccess","paths","collectionSlug","incomingPath","at","previousField","type","relationTo","pop","relatedAccessByCollection","Map","pathIndex","length","has","relatedCollectionConfig","collections","relatedAccess","set","get","relationshipPath","slice","map","join","prefix","exists","sort","virtual","relationPath","currentFields","fieldPathSegments","split","segment","shift","find","e","name","result","findDistinct","depth","val","db","populationPromises","sanitizedField","hasMany","doc","push","currentDepth","draft","fallbackLocale","parentIsLocalized","siblingDoc","Promise","all"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findDistinct.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDistinctDocs } from '../../database/types.js'\nimport type { FlattenedField } from '../../fields/config/types.js'\nimport type { PayloadRequest, PopulateType, Sort, Where } from '../../types/index.js'\nimport type { Collection } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { getLocalizedPaths } from '../../database/getLocalizedPaths.js'\nimport { prefixWherePaths } from '../../database/prefixWherePaths.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/APIError.js'\nimport { Forbidden } from '../../errors/Forbidden.js'\nimport { QueryError } from '../../errors/QueryError.js'\nimport { relationshipPopulationPromise } from '../../fields/hooks/afterRead/relationshipPopulationPromise.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { getFieldByPath } from '../../utilities/getFieldByPath.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableErrors?: boolean\n field: string\n limit?: number\n locale?: string\n overrideAccess?: boolean\n page?: number\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n}\n\nconst getEmptyResult = ({\n limit,\n}: {\n limit?: number\n}): PaginatedDistinctDocs<Record<string, unknown>> => ({\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit || 0,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 0,\n values: [],\n})\n\nexport const findDistinctOperation = async (\n incomingArgs: Arguments,\n): Promise<PaginatedDistinctDocs<Record<string, unknown>>> => {\n let args = incomingArgs\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'readDistinct',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n disableErrors,\n overrideAccess,\n populate,\n showHiddenFields = false,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { locale, payload } = req\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess(\n { slug: collectionConfig.slug, disableErrors, req },\n collectionConfig.access.read,\n )\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return getEmptyResult({ limit: args.limit })\n }\n }\n\n // /////////////////////////////////////\n // Find Distinct\n // /////////////////////////////////////\n\n let fullWhere = combineQueries(where!, accessResult!)\n sanitizeWhereQuery({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n const relatedAccessByPath: Record<string, Where> = {}\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where ?? {},\n })\n\n const fieldResult = getFieldByPath({\n config: payload.config,\n fields: collectionConfig.flattenedFields,\n includeRelationships: true,\n path: args.field,\n })\n\n if (!fieldResult) {\n throw new APIError(\n `Field ${args.field} was not found in the collection ${collectionConfig.slug}`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n if (fieldResult.field.hidden && !showHiddenFields) {\n throw new Forbidden(req.t)\n }\n\n if (fieldResult.field.access?.read) {\n const hasAccess = await fieldResult.field.access.read({\n collection: collectionConfig,\n req,\n })\n if (!hasAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n if (!overrideAccess) {\n const paths = getLocalizedPaths({\n collectionSlug: collectionConfig.slug,\n fields: collectionConfig.flattenedFields,\n incomingPath: args.field,\n locale: req.locale!,\n overrideAccess: true,\n payload,\n })\n\n if (paths.at(-1)?.path === 'id') {\n const previousField = paths.at(-2)?.field\n if (\n previousField &&\n (previousField.type === 'relationship' || previousField.type === 'upload') &&\n typeof previousField.relationTo === 'string'\n ) {\n paths.pop()\n }\n }\n\n const relatedAccessByCollection = new Map<string, AccessResult>()\n\n for (let pathIndex = 1; pathIndex < paths.length; pathIndex++) {\n const collectionSlug = paths[pathIndex]?.collectionSlug\n\n if (!collectionSlug) {\n continue\n }\n\n if (!relatedAccessByCollection.has(collectionSlug)) {\n const relatedCollectionConfig = payload.collections[collectionSlug]!.config\n const relatedAccess = await executeAccess(\n { slug: collectionSlug, disableErrors: true, req },\n relatedCollectionConfig.access.read,\n )\n\n if (typeof relatedAccess === 'object') {\n sanitizeWhereQuery({\n fields: relatedCollectionConfig.flattenedFields,\n payload,\n where: relatedAccess,\n })\n }\n\n relatedAccessByCollection.set(collectionSlug, relatedAccess)\n }\n\n const relatedAccess = relatedAccessByCollection.get(collectionSlug)!\n\n if (relatedAccess === false) {\n if (disableErrors) {\n return getEmptyResult({ limit: args.limit })\n }\n\n throw new QueryError([{ path: args.field }])\n }\n\n if (typeof relatedAccess === 'object') {\n const relationshipPath = paths\n .slice(0, pathIndex)\n .map(({ path }) => path)\n .join('.')\n\n relatedAccessByPath[relationshipPath] = relatedAccess\n fullWhere = combineQueries(\n fullWhere,\n prefixWherePaths({ prefix: relationshipPath, where: relatedAccess }),\n )\n }\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: false,\n req,\n showHiddenFields,\n where: {\n [args.field]: {\n exists: true,\n },\n },\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: false,\n req,\n sort: args.sort,\n })\n }\n\n if ('virtual' in fieldResult.field && fieldResult.field.virtual) {\n if (typeof fieldResult.field.virtual !== 'string') {\n throw new APIError(\n `Cannot findDistinct by a virtual field that isn't linked to a relationship field.`,\n )\n }\n\n let relationPath: string = ''\n let currentFields: FlattenedField[] = collectionConfig.flattenedFields\n const fieldPathSegments = fieldResult.field.virtual.split('.')\n for (const segment of fieldResult.field.virtual.split('.')) {\n relationPath = `${relationPath}${segment}`\n fieldPathSegments.shift()\n const field = currentFields.find((e) => e.name === segment)!\n if (\n (field.type === 'relationship' || field.type === 'upload') &&\n typeof field.relationTo === 'string'\n ) {\n break\n }\n if ('flattenedFields' in field) {\n currentFields = field.flattenedFields\n }\n }\n\n const path = `${relationPath}.${fieldPathSegments.join('.')}`\n\n const result = await payload.findDistinct({\n collection: collectionConfig.slug,\n depth: args.depth,\n disableErrors,\n field: path,\n limit: args.limit,\n locale,\n overrideAccess,\n page: args.page,\n populate,\n req,\n showHiddenFields,\n sort: args.sort,\n trash,\n where,\n })\n\n for (const val of result.values) {\n val[args.field] = val[path]\n delete val[path]\n }\n\n return result\n }\n\n let result = await payload.db.findDistinct({\n collection: collectionConfig.slug,\n field: args.field,\n limit: args.limit,\n locale: locale!,\n page: args.page,\n relatedAccess: relatedAccessByPath,\n req,\n sort: args.sort,\n where: fullWhere,\n })\n\n if (\n (fieldResult.field.type === 'relationship' || fieldResult.field.type === 'upload') &&\n args.depth\n ) {\n const populationPromises: Promise<void>[] = []\n const sanitizedField = { ...fieldResult.field }\n if (fieldResult.field.hasMany) {\n sanitizedField.hasMany = false\n }\n for (const doc of result.values) {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth: 0,\n depth: args.depth,\n draft: false,\n fallbackLocale: req.fallbackLocale || null,\n field: sanitizedField,\n locale: req.locale || null,\n overrideAccess: args.overrideAccess ?? false,\n parentIsLocalized: false,\n populate,\n req,\n showHiddenFields: false,\n siblingDoc: doc,\n }),\n )\n }\n await Promise.all(populationPromises)\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findDistinct',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","getLocalizedPaths","prefixWherePaths","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","APIError","Forbidden","QueryError","relationshipPopulationPromise","appendNonTrashedFilter","getFieldByPath","httpStatus","buildAfterOperation","buildBeforeOperation","getEmptyResult","limit","hasNextPage","hasPrevPage","nextPage","page","pagingCounter","prevPage","totalDocs","totalPages","values","findDistinctOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","disableErrors","populate","showHiddenFields","trash","where","req","locale","payload","accessResult","slug","access","read","fullWhere","fields","flattenedFields","enableTrash","relatedAccessByPath","fieldResult","includeRelationships","path","field","BAD_REQUEST","hidden","t","hasAccess","paths","collectionSlug","incomingPath","at","previousField","type","relationTo","pop","relatedAccessByCollection","Map","pathIndex","length","has","relatedCollectionConfig","collections","relatedAccess","set","get","relationshipPath","slice","map","join","prefix","exists","sort","virtual","relationPath","currentFields","fieldPathSegments","split","segment","shift","find","e","name","result","findDistinct","depth","val","db","populationPromises","sanitizedField","hasMany","doc","push","currentDepth","draft","fallbackLocale","parentIsLocalized","siblingDoc","Promise","all"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAuBhE,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,wBAAwB,GAAU,KAAK,SAAS,UAAU,GAAG,GAAG,QACrE,SAAS,KACd,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CA6OhC,CAAA"}
|
|
@@ -6,6 +6,7 @@ import { afterRead } from '../../fields/hooks/afterRead/index.js';
|
|
|
6
6
|
import { checkFileAccess } from '../../uploads/checkFileAccess.js';
|
|
7
7
|
import { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js';
|
|
8
8
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
9
|
+
import { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js';
|
|
9
10
|
import { httpStatus } from '../../utilities/httpStatus.js';
|
|
10
11
|
import { resolveSelect } from '../../utilities/resolveSelect.js';
|
|
11
12
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
@@ -19,6 +20,12 @@ export const findVersionByIDOperation = async (args)=>{
|
|
|
19
20
|
if (!id) {
|
|
20
21
|
throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST);
|
|
21
22
|
}
|
|
23
|
+
if (!hasVersionsEnabled(collectionConfig)) {
|
|
24
|
+
if (disableErrors) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
throw new NotFound(req.t);
|
|
28
|
+
}
|
|
22
29
|
// /////////////////////////////////////
|
|
23
30
|
// beforeOperation - Collection
|
|
24
31
|
// /////////////////////////////////////
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import type { FindOptions } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection, TypeWithID } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport {\n isInheritedReadVersionsAccess,\n withInheritedReadVersionsParentID,\n} from '../../versions/isInheritedReadVersionsAccess.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { prefetchVersionForInheritedReadAccess } from './utilities/prefetchVersionForInheritedReadAccess.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionByIDOperation = async <TData extends TypeWithID = any>(\n args: Arguments,\n): Promise<TypeWithVersion<TData>> => {\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST)\n }\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n })\n\n const where = { id: { equals: id } }\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n const inheritsReadAccess = isInheritedReadVersionsAccess(collectionConfig.access.readVersions)\n const shouldPrefetchVersion = !overrideAccess && inheritsReadAccess\n const prefetched = shouldPrefetchVersion\n ? await prefetchVersionForInheritedReadAccess<TData>({\n id,\n collectionConfig,\n locale: locale!,\n req,\n select,\n trash,\n })\n : undefined\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n id,\n slug: collectionConfig.slug,\n disableErrors,\n req,\n },\n inheritsReadAccess\n ? (accessArgs) =>\n collectionConfig.access.readVersions(\n withInheritedReadVersionsParentID(accessArgs, prefetched?.parentID),\n )\n : collectionConfig.access.readVersions,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null!\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n let fullWhere = combineQueries(where, accessResults)\n\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n let result = prefetched?.version as TypeWithVersion<TData>\n\n if (!shouldPrefetchVersion || hasWhereAccess) {\n const versionsQuery = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select,\n where: fullWhere,\n })\n\n result = versionsQuery.docs[0]!\n }\n\n if (!result) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null!\n }\n\n if (collectionConfig.upload && !overrideAccess) {\n const filename = (result.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: result.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n\n if (!result.version) {\n // Fallback if not selected\n ;(result as any).version = {}\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n if (collectionConfig.upload) {\n result.version = markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: result.version as Record<string, unknown>,\n req,\n versionID: result.id,\n }) as TData\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","sanitizeWhereQuery","APIError","Forbidden","NotFound","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","httpStatus","resolveSelect","sanitizeSelect","buildVersionCollectionFields","isInheritedReadVersionsAccess","withInheritedReadVersionsParentID","buildAfterOperation","buildBeforeOperation","prefetchVersionForInheritedReadAccess","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","BAD_REQUEST","operation","where","equals","versionFields","fields","versions","inheritsReadAccess","access","readVersions","shouldPrefetchVersion","prefetched","undefined","accessResults","slug","accessArgs","parentID","hasWhereAccess","fullWhere","deletedAtPath","enableTrash","result","version","versionsQuery","db","findVersions","limit","pagination","docs","t","upload","filename","documentID","parent","hooks","beforeRead","length","hook","context","doc","query","draft","global","collectionSlug","versionID"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findVersionByID.ts"],"sourcesContent":["import type { FindOptions } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection, TypeWithID } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError, Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { httpStatus } from '../../utilities/httpStatus.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport {\n isInheritedReadVersionsAccess,\n withInheritedReadVersionsParentID,\n} from '../../versions/isInheritedReadVersionsAccess.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { prefetchVersionForInheritedReadAccess } from './utilities/prefetchVersionForInheritedReadAccess.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n id: number | string\n overrideAccess?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionByIDOperation = async <TData extends TypeWithID = any>(\n args: Arguments,\n): Promise<TypeWithVersion<TData>> => {\n const {\n id,\n collection: { config: collectionConfig },\n currentDepth,\n depth,\n disableErrors,\n overrideAccess,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n if (!id) {\n throw new APIError('Missing ID of version.', httpStatus.BAD_REQUEST)\n }\n\n if (!hasVersionsEnabled(collectionConfig)) {\n if (disableErrors) {\n return null!\n }\n\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n })\n\n const where = { id: { equals: id } }\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n const inheritsReadAccess = isInheritedReadVersionsAccess(collectionConfig.access.readVersions)\n const shouldPrefetchVersion = !overrideAccess && inheritsReadAccess\n const prefetched = shouldPrefetchVersion\n ? await prefetchVersionForInheritedReadAccess<TData>({\n id,\n collectionConfig,\n locale: locale!,\n req,\n select,\n trash,\n })\n : undefined\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n id,\n slug: collectionConfig.slug,\n disableErrors,\n req,\n },\n inheritsReadAccess\n ? (accessArgs) =>\n collectionConfig.access.readVersions(\n withInheritedReadVersionsParentID(accessArgs, prefetched?.parentID),\n )\n : collectionConfig.access.readVersions,\n )\n : true\n\n // If errors are disabled, and access returns false, return null\n if (accessResults === false) {\n return null!\n }\n\n const hasWhereAccess = typeof accessResults === 'object'\n\n let fullWhere = combineQueries(where, accessResults)\n\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n // /////////////////////////////////////\n // Find by ID\n // /////////////////////////////////////\n\n let result = prefetched?.version as TypeWithVersion<TData>\n\n if (!shouldPrefetchVersion || hasWhereAccess) {\n const versionsQuery = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: 1,\n locale: locale!,\n pagination: false,\n req,\n select,\n where: fullWhere,\n })\n\n result = versionsQuery.docs[0]!\n }\n\n if (!result) {\n if (!disableErrors) {\n if (!hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n }\n\n return null!\n }\n\n if (collectionConfig.upload && !overrideAccess) {\n const filename = (result.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: result.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n\n if (!result.version) {\n // Fallback if not selected\n ;(result as any).version = {}\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc: result.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterRead?.length) {\n for (const hook of collectionConfig.hooks.afterRead) {\n result.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: result.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || result.version\n }\n }\n\n if (collectionConfig.upload) {\n result.version = markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: result.version,\n req,\n versionID: result.id,\n })\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersionByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result\n}\n"],"names":["executeAccess","combineQueries","sanitizeWhereQuery","APIError","Forbidden","NotFound","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","hasVersionsEnabled","httpStatus","resolveSelect","sanitizeSelect","buildVersionCollectionFields","isInheritedReadVersionsAccess","withInheritedReadVersionsParentID","buildAfterOperation","buildBeforeOperation","prefetchVersionForInheritedReadAccess","findVersionByIDOperation","args","id","collection","config","collectionConfig","currentDepth","depth","disableErrors","overrideAccess","populate","req","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","BAD_REQUEST","t","operation","where","equals","versionFields","fields","versions","inheritsReadAccess","access","readVersions","shouldPrefetchVersion","prefetched","undefined","accessResults","slug","accessArgs","parentID","hasWhereAccess","fullWhere","deletedAtPath","enableTrash","result","version","versionsQuery","db","findVersions","limit","pagination","docs","upload","filename","documentID","parent","hooks","beforeRead","length","hook","context","doc","query","draft","global","collectionSlug","versionID"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAoBlD,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAAU,KAAK,SAAS,eAAe,CAAC,KAAK,CAAC,QACxE,SAAS,KACd,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CA0O9B,CAAA"}
|
|
@@ -3,10 +3,12 @@ import { combineQueries } from '../../database/combineQueries.js';
|
|
|
3
3
|
import { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js';
|
|
4
4
|
import { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js';
|
|
5
5
|
import { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js';
|
|
6
|
+
import { NotFound } from '../../errors/index.js';
|
|
6
7
|
import { afterRead } from '../../fields/hooks/afterRead/index.js';
|
|
7
8
|
import { checkFileAccess } from '../../uploads/checkFileAccess.js';
|
|
8
9
|
import { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js';
|
|
9
10
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
11
|
+
import { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js';
|
|
10
12
|
import { resolveSelect } from '../../utilities/resolveSelect.js';
|
|
11
13
|
import { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js';
|
|
12
14
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
@@ -26,6 +28,9 @@ export const findVersionsOperation = async (args)=>{
|
|
|
26
28
|
const { collection: { config: collectionConfig }, depth, limit, overrideAccess, page, pagination = true, populate, select: incomingSelect, showHiddenFields, sort, trash = false, where } = args;
|
|
27
29
|
const req = args.req;
|
|
28
30
|
const { fallbackLocale, locale, payload } = req;
|
|
31
|
+
if (!hasVersionsEnabled(collectionConfig)) {
|
|
32
|
+
throw new NotFound(req.t);
|
|
33
|
+
}
|
|
29
34
|
// /////////////////////////////////////
|
|
30
35
|
// Access
|
|
31
36
|
// /////////////////////////////////////
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\nimport type { FindOptions } from './local/find.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'findVersions',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { fallbackLocale, locale, payload } = req\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults!: AccessResult\n\n if (!overrideAccess) {\n accessResults = await executeAccess(\n { slug: collectionConfig.slug, req },\n collectionConfig.access.readVersions,\n )\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n versionFields,\n })\n\n let fullWhere = combineQueries(where!, accessResults)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const usePagination = pagination && limit !== 0\n const sanitizedLimit = limit ?? (usePagination ? 10 : 0)\n const sanitizedPage = page || 1\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n if (collectionConfig.upload && !overrideAccess) {\n for (const row of paginatedDocs.docs) {\n const filename = (row.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: row.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n let result: PaginatedDocs<TData> = paginatedDocs as unknown as PaginatedDocs<TData>\n result.docs = (await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || docRef.version\n }\n }\n\n return docRef\n }),\n )) as TData[]\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (data) => {\n data.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: data.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n return data\n }),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n overrideAccess,\n query: fullWhere,\n req,\n })) || doc.version\n }\n\n return docRef\n }),\n )\n }\n\n if (collectionConfig.upload) {\n result.docs = result.docs.map((row) => ({\n ...row,\n version: markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: row.version as Record<string, unknown>,\n req,\n versionID: row.id,\n }) as TData,\n }))\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n result.docs = result.docs.map((doc) => sanitizeInternalFields<TData>(doc))\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersions',\n overrideAccess,\n result,\n })\n\n return result\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","resolveSelect","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","buildAfterOperation","buildBeforeOperation","findVersionsOperation","args","collection","config","operation","overrideAccess","collectionConfig","depth","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","trash","where","req","fallbackLocale","locale","payload","accessResults","slug","access","readVersions","versionFields","fullWhere","deletedAtPath","enableTrash","fields","versions","usePagination","sanitizedLimit","sanitizedPage","paginatedDocs","db","findVersions","upload","row","docs","filename","version","documentID","parent","result","Promise","all","map","doc","docRef","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","collectionSlug","versionID","id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/findVersions.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { PayloadRequest, PopulateType, SelectType, Sort, Where } from '../../types/index.js'\nimport type { TypeWithVersion } from '../../versions/types.js'\nimport type { Collection } from '../config/types.js'\nimport type { FindOptions } from './local/find.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { validateSortQuery } from '../../database/queryValidation/validateSortQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { checkFileAccess } from '../../uploads/checkFileAccess.js'\nimport { markHistoricalFileURLs } from '../../uploads/fileVersioning/markHistoricalFileURLs.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasVersionsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n showHiddenFields?: boolean\n sort?: Sort\n trash?: boolean\n where?: Where\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const findVersionsOperation = async <TData extends TypeWithVersion<TData>>(\n args: Arguments,\n): Promise<PaginatedDocs<TData>> => {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'findVersions',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n depth,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n const { fallbackLocale, locale, payload } = req\n\n if (!hasVersionsEnabled(collectionConfig)) {\n throw new NotFound(req.t)\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResults!: AccessResult\n\n if (!overrideAccess) {\n accessResults = await executeAccess(\n { slug: collectionConfig.slug, req },\n collectionConfig.access.readVersions,\n )\n }\n\n const versionFields = buildVersionCollectionFields(payload.config, collectionConfig, true)\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n versionFields,\n where: where!,\n })\n\n await validateSortQuery({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n sort,\n versionFields,\n })\n\n let fullWhere = combineQueries(where!, accessResults)\n\n // Exclude trashed documents when trash: false\n fullWhere = appendNonTrashedFilter({\n deletedAtPath: 'version.deletedAt',\n enableTrash: collectionConfig.trash,\n trash,\n where: fullWhere,\n })\n\n sanitizeWhereQuery({ fields: versionFields, payload, where: fullWhere })\n\n const select = sanitizeSelect({\n fields: versionFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'read',\n req,\n select: incomingSelect,\n }),\n versions: true,\n })\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const usePagination = pagination && limit !== 0\n const sanitizedLimit = limit ?? (usePagination ? 10 : 0)\n const sanitizedPage = page || 1\n\n const paginatedDocs = await payload.db.findVersions<TData>({\n collection: collectionConfig.slug,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n\n if (collectionConfig.upload && !overrideAccess) {\n for (const row of paginatedDocs.docs) {\n const filename = (row.version as Record<string, unknown>)?.filename\n\n await checkFileAccess({\n collection: args.collection,\n documentID: row.parent,\n filename: typeof filename === 'string' ? filename : '',\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n let result: PaginatedDocs<TData> = paginatedDocs as unknown as PaginatedDocs<TData>\n result.docs = (await Promise.all(\n paginatedDocs.docs.map(async (doc) => {\n const docRef = doc\n // Fallback if not selected\n if (!docRef.version) {\n ;(docRef as any).version = {}\n }\n\n if (collectionConfig.hooks?.beforeRead?.length) {\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef.version,\n overrideAccess,\n query: fullWhere,\n req,\n })) || docRef.version\n }\n }\n\n return docRef\n }),\n )) as TData[]\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (data) => {\n data.version = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: data.version,\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n draft: undefined,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select: typeof select?.version === 'object' ? select.version : undefined,\n showHiddenFields: showHiddenFields!,\n })\n return data\n }),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n const docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef.version =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: doc.version,\n findMany: true,\n overrideAccess,\n query: fullWhere,\n req,\n })) || doc.version\n }\n\n return docRef\n }),\n )\n }\n\n if (collectionConfig.upload) {\n result.docs = result.docs.map((row) => ({\n ...row,\n version: markHistoricalFileURLs({\n collectionSlug: collectionConfig.slug,\n doc: row.version,\n req,\n versionID: row.id,\n }),\n }))\n }\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n result.docs = result.docs.map((doc) => sanitizeInternalFields<TData>(doc))\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'findVersions',\n overrideAccess,\n result,\n })\n\n return result\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","validateSortQuery","sanitizeWhereQuery","NotFound","afterRead","checkFileAccess","markHistoricalFileURLs","appendNonTrashedFilter","hasVersionsEnabled","resolveSelect","sanitizeInternalFields","sanitizeSelect","buildVersionCollectionFields","buildAfterOperation","buildBeforeOperation","findVersionsOperation","args","collection","config","operation","overrideAccess","collectionConfig","depth","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","trash","where","req","fallbackLocale","locale","payload","t","accessResults","slug","access","readVersions","versionFields","fullWhere","deletedAtPath","enableTrash","fields","versions","usePagination","sanitizedLimit","sanitizedPage","paginatedDocs","db","findVersions","upload","row","docs","filename","version","documentID","parent","result","Promise","all","map","doc","docRef","hooks","beforeRead","length","hook","context","query","data","draft","undefined","findMany","global","collectionSlug","versionID","id"],"mappings":"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"}
|
|
@@ -2,21 +2,16 @@ import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from
|
|
|
2
2
|
import type { PayloadRequest, Where } from '../../../types/index.js';
|
|
3
3
|
import type { SharedLocalAPIOptions } from '../../../types/operations.js';
|
|
4
4
|
export type CountOptions<TSlug extends CollectionSlug> = {
|
|
5
|
+
/**
|
|
6
|
+
* the Collection slug to operate against.
|
|
7
|
+
*/
|
|
8
|
+
collection: TSlug;
|
|
5
9
|
/**
|
|
6
10
|
* [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,
|
|
7
11
|
* which can be read by hooks. Useful if you want to pass additional information to the hooks which
|
|
8
12
|
* shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook
|
|
9
13
|
* to determine if it should run or not.
|
|
10
14
|
*/
|
|
11
|
-
/**
|
|
12
|
-
* Read and write against a specific content branch instead of resolving one
|
|
13
|
-
* from the request. `false` bypasses branching entirely.
|
|
14
|
-
*/
|
|
15
|
-
branch?: false | string;
|
|
16
|
-
/**
|
|
17
|
-
* the Collection slug to operate against.
|
|
18
|
-
*/
|
|
19
|
-
collection: TSlug;
|
|
20
15
|
context?: RequestContext;
|
|
21
16
|
/**
|
|
22
17
|
* When set to `true`, errors will not be thrown.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAOzE,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,cAAc,IAAI;IACvD
|
|
1
|
+
{"version":3,"file":"count.d.ts","sourceRoot":"","sources":["../../../../src/collections/operations/local/count.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACnG,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAOzE,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,cAAc,IAAI;IACvD;;OAEG;IACH,UAAU,EAAE,KAAK,CAAA;IACjB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAA;AAEjD,wBAAsB,UAAU,CAAC,KAAK,SAAS,cAAc,EAC3D,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAC3B,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/collections/operations/local/count.ts"],"sourcesContent":["import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from '../../../index.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\nimport type { SharedLocalAPIOptions } from '../../../types/operations.js'\nimport type { CreatePayloadRequestArgs } from '../../../utilities/createPayloadRequest.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createPayloadRequest } from '../../../utilities/createPayloadRequest.js'\nimport { countOperation } from '../count.js'\n\nexport type CountOptions<TSlug extends CollectionSlug> = {\n /**\n * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,\n * which can be read by hooks. Useful if you want to pass additional information to the hooks which\n * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook\n * to determine if it should run or not.\n */\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/collections/operations/local/count.ts"],"sourcesContent":["import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from '../../../index.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\nimport type { SharedLocalAPIOptions } from '../../../types/operations.js'\nimport type { CreatePayloadRequestArgs } from '../../../utilities/createPayloadRequest.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createPayloadRequest } from '../../../utilities/createPayloadRequest.js'\nimport { countOperation } from '../count.js'\n\nexport type CountOptions<TSlug extends CollectionSlug> = {\n /**\n * the Collection slug to operate against.\n */\n collection: TSlug\n /**\n * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,\n * which can be read by hooks. Useful if you want to pass additional information to the hooks which\n * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook\n * to determine if it should run or not.\n */\n context?: RequestContext\n /**\n * When set to `true`, errors will not be thrown.\n */\n disableErrors?: boolean\n /**\n * Specify [locale](https://payloadcms.com/docs/configuration/localization) for any returned documents.\n */\n locale?: TypedLocale\n /**\n * The `PayloadRequest` object. You can pass it to thread the current [transaction](https://payloadcms.com/docs/database/transactions), user and locale to the operation.\n * Recommended to pass when using the Local API from hooks, as usually you want to execute the operation within the current transaction.\n */\n req?: Partial<PayloadRequest>\n /**\n * When set to `true`, the query will include both normal and trashed documents.\n * To query only trashed documents, pass `trash: true` and combine with a `where` clause filtering by `deletedAt`.\n * By default (`false`), the query will only include normal documents and exclude those with a `deletedAt` field.\n *\n * This argument has no effect unless `trash` is enabled on the collection.\n * @default false\n */\n trash?: boolean\n /**\n * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.\n */\n user?: null | User\n /**\n * A filter [query](https://payloadcms.com/docs/queries/overview)\n */\n where?: Where\n} & Pick<SharedLocalAPIOptions, 'overrideAccess'>\n\nexport async function countLocal<TSlug extends CollectionSlug>(\n payload: Payload,\n options: CountOptions<TSlug>,\n): Promise<{ totalDocs: number }> {\n const {\n collection: collectionSlug,\n disableErrors,\n overrideAccess = false,\n trash = false,\n where,\n } = options\n\n const collection = payload.collections[collectionSlug]\n\n if (!collection) {\n throw new APIError(\n `The collection with slug ${String(collectionSlug)} can't be found. Count Operation.`,\n )\n }\n\n return countOperation<TSlug>({\n collection,\n disableErrors,\n overrideAccess,\n req: await createPayloadRequest({\n ...(options as Omit<CreatePayloadRequestArgs, 'payload'>),\n payload,\n }),\n trash,\n where,\n })\n}\n"],"names":["APIError","createPayloadRequest","countOperation","countLocal","payload","options","collection","collectionSlug","disableErrors","overrideAccess","trash","where","collections","String","req"],"mappings":"AAKA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,oBAAoB,QAAQ,6CAA4C;AACjF,SAASC,cAAc,QAAQ,cAAa;AA8C5C,OAAO,eAAeC,WACpBC,OAAgB,EAChBC,OAA4B;IAE5B,MAAM,EACJC,YAAYC,cAAc,EAC1BC,aAAa,EACbC,iBAAiB,KAAK,EACtBC,QAAQ,KAAK,EACbC,KAAK,EACN,GAAGN;IAEJ,MAAMC,aAAaF,QAAQQ,WAAW,CAACL,eAAe;IAEtD,IAAI,CAACD,YAAY;QACf,MAAM,IAAIN,SACR,CAAC,yBAAyB,EAAEa,OAAON,gBAAgB,iCAAiC,CAAC;IAEzF;IAEA,OAAOL,eAAsB;QAC3BI;QACAE;QACAC;QACAK,KAAK,MAAMb,qBAAqB;YAC9B,GAAII,OAAO;YACXD;QACF;QACAM;QACAC;IACF;AACF"}
|
|
@@ -2,10 +2,6 @@ import type { CollectionSlug, Payload, RequestContext, TypedLocale, User } from
|
|
|
2
2
|
import type { PayloadRequest, Where } from '../../../types/index.js';
|
|
3
3
|
import type { SharedLocalAPIOptions } from '../../../types/operations.js';
|
|
4
4
|
export type CountVersionsOptions<TSlug extends CollectionSlug> = {
|
|
5
|
-
/**
|
|
6
|
-
* Count versions as seen from this branch. `false` bypasses branching entirely.
|
|
7
|
-
*/
|
|
8
|
-
branch?: false | string;
|
|
9
5
|
/**
|
|
10
6
|
* the Collection slug to operate against.
|
|
11
7
|
*/
|