payload 3.84.1 → 4.0.0-internal.d28e9fb
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/README.md +5 -5
- package/dist/admin/elements/Nav.d.ts +13 -0
- package/dist/admin/elements/Nav.d.ts.map +1 -1
- package/dist/admin/elements/Nav.js.map +1 -1
- package/dist/admin/functions/index.d.ts +1 -38
- package/dist/admin/functions/index.d.ts.map +1 -1
- package/dist/admin/functions/index.js.map +1 -1
- package/dist/admin/types.d.ts +5 -4
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/hierarchyList.d.ts +9 -0
- package/dist/admin/views/hierarchyList.d.ts.map +1 -0
- package/dist/admin/views/hierarchyList.js +3 -0
- package/dist/admin/views/hierarchyList.js.map +1 -0
- package/dist/admin/views/index.d.ts +1 -3
- package/dist/admin/views/index.d.ts.map +1 -1
- package/dist/admin/views/index.js.map +1 -1
- package/dist/admin/views/list.d.ts +43 -2
- package/dist/admin/views/list.d.ts.map +1 -1
- package/dist/admin/views/list.js.map +1 -1
- package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateCollections.js +1 -0
- package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
- package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateConfig.js +7 -0
- package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
- package/dist/bin/generateImportMap/iterateGlobals.d.ts.map +1 -1
- package/dist/bin/generateImportMap/iterateGlobals.js +20 -8
- package/dist/bin/generateImportMap/iterateGlobals.js.map +1 -1
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +1 -3
- package/dist/bin/index.js.map +1 -1
- package/dist/collections/config/client.d.ts +4 -2
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +13 -1
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.js +1 -1
- 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 +231 -184
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/types.d.ts +76 -91
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +24 -19
- 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 +7 -2
- 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 +7 -2
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/find.d.ts.map +1 -1
- package/dist/collections/operations/find.js +7 -2
- package/dist/collections/operations/find.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +10 -5
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +6 -4
- 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 +6 -4
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +7 -2
- 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 +7 -2
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +7 -2
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +5 -4
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +0 -10
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +0 -15
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/orderable/index.d.ts.map +1 -1
- package/dist/config/orderable/index.js +0 -4
- package/dist/config/orderable/index.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +252 -266
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +120 -13
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/exports/internal.d.ts +1 -0
- package/dist/exports/internal.d.ts.map +1 -1
- package/dist/exports/internal.js +1 -0
- package/dist/exports/internal.js.map +1 -1
- package/dist/exports/shared.d.ts +5 -3
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +3 -2
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
- package/dist/fields/baseFields/slug/index.js +6 -4
- package/dist/fields/baseFields/slug/index.js.map +1 -1
- package/dist/fields/config/client.d.ts.map +1 -1
- package/dist/fields/config/client.js +3 -2
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +335 -322
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
- package/dist/fields/config/sanitizeJoinField.js +3 -0
- package/dist/fields/config/sanitizeJoinField.js.map +1 -1
- package/dist/fields/config/types.d.ts +17 -73
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +11 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/isFieldDisabled.d.ts +12 -0
- package/dist/fields/isFieldDisabled.d.ts.map +1 -0
- package/dist/fields/isFieldDisabled.js +15 -0
- package/dist/fields/isFieldDisabled.js.map +1 -0
- package/dist/fields/isFieldDisabled.spec.js +134 -0
- package/dist/fields/isFieldDisabled.spec.js.map +1 -0
- package/dist/fields/validations.js +1 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/client.d.ts +1 -1
- package/dist/globals/config/client.d.ts.map +1 -1
- package/dist/globals/config/client.js +2 -1
- package/dist/globals/config/client.js.map +1 -1
- package/dist/globals/config/sanitize.d.ts.map +1 -1
- package/dist/globals/config/sanitize.js +132 -122
- package/dist/globals/config/sanitize.js.map +1 -1
- package/dist/globals/config/types.d.ts +4 -57
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +7 -2
- 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 -4
- 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 +6 -4
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +7 -2
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.d.ts +9 -0
- package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -0
- package/dist/hierarchy/addHierarchyToCollection.js +76 -0
- package/dist/hierarchy/addHierarchyToCollection.js.map +1 -0
- package/dist/hierarchy/buildParentField.d.ts +11 -0
- package/dist/hierarchy/buildParentField.d.ts.map +1 -0
- package/dist/hierarchy/buildParentField.js +42 -0
- package/dist/hierarchy/buildParentField.js.map +1 -0
- package/dist/hierarchy/constants.d.ts +15 -0
- package/dist/hierarchy/constants.d.ts.map +1 -0
- package/dist/hierarchy/constants.js +11 -0
- package/dist/hierarchy/constants.js.map +1 -0
- package/dist/hierarchy/createFolderField.d.ts +39 -0
- package/dist/hierarchy/createFolderField.d.ts.map +1 -0
- package/dist/hierarchy/createFolderField.js +54 -0
- package/dist/hierarchy/createFolderField.js.map +1 -0
- package/dist/hierarchy/createTagField.d.ts +44 -0
- package/dist/hierarchy/createTagField.d.ts.map +1 -0
- package/dist/hierarchy/createTagField.js +48 -0
- package/dist/hierarchy/createTagField.js.map +1 -0
- package/dist/hierarchy/getInitialTreeData.d.ts +27 -0
- package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -0
- package/dist/hierarchy/getInitialTreeData.js +125 -0
- package/dist/hierarchy/getInitialTreeData.js.map +1 -0
- package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +14 -0
- package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -0
- package/dist/hierarchy/hooks/collectionAfterDelete.js +21 -0
- package/dist/hierarchy/hooks/collectionAfterDelete.js.map +1 -0
- package/dist/hierarchy/hooks/collectionAfterRead.d.ts +27 -0
- package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -0
- package/dist/hierarchy/hooks/collectionAfterRead.js +72 -0
- package/dist/hierarchy/hooks/collectionAfterRead.js.map +1 -0
- package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +19 -0
- package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -0
- package/dist/hierarchy/hooks/collectionBeforeChange.js +90 -0
- package/dist/hierarchy/hooks/collectionBeforeChange.js.map +1 -0
- package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +15 -0
- package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -0
- package/dist/hierarchy/hooks/collectionBeforeDelete.js +20 -0
- package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +1 -0
- package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts +33 -0
- package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -0
- package/dist/hierarchy/hooks/collectionBeforeOperation.js +66 -0
- package/dist/hierarchy/hooks/collectionBeforeOperation.js.map +1 -0
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +8 -0
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +108 -0
- package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +1 -0
- package/dist/hierarchy/injectHierarchyButton.d.ts +14 -0
- package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -0
- package/dist/hierarchy/injectHierarchyButton.js +37 -0
- package/dist/hierarchy/injectHierarchyButton.js.map +1 -0
- package/dist/hierarchy/presets.d.ts +13 -0
- package/dist/hierarchy/presets.d.ts.map +1 -0
- package/dist/hierarchy/presets.js +52 -0
- package/dist/hierarchy/presets.js.map +1 -0
- package/dist/hierarchy/resolveHierarchyCollections.d.ts +23 -0
- package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -0
- package/dist/hierarchy/resolveHierarchyCollections.js +321 -0
- package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -0
- package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +14 -0
- package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -0
- package/dist/hierarchy/sanitizeHierarchyCollection.js +117 -0
- package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -0
- package/dist/hierarchy/types.d.ts +155 -0
- package/dist/hierarchy/types.d.ts.map +1 -0
- package/dist/hierarchy/types.js +6 -0
- package/dist/hierarchy/types.js.map +1 -0
- package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +77 -0
- package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +1 -0
- package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +77 -0
- package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +1 -0
- package/dist/hierarchy/utils/computePaths.d.ts +31 -0
- package/dist/hierarchy/utils/computePaths.d.ts.map +1 -0
- package/dist/hierarchy/utils/computePaths.js +445 -0
- package/dist/hierarchy/utils/computePaths.js.map +1 -0
- package/dist/hierarchy/utils/findUseAsTitle.d.ts +14 -0
- package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +1 -0
- package/dist/hierarchy/utils/findUseAsTitle.js +89 -0
- package/dist/hierarchy/utils/findUseAsTitle.js.map +1 -0
- package/dist/hierarchy/utils/getAncestors.d.ts +34 -0
- package/dist/hierarchy/utils/getAncestors.d.ts.map +1 -0
- package/dist/hierarchy/utils/getAncestors.js +94 -0
- package/dist/hierarchy/utils/getAncestors.js.map +1 -0
- package/dist/hierarchy/utils/getLocalizedValue.d.ts +30 -0
- package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +1 -0
- package/dist/hierarchy/utils/getLocalizedValue.js +46 -0
- package/dist/hierarchy/utils/getLocalizedValue.js.map +1 -0
- package/dist/hierarchy/utils/getLocalizedValue.spec.js +250 -0
- package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +1 -0
- package/dist/index.bundled.d.ts +709 -530
- package/dist/index.d.ts +28 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -8
- package/dist/index.js.map +1 -1
- package/dist/preferences/keys.d.ts +8 -4
- package/dist/preferences/keys.d.ts.map +1 -1
- package/dist/preferences/keys.js +7 -4
- package/dist/preferences/keys.js.map +1 -1
- package/dist/preferences/types.d.ts +1 -1
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/query-presets/config.d.ts.map +1 -1
- package/dist/query-presets/config.js +5 -1
- package/dist/query-presets/config.js.map +1 -1
- package/dist/queues/config/types/index.d.ts +0 -21
- package/dist/queues/config/types/index.d.ts.map +1 -1
- package/dist/queues/config/types/index.js.map +1 -1
- package/dist/queues/config/types/taskTypes.d.ts +0 -20
- package/dist/queues/config/types/taskTypes.d.ts.map +1 -1
- package/dist/queues/config/types/taskTypes.js.map +1 -1
- package/dist/queues/errors/handleWorkflowError.d.ts.map +1 -1
- package/dist/queues/errors/handleWorkflowError.js +9 -1
- package/dist/queues/errors/handleWorkflowError.js.map +1 -1
- package/dist/queues/localAPI.d.ts.map +1 -1
- package/dist/queues/localAPI.js +26 -67
- package/dist/queues/localAPI.js.map +1 -1
- package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
- package/dist/queues/operations/handleSchedules/index.js +1 -4
- package/dist/queues/operations/handleSchedules/index.js.map +1 -1
- package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/index.js +40 -37
- package/dist/queues/operations/runJobs/index.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +3 -22
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +0 -2
- package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -1
- package/dist/queues/utilities/updateJob.d.ts +1 -3
- package/dist/queues/utilities/updateJob.d.ts.map +1 -1
- package/dist/queues/utilities/updateJob.js +2 -18
- package/dist/queues/utilities/updateJob.js.map +1 -1
- package/dist/types/index.d.ts +44 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +35 -69
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getSafeFilename.d.ts +9 -4
- package/dist/uploads/getSafeFilename.d.ts.map +1 -1
- package/dist/uploads/getSafeFilename.js +5 -5
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.d.ts +13 -0
- package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -0
- package/dist/utilities/appendDateTimezoneSelectFields.js +47 -0
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -0
- package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
- package/dist/utilities/appendUploadSelectFields.js +3 -0
- package/dist/utilities/appendUploadSelectFields.js.map +1 -1
- package/dist/utilities/extractID.js +1 -1
- package/dist/utilities/extractID.js.map +1 -1
- package/dist/utilities/flattenAllFields.d.ts.map +1 -1
- package/dist/utilities/flattenAllFields.js +102 -93
- package/dist/utilities/flattenAllFields.js.map +1 -1
- package/dist/utilities/formatAdminURL.d.ts +13 -2
- package/dist/utilities/formatAdminURL.d.ts.map +1 -1
- package/dist/utilities/formatAdminURL.js.map +1 -1
- package/dist/utilities/handleEndpoints.d.ts.map +1 -1
- package/dist/utilities/handleEndpoints.js +0 -1
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/resolveSelect.d.ts +16 -0
- package/dist/utilities/resolveSelect.d.ts.map +1 -0
- package/dist/utilities/resolveSelect.js +19 -0
- package/dist/utilities/resolveSelect.js.map +1 -0
- package/dist/utilities/sanitizeProfiler.d.ts +38 -0
- package/dist/utilities/sanitizeProfiler.d.ts.map +1 -0
- package/dist/utilities/sanitizeProfiler.js +101 -0
- package/dist/utilities/sanitizeProfiler.js.map +1 -0
- package/dist/utilities/sanitizeSelect.d.ts +1 -2
- package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
- package/dist/utilities/sanitizeSelect.js +19 -25
- package/dist/utilities/sanitizeSelect.js.map +1 -1
- package/dist/versions/baseFields.d.ts.map +1 -1
- package/dist/versions/baseFields.js +3 -2
- package/dist/versions/baseFields.js.map +1 -1
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +0 -1
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +0 -1
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/payloadPackageList.d.ts.map +1 -1
- package/dist/versions/payloadPackageList.js +0 -1
- package/dist/versions/payloadPackageList.js.map +1 -1
- package/package.json +4 -4
- package/dist/admin/views/folderList.d.ts +0 -56
- package/dist/admin/views/folderList.d.ts.map +0 -1
- package/dist/admin/views/folderList.js +0 -3
- package/dist/admin/views/folderList.js.map +0 -1
- package/dist/folders/addFolderCollection.d.ts +0 -10
- package/dist/folders/addFolderCollection.d.ts.map +0 -1
- package/dist/folders/addFolderCollection.js +0 -26
- package/dist/folders/addFolderCollection.js.map +0 -1
- package/dist/folders/addFolderFieldToCollection.d.ts +0 -8
- package/dist/folders/addFolderFieldToCollection.d.ts.map +0 -1
- package/dist/folders/addFolderFieldToCollection.js +0 -20
- package/dist/folders/addFolderFieldToCollection.js.map +0 -1
- package/dist/folders/buildFolderField.d.ts +0 -8
- package/dist/folders/buildFolderField.d.ts.map +0 -1
- package/dist/folders/buildFolderField.js +0 -87
- package/dist/folders/buildFolderField.js.map +0 -1
- package/dist/folders/constants.d.ts +0 -3
- package/dist/folders/constants.d.ts.map +0 -1
- package/dist/folders/constants.js +0 -4
- package/dist/folders/constants.js.map +0 -1
- package/dist/folders/createFolderCollection.d.ts +0 -11
- package/dist/folders/createFolderCollection.d.ts.map +0 -1
- package/dist/folders/createFolderCollection.js +0 -115
- package/dist/folders/createFolderCollection.js.map +0 -1
- package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts +0 -8
- package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts.map +0 -1
- package/dist/folders/hooks/deleteSubfoldersAfterDelete.js +0 -15
- package/dist/folders/hooks/deleteSubfoldersAfterDelete.js.map +0 -1
- package/dist/folders/hooks/dissasociateAfterDelete.d.ts +0 -8
- package/dist/folders/hooks/dissasociateAfterDelete.d.ts.map +0 -1
- package/dist/folders/hooks/dissasociateAfterDelete.js +0 -20
- package/dist/folders/hooks/dissasociateAfterDelete.js.map +0 -1
- package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts +0 -5
- package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts.map +0 -1
- package/dist/folders/hooks/ensureSafeCollectionsChange.js +0 -107
- package/dist/folders/hooks/ensureSafeCollectionsChange.js.map +0 -1
- package/dist/folders/hooks/reparentChildFolder.d.ts +0 -24
- package/dist/folders/hooks/reparentChildFolder.d.ts.map +0 -1
- package/dist/folders/hooks/reparentChildFolder.js +0 -72
- package/dist/folders/hooks/reparentChildFolder.js.map +0 -1
- package/dist/folders/types.d.ts +0 -118
- package/dist/folders/types.d.ts.map +0 -1
- package/dist/folders/types.js +0 -3
- package/dist/folders/types.js.map +0 -1
- package/dist/folders/utils/buildFolderWhereConstraints.d.ts +0 -13
- package/dist/folders/utils/buildFolderWhereConstraints.d.ts.map +0 -1
- package/dist/folders/utils/buildFolderWhereConstraints.js +0 -45
- package/dist/folders/utils/buildFolderWhereConstraints.js.map +0 -1
- package/dist/folders/utils/formatFolderOrDocumentItem.d.ts +0 -12
- package/dist/folders/utils/formatFolderOrDocumentItem.d.ts.map +0 -1
- package/dist/folders/utils/formatFolderOrDocumentItem.js +0 -30
- package/dist/folders/utils/formatFolderOrDocumentItem.js.map +0 -1
- package/dist/folders/utils/getFolderBreadcrumbs.d.ts +0 -14
- package/dist/folders/utils/getFolderBreadcrumbs.d.ts.map +0 -1
- package/dist/folders/utils/getFolderBreadcrumbs.js +0 -45
- package/dist/folders/utils/getFolderBreadcrumbs.js.map +0 -1
- package/dist/folders/utils/getFolderData.d.ts +0 -33
- package/dist/folders/utils/getFolderData.d.ts.map +0 -1
- package/dist/folders/utils/getFolderData.js +0 -88
- package/dist/folders/utils/getFolderData.js.map +0 -1
- package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts +0 -24
- package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts.map +0 -1
- package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js +0 -66
- package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js.map +0 -1
- package/dist/folders/utils/getOrphanedDocs.d.ts +0 -15
- package/dist/folders/utils/getOrphanedDocs.d.ts.map +0 -1
- package/dist/folders/utils/getOrphanedDocs.js +0 -40
- package/dist/folders/utils/getOrphanedDocs.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/create.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { CollectionSlug, FindOptions, JsonObject } from '../../index.js'\nimport type {\n Document,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { ensureUsernameOrEmail } from '../../auth/ensureUsernameOrEmail.js'\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { sendVerificationEmail } from '../../auth/sendVerificationEmail.js'\nimport { registerLocalStrategy } from '../../auth/strategies/local/register.js'\nimport { getDuplicateDocumentData } from '../../duplicateDocument/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { saveVersion } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { uploadFiles } from '../../uploads/uploadFiles.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport {\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: RequiredDataFromCollectionSlug<TSlug>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n duplicateFromID?: DataFromCollectionSlug<TSlug>['id']\n overrideAccess?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n selectedLocales?: string[]\n showHiddenFields?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const createOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n ensureUsernameOrEmail<TSlug>({\n authOptions: args.collection.config.auth,\n collectionSlug: args.collection.config.slug,\n data: args.data,\n operation: 'create',\n req: args.req,\n })\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'create',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n disableVerificationEmail,\n draft = false,\n duplicateFromID,\n overrideAccess,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { config },\n },\n req,\n select: incomingSelect,\n selectedLocales,\n showHiddenFields,\n } = args\n\n let { data } = args\n\n const publishAllLocales =\n !draft &&\n (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(collectionConfig) ? false : true))\n const isSavingDraft = Boolean(draft && hasDraftsEnabled(collectionConfig) && !publishAllLocales)\n\n if (isSavingDraft) {\n data._status = 'draft'\n }\n\n let duplicatedFromDocWithLocales: JsonObject = {}\n let duplicatedFromDoc: JsonObject = {}\n\n if (duplicateFromID) {\n const duplicateResult = await getDuplicateDocumentData({\n id: duplicateFromID,\n collectionConfig,\n draftArg: isSavingDraft,\n overrideAccess,\n req,\n selectedLocales,\n })\n\n duplicatedFromDoc = duplicateResult.duplicatedFromDoc\n duplicatedFromDocWithLocales = duplicateResult.duplicatedFromDocWithLocales\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n if (!overrideAccess) {\n await executeAccess({ data, req }, collectionConfig.access.create)\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data,\n isDuplicating: Boolean(duplicateFromID),\n operation: 'create',\n originalDoc: duplicatedFromDoc,\n overwriteExistingFiles,\n req,\n throwOnMissingFile:\n !isSavingDraft && collection.config.upload.filesRequiredOnCreate !== false,\n })\n\n data = newFileData\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: duplicatedFromDoc,\n global: null,\n operation: 'create',\n overrideAccess: overrideAccess!,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Collections\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.beforeValidate?.length) {\n for (const hook of collectionConfig.hooks.beforeValidate) {\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'create',\n originalDoc: duplicatedFromDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeChange?.length) {\n for (const hook of collectionConfig.hooks.beforeChange) {\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'create',\n originalDoc: duplicatedFromDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const resultWithLocales = await beforeChange<JsonObject>({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: duplicatedFromDoc,\n docWithLocales: duplicatedFromDocWithLocales,\n global: null,\n operation: 'create',\n overrideAccess,\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(collectionConfig),\n })\n\n if (\n config.localization &&\n collectionConfig.versions &&\n collectionConfig.versions.drafts &&\n collectionConfig.versions.drafts.localizeStatus &&\n publishAllLocales\n ) {\n let accessibleLocaleCodes = config.localization.localeCodes\n\n if (config.localization.filterAvailableLocales) {\n const filteredLocales = await config.localization.filterAvailableLocales({\n locales: config.localization.locales,\n req,\n })\n accessibleLocaleCodes = filteredLocales.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n\n if (typeof resultWithLocales._status !== 'object' || resultWithLocales._status === null) {\n resultWithLocales._status = {}\n }\n\n for (const localeCode of accessibleLocaleCodes) {\n resultWithLocales._status[localeCode] = 'published'\n }\n }\n\n // /////////////////////////////////////\n // Write files to local storage\n // /////////////////////////////////////\n\n if (!collectionConfig.upload.disableLocalStorage) {\n await uploadFiles(payload, filesToUpload, req)\n }\n\n // /////////////////////////////////////\n // Create\n // /////////////////////////////////////\n\n let doc\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n if (collectionConfig.auth && !collectionConfig.auth.disableLocalStrategy) {\n if (collectionConfig.auth.verify) {\n resultWithLocales._verified = Boolean(resultWithLocales._verified) || false\n resultWithLocales._verificationToken = crypto.randomBytes(20).toString('hex')\n }\n\n doc = await registerLocalStrategy({\n collection: collectionConfig,\n doc: resultWithLocales,\n password: data.password as string,\n payload: req.payload,\n req,\n })\n } else {\n doc = await payload.db.create({\n collection: collectionConfig.slug,\n data: resultWithLocales,\n req,\n })\n }\n\n const verificationToken = doc._verificationToken\n let result: Document = sanitizeInternalFields(doc)\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 // Create version\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await saveVersion({\n id: result.id,\n autosave,\n collection: collectionConfig,\n docWithLocales: result,\n operation: 'create',\n payload,\n publishSpecificLocale,\n req,\n returning: false,\n })\n }\n\n // /////////////////////////////////////\n // Send verification email if applicable\n // /////////////////////////////////////\n\n if (collectionConfig.auth && collectionConfig.auth.verify && result.email) {\n await sendVerificationEmail({\n collection: { config: collectionConfig },\n config: payload.config,\n disableEmail: disableVerificationEmail!,\n email: payload.email,\n req,\n token: verificationToken,\n user: result,\n })\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result,\n draft,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: 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 req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: result,\n global: null,\n operation: 'create',\n previousDoc: {},\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterChange?.length) {\n for (const hook of collectionConfig.hooks.afterChange) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: result,\n operation: 'create',\n overrideAccess,\n previousDoc: {},\n req: args.req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation<TSlug>({\n args,\n collection: collectionConfig,\n operation: 'create',\n overrideAccess: args.overrideAccess!,\n result,\n })\n\n await unlinkTempFiles({ collectionConfig, config, req })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["crypto","ensureUsernameOrEmail","executeAccess","sendVerificationEmail","registerLocalStrategy","getDuplicateDocumentData","afterChange","afterRead","beforeChange","beforeValidate","saveVersion","generateFileData","unlinkTempFiles","uploadFiles","commitTransaction","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","sanitizeInternalFields","sanitizeSelect","buildAfterOperation","buildBeforeOperation","createOperation","incomingArgs","args","shouldCommit","disableTransaction","req","authOptions","collection","config","auth","collectionSlug","slug","data","operation","overrideAccess","publishSpecificLocale","locale","autosave","collectionConfig","depth","disableVerificationEmail","draft","duplicateFromID","overwriteExistingFiles","populate","publishAllLocales","publishAllLocalesArg","fallbackLocale","payload","select","incomingSelect","selectedLocales","showHiddenFields","isSavingDraft","Boolean","_status","duplicatedFromDocWithLocales","duplicatedFromDoc","duplicateResult","id","draftArg","access","create","newFileData","files","filesToUpload","isDuplicating","originalDoc","throwOnMissingFile","upload","filesRequiredOnCreate","context","doc","global","hooks","length","hook","resultWithLocales","docWithLocales","skipValidation","localization","versions","drafts","localizeStatus","accessibleLocaleCodes","localeCodes","filterAvailableLocales","filteredLocales","locales","map","code","localeCode","disableLocalStorage","fields","flattenedFields","forceSelect","disableLocalStrategy","verify","_verified","_verificationToken","randomBytes","toString","password","db","verificationToken","result","returning","email","disableEmail","token","user","previousDoc","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/create.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { CollectionSlug, FindOptions, JsonObject } from '../../index.js'\nimport type {\n Document,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n RequiredDataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { ensureUsernameOrEmail } from '../../auth/ensureUsernameOrEmail.js'\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { sendVerificationEmail } from '../../auth/sendVerificationEmail.js'\nimport { registerLocalStrategy } from '../../auth/strategies/local/register.js'\nimport { getDuplicateDocumentData } from '../../duplicateDocument/index.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { saveVersion } from '../../index.js'\nimport { generateFileData } from '../../uploads/generateFileData.js'\nimport { unlinkTempFiles } from '../../uploads/unlinkTempFiles.js'\nimport { uploadFiles } from '../../uploads/uploadFiles.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport {\n hasDraftsEnabled,\n hasDraftValidationEnabled,\n hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeInternalFields } from '../../utilities/sanitizeInternalFields.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n autosave?: boolean\n collection: Collection\n data: RequiredDataFromCollectionSlug<TSlug>\n depth?: number\n disableTransaction?: boolean\n disableVerificationEmail?: boolean\n draft?: boolean\n duplicateFromID?: DataFromCollectionSlug<TSlug>['id']\n overrideAccess?: boolean\n overwriteExistingFiles?: boolean\n populate?: PopulateType\n publishAllLocales?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n selectedLocales?: string[]\n showHiddenFields?: boolean\n} & Pick<FindOptions<TSlug, SelectType>, 'select'>\n\nexport const createOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments<TSlug>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n ensureUsernameOrEmail<TSlug>({\n authOptions: args.collection.config.auth,\n collectionSlug: args.collection.config.slug,\n data: args.data,\n operation: 'create',\n req: args.req,\n })\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'create',\n overrideAccess: args.overrideAccess!,\n })\n\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n autosave = false,\n collection: { config: collectionConfig },\n collection,\n depth,\n disableVerificationEmail,\n draft = false,\n duplicateFromID,\n overrideAccess,\n overwriteExistingFiles = false,\n populate,\n publishAllLocales: publishAllLocalesArg,\n publishSpecificLocale,\n req: {\n fallbackLocale,\n locale,\n payload,\n payload: { config },\n },\n req,\n select: incomingSelect,\n selectedLocales,\n showHiddenFields,\n } = args\n\n let { data } = args\n\n const publishAllLocales =\n !draft &&\n (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(collectionConfig) ? false : true))\n const isSavingDraft = Boolean(draft && hasDraftsEnabled(collectionConfig) && !publishAllLocales)\n\n if (isSavingDraft) {\n data._status = 'draft'\n }\n\n let duplicatedFromDocWithLocales: JsonObject = {}\n let duplicatedFromDoc: JsonObject = {}\n\n if (duplicateFromID) {\n const duplicateResult = await getDuplicateDocumentData({\n id: duplicateFromID,\n collectionConfig,\n draftArg: isSavingDraft,\n overrideAccess,\n req,\n selectedLocales,\n })\n\n duplicatedFromDoc = duplicateResult.duplicatedFromDoc\n duplicatedFromDocWithLocales = duplicateResult.duplicatedFromDocWithLocales\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n if (!overrideAccess) {\n await executeAccess({ data, req }, collectionConfig.access.create)\n }\n\n // /////////////////////////////////////\n // Generate data for all files and sizes\n // /////////////////////////////////////\n\n const { data: newFileData, files: filesToUpload } = await generateFileData({\n collection,\n config,\n data,\n isDuplicating: Boolean(duplicateFromID),\n operation: 'create',\n originalDoc: duplicatedFromDoc,\n overwriteExistingFiles,\n req,\n throwOnMissingFile:\n !isSavingDraft && collection.config.upload.filesRequiredOnCreate !== false,\n })\n\n data = newFileData\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: duplicatedFromDoc,\n global: null,\n operation: 'create',\n overrideAccess: overrideAccess!,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Collections\n // /////////////////////////////////////\n\n if (collectionConfig.hooks.beforeValidate?.length) {\n for (const hook of collectionConfig.hooks.beforeValidate) {\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'create',\n originalDoc: duplicatedFromDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeChange?.length) {\n for (const hook of collectionConfig.hooks.beforeChange) {\n data =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n operation: 'create',\n originalDoc: duplicatedFromDoc,\n req,\n })) || data\n }\n }\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n\n const dataWithLocales = await beforeChange<JsonObject>({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: duplicatedFromDoc,\n docWithLocales: duplicatedFromDocWithLocales,\n global: null,\n operation: 'create',\n overrideAccess,\n req,\n skipValidation: isSavingDraft && !hasDraftValidationEnabled(collectionConfig),\n })\n\n if (\n config.localization &&\n collectionConfig.versions &&\n collectionConfig.versions.drafts &&\n collectionConfig.versions.drafts.localizeStatus &&\n publishAllLocales\n ) {\n let accessibleLocaleCodes = config.localization.localeCodes\n\n if (config.localization.filterAvailableLocales) {\n const filteredLocales = await config.localization.filterAvailableLocales({\n locales: config.localization.locales,\n req,\n })\n accessibleLocaleCodes = filteredLocales.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n\n if (typeof dataWithLocales._status !== 'object' || dataWithLocales._status === null) {\n dataWithLocales._status = {}\n }\n\n for (const localeCode of accessibleLocaleCodes) {\n dataWithLocales._status[localeCode] = 'published'\n }\n }\n\n // /////////////////////////////////////\n // Write files to local storage\n // /////////////////////////////////////\n\n if (!collectionConfig.upload.disableLocalStorage) {\n await uploadFiles(payload, filesToUpload, req)\n }\n\n // /////////////////////////////////////\n // Create\n // /////////////////////////////////////\n\n let doc\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'create',\n req,\n select: incomingSelect,\n }),\n })\n\n if (collectionConfig.auth && !collectionConfig.auth.disableLocalStrategy) {\n if (collectionConfig.auth.verify) {\n dataWithLocales._verified = Boolean(dataWithLocales._verified) || false\n dataWithLocales._verificationToken = crypto.randomBytes(20).toString('hex')\n }\n\n doc = await registerLocalStrategy({\n collection: collectionConfig,\n doc: dataWithLocales,\n password: data.password as string,\n payload: req.payload,\n req,\n })\n } else {\n doc = await payload.db.create({\n collection: collectionConfig.slug,\n data: dataWithLocales,\n req,\n })\n }\n\n const verificationToken = doc._verificationToken\n let resultWithLocales: Document = sanitizeInternalFields(doc)\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n resultWithLocales = { ...resultWithLocales, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await saveVersion({\n id: resultWithLocales.id,\n autosave,\n collection: collectionConfig,\n docWithLocales: resultWithLocales,\n operation: 'create',\n payload,\n publishSpecificLocale,\n req,\n returning: false,\n })\n }\n\n // /////////////////////////////////////\n // Send verification email if applicable\n // /////////////////////////////////////\n\n if (collectionConfig.auth && collectionConfig.auth.verify && resultWithLocales.email) {\n await sendVerificationEmail({\n collection: { config: collectionConfig },\n config: payload.config,\n disableEmail: disableVerificationEmail!,\n email: payload.email,\n req,\n token: verificationToken,\n user: resultWithLocales,\n })\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n let result: Document = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: resultWithLocales,\n draft,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: 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 req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: result,\n global: null,\n operation: 'create',\n previousDoc: {},\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterChange?.length) {\n for (const hook of collectionConfig.hooks.afterChange) {\n result =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n data,\n doc: result,\n operation: 'create',\n overrideAccess,\n previousDoc: {},\n req: args.req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation<TSlug>({\n args,\n collection: collectionConfig,\n operation: 'create',\n overrideAccess: args.overrideAccess!,\n result,\n })\n\n await unlinkTempFiles({ collectionConfig, config, req })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["crypto","ensureUsernameOrEmail","executeAccess","sendVerificationEmail","registerLocalStrategy","getDuplicateDocumentData","afterChange","afterRead","beforeChange","beforeValidate","saveVersion","generateFileData","unlinkTempFiles","uploadFiles","commitTransaction","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","resolveSelect","sanitizeInternalFields","sanitizeSelect","buildAfterOperation","buildBeforeOperation","createOperation","incomingArgs","args","shouldCommit","disableTransaction","req","authOptions","collection","config","auth","collectionSlug","slug","data","operation","overrideAccess","publishSpecificLocale","locale","autosave","collectionConfig","depth","disableVerificationEmail","draft","duplicateFromID","overwriteExistingFiles","populate","publishAllLocales","publishAllLocalesArg","fallbackLocale","payload","select","incomingSelect","selectedLocales","showHiddenFields","isSavingDraft","Boolean","_status","duplicatedFromDocWithLocales","duplicatedFromDoc","duplicateResult","id","draftArg","access","create","newFileData","files","filesToUpload","isDuplicating","originalDoc","throwOnMissingFile","upload","filesRequiredOnCreate","context","doc","global","hooks","length","hook","dataWithLocales","docWithLocales","skipValidation","localization","versions","drafts","localizeStatus","accessibleLocaleCodes","localeCodes","filterAvailableLocales","filteredLocales","locales","map","code","localeCode","disableLocalStorage","fields","flattenedFields","disableLocalStrategy","verify","_verified","_verificationToken","randomBytes","toString","password","db","verificationToken","resultWithLocales","returning","email","disableEmail","token","user","result","previousDoc","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC3F,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/delete.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC3F,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAwB3B,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;CACb,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,KACtB,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAyT7C,CAAA"}
|
|
@@ -14,6 +14,7 @@ import { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js
|
|
|
14
14
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
15
15
|
import { isErrorPublic } from '../../utilities/isErrorPublic.js';
|
|
16
16
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
17
|
+
import { resolveSelect } from '../../utilities/resolveSelect.js';
|
|
17
18
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
18
19
|
import { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js';
|
|
19
20
|
import { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js';
|
|
@@ -65,8 +66,12 @@ export const deleteOperation = async (incomingArgs)=>{
|
|
|
65
66
|
});
|
|
66
67
|
const select = sanitizeSelect({
|
|
67
68
|
fields: collectionConfig.flattenedFields,
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
select: resolveSelect({
|
|
70
|
+
config: collectionConfig.select,
|
|
71
|
+
operation: 'delete',
|
|
72
|
+
req,
|
|
73
|
+
select: incomingSelect
|
|
74
|
+
})
|
|
70
75
|
});
|
|
71
76
|
// /////////////////////////////////////
|
|
72
77
|
// Retrieve documents
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/delete.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { CollectionSlug, FindOptions } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deleteUserPreferences } from '../../preferences/deleteUserPreferences.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { isErrorPublic } from '../../utilities/isErrorPublic.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js'\nimport { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableTransaction?: boolean\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n where: Where\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const deleteOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'delete',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n depth,\n overrideAccess,\n overrideLock,\n populate,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to delete.\", httpStatus.BAD_REQUEST)\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.delete)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\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({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const { docs } = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n select,\n where: fullWhere,\n })\n\n const errors: BulkOperationResult<TSlug, TSelect>['errors'] = []\n\n const promises = docs.map(async (doc) => {\n let result\n\n const { id } = doc\n\n try {\n // Each document gets its own transaction when singleTransaction is enabled\n let docShouldCommit = false\n if (req.payload.db.bulkOperationsSingleTransaction) {\n docShouldCommit = await initTransaction(req)\n }\n\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked and cannot be deleted.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeDelete?.length) {\n for (const hook of collectionConfig.hooks.beforeDelete) {\n await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n req,\n })\n }\n }\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc,\n overrideDelete: true,\n req,\n })\n\n // /////////////////////////////////////\n // Delete versions\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await deleteCollectionVersions({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete scheduled posts\n // /////////////////////////////////////\n if (hasScheduledPublishEnabled(collectionConfig)) {\n await deleteScheduledPublishJobs({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete document\n // /////////////////////////////////////\n\n await payload.db.deleteOne({\n collection: collectionConfig.slug,\n req,\n returning: false,\n where: {\n id: {\n equals: id,\n },\n },\n })\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result || doc,\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,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\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 || doc,\n overrideAccess,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterDelete?.length) {\n for (const hook of collectionConfig.hooks.afterDelete) {\n result =\n (await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // 8. Return results\n // /////////////////////////////////////\n if (docShouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\n\n if (req.payload.db.bulkOperationsSingleTransaction) {\n await killTransaction(req)\n }\n errors.push({\n id: doc.id,\n isPublic,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n return null\n })\n\n // Process sequentially when using single transaction mode to avoid shared state issues\n // Process in parallel when using one transaction for better performance\n let awaitedDocs\n if (req.payload.db.bulkOperationsSingleTransaction) {\n awaitedDocs = []\n for (const promise of promises) {\n awaitedDocs.push(await promise)\n }\n } else {\n awaitedDocs = await Promise.all(promises)\n }\n\n // /////////////////////////////////////\n // Delete Preferences\n // /////////////////////////////////////\n\n await deleteUserPreferences({\n collectionConfig,\n ids: docs.map(({ id }) => id),\n payload,\n req,\n })\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'delete',\n overrideAccess,\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","sanitizeWhereQuery","APIError","afterRead","deleteUserPreferences","deleteAssociatedFiles","appendNonTrashedFilter","checkDocumentLockStatus","commitTransaction","hasScheduledPublishEnabled","initTransaction","isErrorPublic","killTransaction","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","buildBeforeOperation","deleteOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","collectionConfig","depth","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","where","BAD_REQUEST","accessResult","access","delete","fullWhere","enableTrash","fields","flattenedFields","forceSelect","docs","db","find","slug","errors","promises","map","doc","result","id","docShouldCommit","bulkOperationsSingleTransaction","collectionSlug","lockErrorMessage","hooks","beforeDelete","length","hook","context","overrideDelete","versions","deleteOne","returning","equals","draft","undefined","global","auth","afterDelete","error","isPublic","Error","push","message","awaitedDocs","promise","Promise","all","ids","filter","Boolean"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/delete.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type { AccessResult } from '../../config/types.js'\nimport type { CollectionSlug, FindOptions } from '../../index.js'\nimport type { PayloadRequest, PopulateType, SelectType, Where } from '../../types/index.js'\nimport type {\n BulkOperationResult,\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { APIError } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deleteUserPreferences } from '../../preferences/deleteUserPreferences.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { isErrorPublic } from '../../utilities/isErrorPublic.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js'\nimport { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments = {\n collection: Collection\n depth?: number\n disableTransaction?: boolean\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n where: Where\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const deleteOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<BulkOperationResult<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'delete',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n collection: { config: collectionConfig },\n depth,\n overrideAccess,\n overrideLock,\n populate,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n where,\n } = args\n\n if (!where) {\n throw new APIError(\"Missing 'where' query of documents to delete.\", httpStatus.BAD_REQUEST)\n }\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ req }, collectionConfig.access.delete)\n }\n\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where,\n })\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({ fields: collectionConfig.flattenedFields, payload, where: fullWhere })\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'delete',\n req,\n select: incomingSelect,\n }),\n })\n\n // /////////////////////////////////////\n // Retrieve documents\n // /////////////////////////////////////\n\n const { docs } = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n locale: locale!,\n req,\n select,\n where: fullWhere,\n })\n\n const errors: BulkOperationResult<TSlug, TSelect>['errors'] = []\n\n const promises = docs.map(async (doc) => {\n let result\n\n const { id } = doc\n\n try {\n // Each document gets its own transaction when singleTransaction is enabled\n let docShouldCommit = false\n if (req.payload.db.bulkOperationsSingleTransaction) {\n docShouldCommit = await initTransaction(req)\n }\n\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked and cannot be deleted.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeDelete?.length) {\n for (const hook of collectionConfig.hooks.beforeDelete) {\n await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n req,\n })\n }\n }\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc,\n overrideDelete: true,\n req,\n })\n\n // /////////////////////////////////////\n // Delete versions\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await deleteCollectionVersions({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete scheduled posts\n // /////////////////////////////////////\n if (hasScheduledPublishEnabled(collectionConfig)) {\n await deleteScheduledPublishJobs({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete document\n // /////////////////////////////////////\n\n await payload.db.deleteOne({\n collection: collectionConfig.slug,\n req,\n returning: false,\n where: {\n id: {\n equals: id,\n },\n },\n })\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result || doc,\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,\n showHiddenFields: showHiddenFields!,\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\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 || doc,\n overrideAccess,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterDelete?.length) {\n for (const hook of collectionConfig.hooks.afterDelete) {\n result =\n (await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // 8. Return results\n // /////////////////////////////////////\n if (docShouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\n\n if (req.payload.db.bulkOperationsSingleTransaction) {\n await killTransaction(req)\n }\n errors.push({\n id: doc.id,\n isPublic,\n message: error instanceof Error ? error.message : 'Unknown error',\n })\n }\n return null\n })\n\n // Process sequentially when using single transaction mode to avoid shared state issues\n // Process in parallel when using one transaction for better performance\n let awaitedDocs\n if (req.payload.db.bulkOperationsSingleTransaction) {\n awaitedDocs = []\n for (const promise of promises) {\n awaitedDocs.push(await promise)\n }\n } else {\n awaitedDocs = await Promise.all(promises)\n }\n\n // /////////////////////////////////////\n // Delete Preferences\n // /////////////////////////////////////\n\n await deleteUserPreferences({\n collectionConfig,\n ids: docs.map(({ id }) => id),\n payload,\n req,\n })\n\n let result = {\n docs: awaitedDocs.filter(Boolean),\n errors,\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'delete',\n overrideAccess,\n result,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["status","httpStatus","executeAccess","combineQueries","validateQueryPaths","sanitizeWhereQuery","APIError","afterRead","deleteUserPreferences","deleteAssociatedFiles","appendNonTrashedFilter","checkDocumentLockStatus","commitTransaction","hasScheduledPublishEnabled","initTransaction","isErrorPublic","killTransaction","resolveSelect","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","buildBeforeOperation","deleteOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","collectionConfig","depth","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","where","BAD_REQUEST","accessResult","access","delete","fullWhere","enableTrash","fields","flattenedFields","docs","db","find","slug","errors","promises","map","doc","result","id","docShouldCommit","bulkOperationsSingleTransaction","collectionSlug","lockErrorMessage","hooks","beforeDelete","length","hook","context","overrideDelete","versions","deleteOne","returning","equals","draft","undefined","global","auth","afterDelete","error","isPublic","Error","push","message","awaitedDocs","promise","Promise","all","ids","filter","Boolean"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/deleteByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"deleteByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/deleteByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAsB5E,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,EAAE,OAAO,SAAS,UAAU,IAAI;IAChF,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,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,KAAK,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;AAE/C,eAAO,MAAM,mBAAmB,GAAU,KAAK,SAAS,cAAc,EAAE,OAAO,SAAS,UAAU,gBAClF,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,KACtC,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CA2PvD,CAAA"}
|
|
@@ -11,6 +11,7 @@ import { commitTransaction } from '../../utilities/commitTransaction.js';
|
|
|
11
11
|
import { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js';
|
|
12
12
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
13
13
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
14
|
+
import { resolveSelect } from '../../utilities/resolveSelect.js';
|
|
14
15
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
15
16
|
import { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js';
|
|
16
17
|
import { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js';
|
|
@@ -118,8 +119,12 @@ export const deleteByIDOperation = async (incomingArgs)=>{
|
|
|
118
119
|
}
|
|
119
120
|
const select = sanitizeSelect({
|
|
120
121
|
fields: collectionConfig.flattenedFields,
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
select: resolveSelect({
|
|
123
|
+
config: collectionConfig.select,
|
|
124
|
+
operation: 'delete',
|
|
125
|
+
req,
|
|
126
|
+
select: incomingSelect
|
|
127
|
+
})
|
|
123
128
|
});
|
|
124
129
|
// /////////////////////////////////////
|
|
125
130
|
// Delete document
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/deleteByID.ts"],"sourcesContent":["import type { CollectionSlug, FindOptions } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type { Collection, DataFromCollectionSlug } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deleteUserPreferences } from '../../preferences/deleteUserPreferences.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js'\nimport { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments<TSlug extends CollectionSlug, TSelect extends SelectType> = {\n collection: Collection\n depth?: number\n disableTransaction?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<FindOptions<TSlug, TSelect>, 'select'>\n\nexport const deleteByIDOperation = async <TSlug extends CollectionSlug, TSelect extends SelectType>(\n incomingArgs: Arguments<TSlug, TSelect>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'delete',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n collection: { config: collectionConfig },\n depth,\n overrideAccess,\n overrideLock,\n populate,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, req }, collectionConfig.access.delete)\n : true\n const hasWhereAccess = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // beforeDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeDelete?.length) {\n for (const hook of collectionConfig.hooks.beforeDelete) {\n await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n let where = combineQueries({ id: { equals: id } }, accessResults)\n\n // Exclude trashed documents when trash: false\n where = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where,\n })\n\n const docToDelete = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale: req.locale!,\n req,\n where,\n })\n\n if (!docToDelete && !hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (!docToDelete && hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked and cannot be deleted.`,\n overrideLock,\n req,\n })\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc: docToDelete!,\n overrideDelete: true,\n req,\n })\n\n // /////////////////////////////////////\n // Delete versions\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await deleteCollectionVersions({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete scheduled posts\n // /////////////////////////////////////\n if (hasScheduledPublishEnabled(collectionConfig)) {\n await deleteScheduledPublishJobs({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Delete document\n // /////////////////////////////////////\n\n let result: DataFromCollectionSlug<TSlug> = await req.payload.db.deleteOne({\n collection: collectionConfig.slug,\n req,\n select,\n where: { id: { equals: id } },\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Delete Preferences\n // /////////////////////////////////////\n\n await deleteUserPreferences({\n collectionConfig,\n ids: [id],\n payload,\n req,\n })\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result,\n draft: undefined!,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: 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 req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterDelete?.length) {\n for (const hook of collectionConfig.hooks.afterDelete) {\n result =\n (await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'deleteByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // 8. Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformCollectionWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","hasWhereAccessResult","combineQueries","Forbidden","NotFound","afterRead","deleteUserPreferences","deleteAssociatedFiles","appendNonTrashedFilter","checkDocumentLockStatus","commitTransaction","hasScheduledPublishEnabled","initTransaction","killTransaction","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","buildBeforeOperation","deleteByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","id","collectionConfig","depth","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","accessResults","access","delete","hasWhereAccess","hooks","beforeDelete","length","hook","context","where","equals","enableTrash","docToDelete","db","findOne","slug","t","collectionSlug","lockErrorMessage","doc","overrideDelete","versions","fields","flattenedFields","forceSelect","result","deleteOne","auth","ids","draft","undefined","global","afterDelete","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/deleteByID.ts"],"sourcesContent":["import type { CollectionSlug, FindOptions } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type { Collection, DataFromCollectionSlug } from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { hasWhereAccessResult } from '../../auth/types.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { Forbidden, NotFound } from '../../errors/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { deleteUserPreferences } from '../../preferences/deleteUserPreferences.js'\nimport { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { resolveSelect } from '../../utilities/resolveSelect.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js'\nimport { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\n\nexport type Arguments<TSlug extends CollectionSlug, TSelect extends SelectType> = {\n collection: Collection\n depth?: number\n disableTransaction?: boolean\n id: number | string\n overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n showHiddenFields?: boolean\n trash?: boolean\n} & Pick<FindOptions<TSlug, TSelect>, 'select'>\n\nexport const deleteByIDOperation = async <TSlug extends CollectionSlug, TSelect extends SelectType>(\n incomingArgs: Arguments<TSlug, TSelect>,\n): Promise<TransformCollectionWithSelect<TSlug, TSelect>> => {\n let args = incomingArgs\n\n try {\n const shouldCommit = !args.disableTransaction && (await initTransaction(args.req))\n\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n args = await buildBeforeOperation({\n args,\n collection: args.collection.config,\n operation: 'delete',\n overrideAccess: args.overrideAccess!,\n })\n\n const {\n id,\n collection: { config: collectionConfig },\n depth,\n overrideAccess,\n overrideLock,\n populate,\n req: {\n fallbackLocale,\n locale,\n payload: { config },\n payload,\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n trash = false,\n } = args\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess({ id, req }, collectionConfig.access.delete)\n : true\n const hasWhereAccess = hasWhereAccessResult(accessResults)\n\n // /////////////////////////////////////\n // beforeDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.beforeDelete?.length) {\n for (const hook of collectionConfig.hooks.beforeDelete) {\n await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n let where = combineQueries({ id: { equals: id } }, accessResults)\n\n // Exclude trashed documents when trash: false\n where = appendNonTrashedFilter({\n enableTrash: collectionConfig.trash,\n trash,\n where,\n })\n\n const docToDelete = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale: req.locale!,\n req,\n where,\n })\n\n if (!docToDelete && !hasWhereAccess) {\n throw new NotFound(req.t)\n }\n if (!docToDelete && hasWhereAccess) {\n throw new Forbidden(req.t)\n }\n\n // /////////////////////////////////////\n // Handle potentially locked documents\n // /////////////////////////////////////\n\n await checkDocumentLockStatus({\n id,\n collectionSlug: collectionConfig.slug,\n lockErrorMessage: `Document with ID ${id} is currently locked and cannot be deleted.`,\n overrideLock,\n req,\n })\n\n await deleteAssociatedFiles({\n collectionConfig,\n config,\n doc: docToDelete!,\n overrideDelete: true,\n req,\n })\n\n // /////////////////////////////////////\n // Delete versions\n // /////////////////////////////////////\n\n if (collectionConfig.versions) {\n await deleteCollectionVersions({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n // /////////////////////////////////////\n // Delete scheduled posts\n // /////////////////////////////////////\n if (hasScheduledPublishEnabled(collectionConfig)) {\n await deleteScheduledPublishJobs({\n id,\n slug: collectionConfig.slug,\n payload,\n req,\n })\n }\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n select: resolveSelect({\n config: collectionConfig.select,\n operation: 'delete',\n req,\n select: incomingSelect,\n }),\n })\n\n // /////////////////////////////////////\n // Delete document\n // /////////////////////////////////////\n\n let result: DataFromCollectionSlug<TSlug> = await req.payload.db.deleteOne({\n collection: collectionConfig.slug,\n req,\n select,\n where: { id: { equals: id } },\n })\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result = { ...result, collection: collectionConfig.slug }\n }\n\n // /////////////////////////////////////\n // Delete Preferences\n // /////////////////////////////////////\n\n await deleteUserPreferences({\n collectionConfig,\n ids: [id],\n payload,\n req,\n })\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: collectionConfig,\n context: req.context,\n depth: depth!,\n doc: result,\n draft: undefined!,\n fallbackLocale: fallbackLocale!,\n global: null,\n locale: locale!,\n overrideAccess: 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 req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterDelete - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterDelete?.length) {\n for (const hook of collectionConfig.hooks.afterDelete) {\n result =\n (await hook({\n id,\n collection: collectionConfig,\n context: req.context,\n doc: result,\n req,\n })) || result\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'deleteByID',\n overrideAccess,\n result,\n })\n\n // /////////////////////////////////////\n // 8. Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result as TransformCollectionWithSelect<TSlug, TSelect>\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","hasWhereAccessResult","combineQueries","Forbidden","NotFound","afterRead","deleteUserPreferences","deleteAssociatedFiles","appendNonTrashedFilter","checkDocumentLockStatus","commitTransaction","hasScheduledPublishEnabled","initTransaction","killTransaction","resolveSelect","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","buildBeforeOperation","deleteByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","operation","overrideAccess","id","collectionConfig","depth","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","accessResults","access","delete","hasWhereAccess","hooks","beforeDelete","length","hook","context","where","equals","enableTrash","docToDelete","db","findOne","slug","t","collectionSlug","lockErrorMessage","doc","overrideDelete","versions","fields","flattenedFields","result","deleteOne","auth","ids","draft","undefined","global","afterDelete","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,6BAA6B,EAC7B,KAAK,EACN,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/find.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,IAAI,EACJ,6BAA6B,EAC7B,KAAK,EACN,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAsB3B,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,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,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;AAInD,eAAO,MAAM,aAAa,GACxB,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,KACtB,OAAO,CAAC,aAAa,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAwUtE,CAAA"}
|
|
@@ -8,6 +8,7 @@ import { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'
|
|
|
8
8
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
9
9
|
import { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js';
|
|
10
10
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
11
|
+
import { resolveSelect } from '../../utilities/resolveSelect.js';
|
|
11
12
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
12
13
|
import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
|
|
13
14
|
import { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js';
|
|
@@ -36,8 +37,12 @@ export const findOperation = async (incomingArgs)=>{
|
|
|
36
37
|
const { fallbackLocale, locale, payload } = req;
|
|
37
38
|
const select = sanitizeSelect({
|
|
38
39
|
fields: collectionConfig.flattenedFields,
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
select: resolveSelect({
|
|
41
|
+
config: collectionConfig.select,
|
|
42
|
+
operation: 'read',
|
|
43
|
+
req,
|
|
44
|
+
select: incomingSelect
|
|
45
|
+
})
|
|
41
46
|
});
|
|
42
47
|
// /////////////////////////////////////
|
|
43
48
|
// Access
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/find.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n includeLockStatus?: boolean\n joins?: JoinQuery\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\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const findOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>> => {\n let args = incomingArgs\n\n try {\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 collection: { config: collectionConfig },\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft: draftsEnabled,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const { fallbackLocale, locale, payload } = req\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, collectionConfig.access.read)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit!,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 1,\n }\n }\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 let result: PaginatedDocs<DataFromCollectionSlug<TSlug>>\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 sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess: overrideAccess!,\n req,\n })\n\n if (hasDraftsEnabled(collectionConfig) && draftsEnabled) {\n fullWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n result = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination: usePagination,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: getQueryDraftsSort({\n collectionConfig,\n sort,\n }),\n where: fullWhere,\n })\n } else {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where!,\n })\n\n result = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n draftsEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n }\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result.docs = result.docs.map((doc) => ({ ...doc, collection: collectionConfig.slug }))\n }\n\n if (includeLockStatus) {\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n const lockedDocuments = await payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: sanitizedLimit,\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 in: result.docs.map((doc) => doc.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(now - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n const lockedDocs = Array.isArray(lockedDocuments?.docs) ? lockedDocuments.docs : []\n\n // Filter out stale locks\n const validLockedDocs = lockedDocs.filter((lock) => {\n const lastEditedAt = new Date(lock?.updatedAt).getTime()\n return lastEditedAt + lockDurationInMilliseconds > now\n })\n\n for (const doc of result.docs) {\n const lockedDoc = validLockedDocs.find((lock) => lock?.document?.value === doc.id)\n doc._isLocked = !!lockedDoc\n doc._userEditing = lockedDoc ? lockedDoc?.user?.value : null\n }\n } catch (_err) {\n for (const doc of result.docs) {\n doc._isLocked = false\n doc._userEditing = null\n }\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.beforeRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (doc) =>\n afterRead<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc,\n draft: draftsEnabled!,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n }),\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 let docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n findMany: true,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'find',\n overrideAccess: overrideAccess!,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>\n } catch (error: unknown) {\n await killTransaction(args.req!)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeJoinQuery","sanitizeWhereQuery","afterRead","lockedDocumentsCollectionSlug","appendNonTrashedFilter","hasDraftsEnabled","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","sanitizeSortQuery","lockDurationDefault","findOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","currentDepth","depth","disableErrors","draft","draftsEnabled","includeLockStatus","includeLockStatusFromArgs","joins","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","where","req","payload","collections","fallbackLocale","locale","fields","flattenedFields","forceSelect","accessResult","access","read","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","usePagination","sanitizedLimit","sanitizedPage","result","fullWhere","enableTrash","sanitizedJoins","versionFields","db","queryDrafts","slug","payloadAPI","find","auth","map","doc","lockDocumentsProp","lockDocuments","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","lockedDocuments","and","equals","in","id","updatedAt","greater_than","lockedDocs","Array","isArray","validLockedDocs","filter","lock","lastEditedAt","lockedDoc","document","value","_isLocked","_userEditing","user","_err","hooks","beforeRead","length","Promise","all","docRef","hook","context","query","findMany","global","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/find.ts"],"sourcesContent":["import type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { CollectionSlug, FindOptions, JoinQuery } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport { executeAccess } from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js'\nimport { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js'\nimport { killTransaction } from '../../utilities/killTransaction.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 { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { buildAfterOperation } from './utilities/buildAfterOperation.js'\nimport { buildBeforeOperation } from './utilities/buildBeforeOperation.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n includeLockStatus?: boolean\n joins?: JoinQuery\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\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const findOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>> => {\n let args = incomingArgs\n\n try {\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 collection: { config: collectionConfig },\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft: draftsEnabled,\n includeLockStatus: includeLockStatusFromArgs,\n joins,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n trash = false,\n where,\n } = args\n\n const req = args.req!\n\n const includeLockStatus =\n includeLockStatusFromArgs && req.payload.collections?.[lockedDocumentsCollectionSlug]\n\n const { fallbackLocale, locale, payload } = req\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 let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, collectionConfig.access.read)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit: limit!,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 1,\n }\n }\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 let result: PaginatedDocs<DataFromCollectionSlug<TSlug>>\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 sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess: overrideAccess!,\n req,\n })\n\n if (hasDraftsEnabled(collectionConfig) && draftsEnabled) {\n fullWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess: overrideAccess!,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n result = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination: usePagination,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: getQueryDraftsSort({\n collectionConfig,\n sort,\n }),\n where: fullWhere,\n })\n } else {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess: overrideAccess!,\n req,\n where: where!,\n })\n\n result = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n draftsEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale: locale!,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n }\n\n // /////////////////////////////////////\n // Add collection property for auth collections\n // /////////////////////////////////////\n\n if (collectionConfig.auth) {\n result.docs = result.docs.map((doc) => ({ ...doc, collection: collectionConfig.slug }))\n }\n\n if (includeLockStatus) {\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n const lockedDocuments = await payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: sanitizedLimit,\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 in: result.docs.map((doc) => doc.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(now - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n const lockedDocs = Array.isArray(lockedDocuments?.docs) ? lockedDocuments.docs : []\n\n // Filter out stale locks\n const validLockedDocs = lockedDocs.filter((lock) => {\n const lastEditedAt = new Date(lock?.updatedAt).getTime()\n return lastEditedAt + lockDurationInMilliseconds > now\n })\n\n for (const doc of result.docs) {\n const lockedDoc = validLockedDocs.find((lock) => lock?.document?.value === doc.id)\n doc._isLocked = !!lockedDoc\n doc._userEditing = lockedDoc ? lockedDoc?.user?.value : null\n }\n } catch (_err) {\n for (const doc of result.docs) {\n doc._isLocked = false\n doc._userEditing = null\n }\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.beforeRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (doc) =>\n afterRead<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth: depth!,\n doc,\n draft: draftsEnabled!,\n fallbackLocale: fallbackLocale!,\n findMany: true,\n global: null,\n locale: locale!,\n overrideAccess: overrideAccess!,\n populate,\n req,\n select,\n showHiddenFields: showHiddenFields!,\n }),\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 let docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n findMany: true,\n overrideAccess: overrideAccess!,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'find',\n overrideAccess: overrideAccess!,\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>\n } catch (error: unknown) {\n await killTransaction(args.req!)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeJoinQuery","sanitizeWhereQuery","afterRead","lockedDocumentsCollectionSlug","appendNonTrashedFilter","hasDraftsEnabled","killTransaction","resolveSelect","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","getQueryDraftsSort","buildAfterOperation","buildBeforeOperation","sanitizeSortQuery","lockDurationDefault","findOperation","incomingArgs","args","collection","config","operation","overrideAccess","collectionConfig","currentDepth","depth","disableErrors","draft","draftsEnabled","includeLockStatus","includeLockStatusFromArgs","joins","limit","page","pagination","populate","select","incomingSelect","showHiddenFields","sort","incomingSort","trash","where","req","payload","collections","fallbackLocale","locale","fields","flattenedFields","accessResult","access","read","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","usePagination","sanitizedLimit","sanitizedPage","result","fullWhere","enableTrash","sanitizedJoins","versionFields","db","queryDrafts","slug","payloadAPI","find","auth","map","doc","lockDocumentsProp","lockDocuments","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","lockedDocuments","and","equals","in","id","updatedAt","greater_than","lockedDocs","Array","isArray","validLockedDocs","filter","lock","lastEditedAt","lockedDoc","document","value","_isLocked","_userEditing","user","_err","hooks","beforeRead","length","Promise","all","docRef","hook","context","query","findMany","global","error"],"mappings":"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"}
|