payload 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ee5d8bd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/adapters/router.d.ts +1 -1
- package/dist/admin/adapters/router.d.ts.map +1 -1
- package/dist/admin/adapters/router.js.map +1 -1
- package/dist/admin/forms/Diff.d.ts +0 -4
- package/dist/admin/forms/Diff.d.ts.map +1 -1
- package/dist/admin/forms/Diff.js.map +1 -1
- package/dist/admin/forms/Form.d.ts +0 -2
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/forms/Form.js.map +1 -1
- package/dist/admin/initAdminContext.d.ts.map +1 -1
- package/dist/admin/initAdminContext.js +0 -10
- package/dist/admin/initAdminContext.js.map +1 -1
- package/dist/auth/createAuthToken.d.ts +26 -0
- package/dist/auth/createAuthToken.d.ts.map +1 -0
- package/dist/auth/createAuthToken.js +39 -0
- package/dist/auth/createAuthToken.js.map +1 -0
- package/dist/auth/endpoints/refresh.d.ts.map +1 -1
- package/dist/auth/endpoints/refresh.js +2 -1
- package/dist/auth/endpoints/refresh.js.map +1 -1
- package/dist/auth/getFieldsToSign.js.map +1 -1
- package/dist/auth/loginWithCookie.d.ts.map +1 -1
- package/dist/auth/loginWithCookie.js +1 -0
- package/dist/auth/loginWithCookie.js.map +1 -1
- package/dist/auth/operations/local/login.d.ts.map +1 -1
- package/dist/auth/operations/local/login.js +1 -0
- package/dist/auth/operations/local/login.js.map +1 -1
- package/dist/auth/operations/login.d.ts +2 -0
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +6 -19
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts +8 -0
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +50 -19
- package/dist/auth/operations/refresh.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +54 -20
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/refreshAuthToken.d.ts +32 -0
- package/dist/auth/refreshAuthToken.d.ts.map +1 -0
- package/dist/auth/refreshAuthToken.js +113 -0
- package/dist/auth/refreshAuthToken.js.map +1 -0
- package/dist/auth/serverFunctions/cookies.js.map +1 -1
- package/dist/auth/serverFunctions/login.js.map +1 -1
- package/dist/auth/sessions.d.ts +9 -2
- package/dist/auth/sessions.d.ts.map +1 -1
- package/dist/auth/sessions.js +6 -5
- package/dist/auth/sessions.js.map +1 -1
- package/dist/auth/types.d.ts +25 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/cli/commands/data/utilities.d.ts +1 -1
- package/dist/cli/commands/data/utilities.d.ts.map +1 -1
- package/dist/cli/commands/data/utilities.js.map +1 -1
- package/dist/cli/defineCLICommand.js +1 -1
- package/dist/cli/defineCLICommand.js.map +1 -1
- package/dist/collections/config/client.d.ts +1 -1
- package/dist/collections/config/client.d.ts.map +1 -1
- package/dist/collections/config/client.js +0 -1
- package/dist/collections/config/client.js.map +1 -1
- package/dist/collections/config/defaults.d.ts +2 -0
- package/dist/collections/config/defaults.d.ts.map +1 -1
- package/dist/collections/config/defaults.js +4 -0
- package/dist/collections/config/defaults.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +3 -0
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
- package/dist/collections/config/sanitizeCompoundIndexes.js +0 -9
- package/dist/collections/config/sanitizeCompoundIndexes.js.map +1 -1
- package/dist/collections/config/types.d.ts +4 -21
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/dataloader.d.ts +1 -10
- package/dist/collections/dataloader.d.ts.map +1 -1
- package/dist/collections/dataloader.js +6 -14
- package/dist/collections/dataloader.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +0 -13
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +121 -638
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js +32 -238
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/findByID.d.ts.map +1 -1
- package/dist/collections/operations/findByID.js +0 -6
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/findDistinct.js +6 -7
- package/dist/collections/operations/findDistinct.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +7 -0
- package/dist/collections/operations/findVersionByID.js.map +1 -1
- package/dist/collections/operations/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/findVersions.js +5 -0
- package/dist/collections/operations/findVersions.js.map +1 -1
- package/dist/collections/operations/local/count.d.ts +4 -9
- package/dist/collections/operations/local/count.d.ts.map +1 -1
- package/dist/collections/operations/local/count.js.map +1 -1
- package/dist/collections/operations/local/countVersions.d.ts +0 -4
- package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/countVersions.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +4 -9
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +4 -9
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +0 -5
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/find.d.ts +4 -9
- package/dist/collections/operations/local/find.d.ts.map +1 -1
- package/dist/collections/operations/local/find.js.map +1 -1
- package/dist/collections/operations/local/findByID.d.ts +4 -9
- package/dist/collections/operations/local/findByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findByID.js.map +1 -1
- package/dist/collections/operations/local/findDistinct.d.ts +0 -5
- package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
- package/dist/collections/operations/local/findDistinct.js.map +1 -1
- package/dist/collections/operations/local/findVersionByID.d.ts +0 -5
- package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersionByID.js.map +1 -1
- package/dist/collections/operations/local/findVersions.d.ts +0 -5
- package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
- package/dist/collections/operations/local/findVersions.js.map +1 -1
- package/dist/collections/operations/local/restoreVersion.d.ts +0 -5
- package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/local/restoreVersion.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +4 -9
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/renameFile.js +1 -1
- package/dist/collections/operations/renameFile.js.map +1 -1
- package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
- package/dist/collections/operations/restoreVersion.js +76 -157
- package/dist/collections/operations/restoreVersion.js.map +1 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +171 -357
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +0 -15
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +60 -265
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -1
- package/dist/collections/operations/utilities/buildBeforeOperation.js +0 -7
- package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -1
- package/dist/collections/operations/utilities/update.d.ts +1 -14
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +20 -92
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/collections/operations/validate.js +4 -4
- package/dist/collections/operations/validate.js.map +1 -1
- package/dist/config/client.d.ts +1 -3
- package/dist/config/client.d.ts.map +1 -1
- package/dist/config/client.js +1 -9
- package/dist/config/client.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/definePlugin.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +2 -40
- package/dist/config/sanitize.js.map +1 -1
- package/dist/config/types.d.ts +13 -21
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database/defaultCopy.d.ts.map +1 -1
- package/dist/database/defaultCopy.js +0 -1
- package/dist/database/defaultCopy.js.map +1 -1
- package/dist/database/types.d.ts +4 -75
- package/dist/database/types.d.ts.map +1 -1
- package/dist/database/types.js.map +1 -1
- package/dist/exports/build-config.d.ts +9 -0
- package/dist/exports/build-config.d.ts.map +1 -0
- package/dist/exports/build-config.js +38 -0
- package/dist/exports/build-config.js.map +1 -0
- package/dist/exports/shared.d.ts +0 -2
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +0 -2
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/authorship/index.d.ts +1 -2
- package/dist/fields/baseFields/authorship/index.d.ts.map +1 -1
- package/dist/fields/baseFields/authorship/index.js +0 -12
- package/dist/fields/baseFields/authorship/index.js.map +1 -1
- package/dist/fields/config/client.js.map +1 -1
- package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
- package/dist/fields/config/reservedFieldNames.js.map +1 -1
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/fields/hooks/afterChange/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/index.d.ts +0 -8
- package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/index.js +2 -6
- package/dist/fields/hooks/afterRead/index.js.map +1 -1
- package/dist/fields/hooks/afterRead/promise.d.ts +1 -3
- package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/promise.js +17 -41
- package/dist/fields/hooks/afterRead/promise.js.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +0 -2
- package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.d.ts +1 -3
- package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/traverseFields.js +2 -4
- package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js +0 -3
- package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
- package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
- package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +96 -22
- package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
- package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeValidate/promise.js +0 -8
- package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +4 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/config/types.d.ts +2 -6
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/config/types.js.map +1 -1
- package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
- package/dist/globals/operations/countGlobalVersions.js +0 -7
- package/dist/globals/operations/countGlobalVersions.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +0 -7
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/findVersionByID.js +6 -6
- package/dist/globals/operations/findVersionByID.js.map +1 -1
- package/dist/globals/operations/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/findVersions.js +4 -6
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/local/countVersions.d.ts +0 -5
- package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/countVersions.js.map +1 -1
- package/dist/globals/operations/local/findOne.d.ts +0 -5
- package/dist/globals/operations/local/findOne.d.ts.map +1 -1
- package/dist/globals/operations/local/findOne.js.map +1 -1
- package/dist/globals/operations/local/findVersionByID.d.ts +0 -5
- package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersionByID.js.map +1 -1
- package/dist/globals/operations/local/findVersions.d.ts +0 -5
- package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
- package/dist/globals/operations/local/findVersions.js.map +1 -1
- package/dist/globals/operations/local/restoreVersion.d.ts +0 -5
- package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/local/restoreVersion.js.map +1 -1
- package/dist/globals/operations/local/update.d.ts +0 -5
- package/dist/globals/operations/local/update.d.ts.map +1 -1
- package/dist/globals/operations/local/update.js +18 -61
- package/dist/globals/operations/local/update.js.map +1 -1
- package/dist/globals/operations/restoreVersion.d.ts +2 -3
- package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
- package/dist/globals/operations/restoreVersion.js +24 -61
- package/dist/globals/operations/restoreVersion.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +8 -86
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/globals/operations/validate.js +1 -1
- package/dist/globals/operations/validate.js.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
- package/dist/hierarchy/addHierarchyToCollection.js +32 -21
- package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
- package/dist/hierarchy/createFolderField.js.map +1 -1
- package/dist/hierarchy/getInitialTreeData.d.ts +1 -3
- package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
- package/dist/hierarchy/getInitialTreeData.js +1 -4
- package/dist/hierarchy/getInitialTreeData.js.map +1 -1
- package/dist/hierarchy/resolveHierarchyCollections.js +9 -3
- package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
- package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
- package/dist/hierarchy/utils/computePaths.js.map +1 -1
- package/dist/index.bundled.d.ts +4336 -5501
- package/dist/index.d.ts +27 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -37
- package/dist/index.js.map +1 -1
- package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -1
- package/dist/llm-instructions/getInstructionsCollection.js +2 -0
- package/dist/llm-instructions/getInstructionsCollection.js.map +1 -1
- package/dist/preferences/keys.d.ts +4 -11
- package/dist/preferences/keys.d.ts.map +1 -1
- package/dist/preferences/keys.js +3 -10
- package/dist/preferences/keys.js.map +1 -1
- package/dist/preferences/types.d.ts +0 -19
- package/dist/preferences/types.d.ts.map +1 -1
- package/dist/preferences/types.js.map +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +1 -1
- package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
- package/dist/uploads/deleteAssociatedFiles.js +29 -108
- package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
- package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
- package/dist/uploads/endpoints/getFile.js +0 -5
- package/dist/uploads/endpoints/getFile.js.map +1 -1
- package/dist/uploads/fileExists.d.ts.map +1 -1
- package/dist/uploads/fileExists.js +2 -5
- package/dist/uploads/fileExists.js.map +1 -1
- package/dist/uploads/fileVersioning/archive.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/archive.js +1 -15
- package/dist/uploads/fileVersioning/archive.js.map +1 -1
- package/dist/uploads/fileVersioning/cleanup.d.ts +0 -7
- package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/cleanup.js +0 -12
- package/dist/uploads/fileVersioning/cleanup.js.map +1 -1
- package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -1
- package/dist/uploads/fileVersioning/cloudStorage.js +1 -16
- package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -1
- package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -1
- package/dist/uploads/formatFilesize.js +1 -1
- package/dist/uploads/formatFilesize.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts +0 -5
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +2 -74
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +29 -46
- package/dist/uploads/getBaseFields.js.map +1 -1
- package/dist/uploads/getFileContentRequirement.js.map +1 -1
- package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
- package/dist/uploads/getSafeFilename.d.ts.map +1 -1
- package/dist/uploads/getSafeFilename.js +3 -5
- package/dist/uploads/getSafeFilename.js.map +1 -1
- package/dist/uploads/safeFetch.js.map +1 -1
- package/dist/uploads/stagedUpload.js.map +1 -1
- package/dist/uploads/transformers/handleDynamicFileRequest.js +11 -2
- package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -1
- package/dist/uploads/types.d.ts +0 -11
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js.map +1 -1
- package/dist/uploads/uploadFiles.d.ts +1 -4
- package/dist/uploads/uploadFiles.d.ts.map +1 -1
- package/dist/uploads/uploadFiles.js +5 -29
- package/dist/uploads/uploadFiles.js.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
- package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
- package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
- package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -1
- package/dist/utilities/assertNoValidationWrite.js +0 -4
- package/dist/utilities/assertNoValidationWrite.js.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.d.ts +6 -15
- package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
- package/dist/utilities/checkDocumentLockStatus.js +11 -44
- package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
- package/dist/utilities/cloneValidationRequest.js.map +1 -1
- package/dist/utilities/commitTransaction.d.ts +0 -4
- package/dist/utilities/commitTransaction.d.ts.map +1 -1
- package/dist/utilities/commitTransaction.js +1 -41
- package/dist/utilities/commitTransaction.js.map +1 -1
- package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
- package/dist/utilities/configToJSONSchema.js +2 -18
- package/dist/utilities/configToJSONSchema.js.map +1 -1
- package/dist/utilities/createPayloadRequest.d.ts +0 -5
- package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequest.js +3 -50
- package/dist/utilities/createPayloadRequest.js.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +12 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -1
- package/dist/utilities/createPayloadRequestFromWebRequest.js +9 -5
- package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -1
- package/dist/utilities/deepCopyObject.js.map +1 -1
- package/dist/utilities/documentMatchingWhereExists.js +1 -1
- package/dist/utilities/documentMatchingWhereExists.js.map +1 -1
- package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -1
- package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -1
- package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js +1 -0
- package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
- package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
- package/dist/utilities/getVersionsConfig.d.ts +4 -0
- package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
- package/dist/utilities/getVersionsConfig.js +5 -0
- package/dist/utilities/getVersionsConfig.js.map +1 -1
- package/dist/utilities/handleEndpoints.d.ts.map +1 -1
- package/dist/utilities/handleEndpoints.js +10 -9
- package/dist/utilities/handleEndpoints.js.map +1 -1
- package/dist/utilities/httpStatus.d.ts +0 -2
- package/dist/utilities/httpStatus.d.ts.map +1 -1
- package/dist/utilities/httpStatus.js +1 -3
- package/dist/utilities/httpStatus.js.map +1 -1
- package/dist/utilities/initTransaction.d.ts.map +1 -1
- package/dist/utilities/initTransaction.js +7 -35
- package/dist/utilities/initTransaction.js.map +1 -1
- package/dist/utilities/killTransaction.d.ts.map +1 -1
- package/dist/utilities/killTransaction.js +0 -27
- package/dist/utilities/killTransaction.js.map +1 -1
- package/dist/utilities/parseParams/index.js.map +1 -1
- package/dist/utilities/parseValidationLocale.js.map +1 -1
- package/dist/utilities/sanitizePopulateParam.js.map +1 -1
- package/dist/utilities/telemetry/conf/index.d.ts +4 -1
- package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
- package/dist/utilities/telemetry/conf/index.js.map +1 -1
- package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -1
- package/dist/versions/allLocalesPublicationStatus.js.map +1 -1
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +0 -23
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +0 -14
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
- package/dist/versions/buildVersionCompoundIndexes.js +2 -8
- package/dist/versions/buildVersionCompoundIndexes.js.map +1 -1
- package/dist/versions/deleteCollectionVersions.d.ts +1 -2
- package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
- package/dist/versions/deleteCollectionVersions.js +8 -37
- package/dist/versions/deleteCollectionVersions.js.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
- package/dist/versions/deleteScheduledPublishJobs.js +0 -4
- package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
- package/dist/versions/drafts/appendVersionToQueryKey.js +1 -9
- package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -8
- package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
- package/dist/versions/enforceMaxVersions.d.ts +0 -1
- package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
- package/dist/versions/enforceMaxVersions.js +6 -22
- package/dist/versions/enforceMaxVersions.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +2 -10
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts +2 -6
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +21 -65
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -1
- package/dist/versions/saveVersion.d.ts +0 -7
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +4 -27
- package/dist/versions/saveVersion.js.map +1 -1
- package/dist/versions/updateLatestVersion.d.ts +0 -1
- package/dist/versions/updateLatestVersion.d.ts.map +1 -1
- package/dist/versions/updateLatestVersion.js +7 -24
- package/dist/versions/updateLatestVersion.js.map +1 -1
- package/package.json +30 -28
- package/skills/payload/reference/ENDPOINTS.md +3 -9
- package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +4 -4
- package/dist/admin/getAdminPreferences.d.ts +0 -10
- package/dist/admin/getAdminPreferences.d.ts.map +0 -1
- package/dist/admin/getAdminPreferences.js +0 -53
- package/dist/admin/getAdminPreferences.js.map +0 -1
- package/dist/admin/getRequestBranch.d.ts +0 -6
- package/dist/admin/getRequestBranch.d.ts.map +0 -1
- package/dist/admin/getRequestBranch.js +0 -17
- package/dist/admin/getRequestBranch.js.map +0 -1
- package/dist/branching/appendBranchFilter.d.ts +0 -30
- package/dist/branching/appendBranchFilter.d.ts.map +0 -1
- package/dist/branching/appendBranchFilter.js +0 -105
- package/dist/branching/appendBranchFilter.js.map +0 -1
- package/dist/branching/assertBranchAccess.d.ts +0 -10
- package/dist/branching/assertBranchAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchAccess.js +0 -36
- package/dist/branching/assertBranchAccess.js.map +0 -1
- package/dist/branching/assertBranchActionAccess.d.ts +0 -10
- package/dist/branching/assertBranchActionAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchActionAccess.js +0 -15
- package/dist/branching/assertBranchActionAccess.js.map +0 -1
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts +0 -53
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts.map +0 -1
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js +0 -833
- package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js.map +0 -1
- package/dist/branching/assertBranchReadable.d.ts +0 -36
- package/dist/branching/assertBranchReadable.d.ts.map +0 -1
- package/dist/branching/assertBranchReadable.js +0 -83
- package/dist/branching/assertBranchReadable.js.map +0 -1
- package/dist/branching/assertBranchUpdateAccess.d.ts +0 -8
- package/dist/branching/assertBranchUpdateAccess.d.ts.map +0 -1
- package/dist/branching/assertBranchUpdateAccess.js +0 -12
- package/dist/branching/assertBranchUpdateAccess.js.map +0 -1
- package/dist/branching/assertBranchWritable.d.ts +0 -18
- package/dist/branching/assertBranchWritable.d.ts.map +0 -1
- package/dist/branching/assertBranchWritable.js +0 -46
- package/dist/branching/assertBranchWritable.js.map +0 -1
- package/dist/branching/branchIDs.d.ts +0 -38
- package/dist/branching/branchIDs.d.ts.map +0 -1
- package/dist/branching/branchIDs.js +0 -113
- package/dist/branching/branchIDs.js.map +0 -1
- package/dist/branching/branchSelect.d.ts +0 -42
- package/dist/branching/branchSelect.d.ts.map +0 -1
- package/dist/branching/branchSelect.js +0 -97
- package/dist/branching/branchSelect.js.map +0 -1
- package/dist/branching/checkFieldAccess.d.ts +0 -21
- package/dist/branching/checkFieldAccess.d.ts.map +0 -1
- package/dist/branching/checkFieldAccess.js +0 -238
- package/dist/branching/checkFieldAccess.js.map +0 -1
- package/dist/branching/collections.d.ts +0 -14
- package/dist/branching/collections.d.ts.map +0 -1
- package/dist/branching/collections.js +0 -713
- package/dist/branching/collections.js.map +0 -1
- package/dist/branching/combineBranchAccess.d.ts +0 -6
- package/dist/branching/combineBranchAccess.d.ts.map +0 -1
- package/dist/branching/combineBranchAccess.js +0 -22
- package/dist/branching/combineBranchAccess.js.map +0 -1
- package/dist/branching/copyUploadFilesToBranch.d.ts +0 -9
- package/dist/branching/copyUploadFilesToBranch.d.ts.map +0 -1
- package/dist/branching/copyUploadFilesToBranch.js +0 -126
- package/dist/branching/copyUploadFilesToBranch.js.map +0 -1
- package/dist/branching/createShadowRow.d.ts +0 -70
- package/dist/branching/createShadowRow.d.ts.map +0 -1
- package/dist/branching/createShadowRow.js +0 -296
- package/dist/branching/createShadowRow.js.map +0 -1
- package/dist/branching/discard.d.ts +0 -52
- package/dist/branching/discard.d.ts.map +0 -1
- package/dist/branching/discard.js +0 -428
- package/dist/branching/discard.js.map +0 -1
- package/dist/branching/effectiveOperations.d.ts +0 -55
- package/dist/branching/effectiveOperations.d.ts.map +0 -1
- package/dist/branching/effectiveOperations.js +0 -472
- package/dist/branching/effectiveOperations.js.map +0 -1
- package/dist/branching/endpoints/discard.d.ts +0 -15
- package/dist/branching/endpoints/discard.d.ts.map +0 -1
- package/dist/branching/endpoints/discard.js +0 -55
- package/dist/branching/endpoints/discard.js.map +0 -1
- package/dist/branching/endpoints/merge.d.ts +0 -34
- package/dist/branching/endpoints/merge.d.ts.map +0 -1
- package/dist/branching/endpoints/merge.js +0 -119
- package/dist/branching/endpoints/merge.js.map +0 -1
- package/dist/branching/forkDocument.d.ts +0 -20
- package/dist/branching/forkDocument.d.ts.map +0 -1
- package/dist/branching/forkDocument.js +0 -169
- package/dist/branching/forkDocument.js.map +0 -1
- package/dist/branching/globalMergeWrites.d.ts +0 -21
- package/dist/branching/globalMergeWrites.d.ts.map +0 -1
- package/dist/branching/globalMergeWrites.js +0 -146
- package/dist/branching/globalMergeWrites.js.map +0 -1
- package/dist/branching/globals.d.ts +0 -49
- package/dist/branching/globals.d.ts.map +0 -1
- package/dist/branching/globals.js +0 -197
- package/dist/branching/globals.js.map +0 -1
- package/dist/branching/hooks.d.ts +0 -24
- package/dist/branching/hooks.d.ts.map +0 -1
- package/dist/branching/hooks.js +0 -92
- package/dist/branching/hooks.js.map +0 -1
- package/dist/branching/injectBranchFields.d.ts +0 -40
- package/dist/branching/injectBranchFields.d.ts.map +0 -1
- package/dist/branching/injectBranchFields.js +0 -229
- package/dist/branching/injectBranchFields.js.map +0 -1
- package/dist/branching/merge/applyMergeChange.d.ts +0 -27
- package/dist/branching/merge/applyMergeChange.d.ts.map +0 -1
- package/dist/branching/merge/applyMergeChange.js +0 -853
- package/dist/branching/merge/applyMergeChange.js.map +0 -1
- package/dist/branching/merge/branchMergeStatus.d.ts +0 -12
- package/dist/branching/merge/branchMergeStatus.d.ts.map +0 -1
- package/dist/branching/merge/branchMergeStatus.js +0 -74
- package/dist/branching/merge/branchMergeStatus.js.map +0 -1
- package/dist/branching/merge/executeMerge.d.ts +0 -22
- package/dist/branching/merge/executeMerge.d.ts.map +0 -1
- package/dist/branching/merge/executeMerge.js +0 -600
- package/dist/branching/merge/executeMerge.js.map +0 -1
- package/dist/branching/merge/finalizeMerge.d.ts +0 -40
- package/dist/branching/merge/finalizeMerge.d.ts.map +0 -1
- package/dist/branching/merge/finalizeMerge.js +0 -237
- package/dist/branching/merge/finalizeMerge.js.map +0 -1
- package/dist/branching/merge/mergeLedger.d.ts +0 -40
- package/dist/branching/merge/mergeLedger.d.ts.map +0 -1
- package/dist/branching/merge/mergeLedger.js +0 -130
- package/dist/branching/merge/mergeLedger.js.map +0 -1
- package/dist/branching/merge/prepareMerge.d.ts +0 -41
- package/dist/branching/merge/prepareMerge.d.ts.map +0 -1
- package/dist/branching/merge/prepareMerge.js +0 -234
- package/dist/branching/merge/prepareMerge.js.map +0 -1
- package/dist/branching/merge/recoverMerge.d.ts +0 -16
- package/dist/branching/merge/recoverMerge.d.ts.map +0 -1
- package/dist/branching/merge/recoverMerge.js +0 -199
- package/dist/branching/merge/recoverMerge.js.map +0 -1
- package/dist/branching/merge/retryFailedCleanups.d.ts +0 -36
- package/dist/branching/merge/retryFailedCleanups.d.ts.map +0 -1
- package/dist/branching/merge/retryFailedCleanups.js +0 -335
- package/dist/branching/merge/retryFailedCleanups.js.map +0 -1
- package/dist/branching/merge/utilities.d.ts +0 -35
- package/dist/branching/merge/utilities.d.ts.map +0 -1
- package/dist/branching/merge/utilities.js +0 -54
- package/dist/branching/merge/utilities.js.map +0 -1
- package/dist/branching/merge.d.ts +0 -88
- package/dist/branching/merge.d.ts.map +0 -1
- package/dist/branching/merge.js +0 -163
- package/dist/branching/merge.js.map +0 -1
- package/dist/branching/mergeWriteGuard.d.ts +0 -20
- package/dist/branching/mergeWriteGuard.d.ts.map +0 -1
- package/dist/branching/mergeWriteGuard.js +0 -27
- package/dist/branching/mergeWriteGuard.js.map +0 -1
- package/dist/branching/preflight.d.ts +0 -71
- package/dist/branching/preflight.d.ts.map +0 -1
- package/dist/branching/preflight.js +0 -757
- package/dist/branching/preflight.js.map +0 -1
- package/dist/branching/readLocalizedBranchWrite.d.ts +0 -14
- package/dist/branching/readLocalizedBranchWrite.d.ts.map +0 -1
- package/dist/branching/readLocalizedBranchWrite.js +0 -90
- package/dist/branching/readLocalizedBranchWrite.js.map +0 -1
- package/dist/branching/readMergeSnapshot.d.ts +0 -18
- package/dist/branching/readMergeSnapshot.d.ts.map +0 -1
- package/dist/branching/readMergeSnapshot.js +0 -99
- package/dist/branching/readMergeSnapshot.js.map +0 -1
- package/dist/branching/resolveBranch.d.ts +0 -153
- package/dist/branching/resolveBranch.d.ts.map +0 -1
- package/dist/branching/resolveBranch.js +0 -363
- package/dist/branching/resolveBranch.js.map +0 -1
- package/dist/branching/resolveBranchActionAccess.d.ts +0 -8
- package/dist/branching/resolveBranchActionAccess.d.ts.map +0 -1
- package/dist/branching/resolveBranchActionAccess.js +0 -9
- package/dist/branching/resolveBranchActionAccess.js.map +0 -1
- package/dist/branching/resolveBranchQuery.d.ts +0 -48
- package/dist/branching/resolveBranchQuery.d.ts.map +0 -1
- package/dist/branching/resolveBranchQuery.js +0 -115
- package/dist/branching/resolveBranchQuery.js.map +0 -1
- package/dist/branching/resolveBranchRowID.d.ts +0 -22
- package/dist/branching/resolveBranchRowID.d.ts.map +0 -1
- package/dist/branching/resolveBranchRowID.js +0 -70
- package/dist/branching/resolveBranchRowID.js.map +0 -1
- package/dist/branching/sanitizeBranchingConfig.d.ts +0 -31
- package/dist/branching/sanitizeBranchingConfig.d.ts.map +0 -1
- package/dist/branching/sanitizeBranchingConfig.js +0 -110
- package/dist/branching/sanitizeBranchingConfig.js.map +0 -1
- package/dist/branching/schedule/job.d.ts +0 -51
- package/dist/branching/schedule/job.d.ts.map +0 -1
- package/dist/branching/schedule/job.js +0 -151
- package/dist/branching/schedule/job.js.map +0 -1
- package/dist/branching/selectBranchChanges.d.ts +0 -8
- package/dist/branching/selectBranchChanges.d.ts.map +0 -1
- package/dist/branching/selectBranchChanges.js +0 -9
- package/dist/branching/selectBranchChanges.js.map +0 -1
- package/dist/branching/stripBranchMergeData.d.ts +0 -11
- package/dist/branching/stripBranchMergeData.d.ts.map +0 -1
- package/dist/branching/stripBranchMergeData.js +0 -20
- package/dist/branching/stripBranchMergeData.js.map +0 -1
- package/dist/branching/tombstone.d.ts +0 -91
- package/dist/branching/tombstone.d.ts.map +0 -1
- package/dist/branching/tombstone.js +0 -546
- package/dist/branching/tombstone.js.map +0 -1
- package/dist/branching/types.d.ts +0 -158
- package/dist/branching/types.d.ts.map +0 -1
- package/dist/branching/types.js +0 -54
- package/dist/branching/types.js.map +0 -1
- package/dist/branching/validation.d.ts +0 -47
- package/dist/branching/validation.d.ts.map +0 -1
- package/dist/branching/validation.js +0 -272
- package/dist/branching/validation.js.map +0 -1
- package/dist/branching/versions.d.ts +0 -131
- package/dist/branching/versions.d.ts.map +0 -1
- package/dist/branching/versions.js +0 -572
- package/dist/branching/versions.js.map +0 -1
- package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts +0 -23
- package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts.map +0 -1
- package/dist/collections/operations/utilities/createOperationRetryRequest.js +0 -683
- package/dist/collections/operations/utilities/createOperationRetryRequest.js.map +0 -1
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts +0 -3
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts.map +0 -1
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js +0 -3
- package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js.map +0 -1
- package/dist/uploads/appendBranchToFileURL.d.ts +0 -6
- package/dist/uploads/appendBranchToFileURL.d.ts.map +0 -1
- package/dist/uploads/appendBranchToFileURL.js +0 -24
- package/dist/uploads/appendBranchToFileURL.js.map +0 -1
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts +0 -15
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts.map +0 -1
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.js +0 -62
- package/dist/uploads/deleteUploadFilesExclusiveToDocument.js.map +0 -1
- package/dist/uploads/fileIdentity.d.ts +0 -24
- package/dist/uploads/fileIdentity.d.ts.map +0 -1
- package/dist/uploads/fileIdentity.js +0 -36
- package/dist/uploads/fileIdentity.js.map +0 -1
- package/dist/uploads/fileQuarantine.d.ts +0 -17
- package/dist/uploads/fileQuarantine.d.ts.map +0 -1
- package/dist/uploads/fileQuarantine.js +0 -52
- package/dist/uploads/fileQuarantine.js.map +0 -1
- package/dist/uploads/linkFileWithoutOverwrite.d.ts +0 -13
- package/dist/uploads/linkFileWithoutOverwrite.d.ts.map +0 -1
- package/dist/uploads/linkFileWithoutOverwrite.js +0 -13
- package/dist/uploads/linkFileWithoutOverwrite.js.map +0 -1
- package/dist/uploads/uploadFileRollback.d.ts +0 -31
- package/dist/uploads/uploadFileRollback.d.ts.map +0 -1
- package/dist/uploads/uploadFileRollback.js +0 -269
- package/dist/uploads/uploadFileRollback.js.map +0 -1
- package/dist/utilities/extractRelationshipID.d.ts +0 -4
- package/dist/utilities/extractRelationshipID.d.ts.map +0 -1
- package/dist/utilities/extractRelationshipID.js +0 -14
- package/dist/utilities/extractRelationshipID.js.map +0 -1
- package/dist/utilities/transactionCallbacks.d.ts +0 -77
- package/dist/utilities/transactionCallbacks.d.ts.map +0 -1
- package/dist/utilities/transactionCallbacks.js +0 -299
- package/dist/utilities/transactionCallbacks.js.map +0 -1
- package/dist/utilities/transactionMutationTracker.d.ts +0 -21
- package/dist/utilities/transactionMutationTracker.d.ts.map +0 -1
- package/dist/utilities/transactionMutationTracker.js +0 -71
- package/dist/utilities/transactionMutationTracker.js.map +0 -1
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
const callbacksByDatabase = new WeakMap();
|
|
2
|
-
const rollbackCallbacksByDatabase = new WeakMap();
|
|
3
|
-
export const deferredCleanupScopeContextKey = '_payloadDeferredCleanupScope';
|
|
4
|
-
let nextTransactionCallbackSequence = 0;
|
|
5
|
-
/** Creates a request context whose cleanup callbacks can be managed independently. */ export const createIsolatedDeferredCleanupContext = ({ req })=>{
|
|
6
|
-
const sourceContext = req.context ?? {};
|
|
7
|
-
const context = {};
|
|
8
|
-
for (const key of Reflect.ownKeys(sourceContext)){
|
|
9
|
-
if (key === deferredCleanupScopeContextKey) {
|
|
10
|
-
continue;
|
|
11
|
-
}
|
|
12
|
-
const descriptor = Object.getOwnPropertyDescriptor(sourceContext, key);
|
|
13
|
-
if (descriptor?.enumerable) {
|
|
14
|
-
Object.defineProperty(context, key, descriptor);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return context;
|
|
18
|
-
};
|
|
19
|
-
export const hasActiveDeferredCleanupScope = ({ req })=>Boolean(req.context?.[deferredCleanupScopeContextKey]);
|
|
20
|
-
/**
|
|
21
|
-
* Creates an operation-owned cleanup queue. Successful nested scopes transfer their cleanup to a
|
|
22
|
-
* parent for the same database and transaction. Root transaction scopes transfer their cleanup to
|
|
23
|
-
* the transaction queue. Failed scopes can therefore discard only the cleanup they still own.
|
|
24
|
-
*/ export const beginDeferredCleanupScope = async ({ req })=>{
|
|
25
|
-
const transactionID = await resolveTransactionID({
|
|
26
|
-
req
|
|
27
|
-
});
|
|
28
|
-
return createDeferredCleanupScope({
|
|
29
|
-
req,
|
|
30
|
-
transactionID
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
/** Reuses an operation scope when a low-level cleanup helper does not need its own savepoint. */ export const beginDeferredCleanupScopeIfNeeded = async ({ req })=>{
|
|
34
|
-
const transactionID = await resolveTransactionID({
|
|
35
|
-
req
|
|
36
|
-
});
|
|
37
|
-
const activeScope = req.context?.[deferredCleanupScopeContextKey];
|
|
38
|
-
if (activeScope?.database === req.payload.db && activeScope.transactionID === (transactionID || undefined)) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
return createDeferredCleanupScope({
|
|
42
|
-
req,
|
|
43
|
-
transactionID
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
const createDeferredCleanupScope = ({ req, transactionID })=>{
|
|
47
|
-
req.context ??= {};
|
|
48
|
-
const parent = req.context[deferredCleanupScopeContextKey] ?? null;
|
|
49
|
-
const scope = {
|
|
50
|
-
callbacks: [],
|
|
51
|
-
database: req.payload.db,
|
|
52
|
-
parent,
|
|
53
|
-
state: 'collecting',
|
|
54
|
-
transactionID: transactionID ?? undefined
|
|
55
|
-
};
|
|
56
|
-
req.context[deferredCleanupScopeContextKey] = scope;
|
|
57
|
-
return scope;
|
|
58
|
-
};
|
|
59
|
-
const resolveTransactionID = async ({ req })=>req.transactionID instanceof Promise ? await req.transactionID : req.transactionID;
|
|
60
|
-
export const scheduleAfterTransactionCommit = async ({ callback, req })=>{
|
|
61
|
-
const pendingTransactionID = req.transactionID;
|
|
62
|
-
const transactionID = pendingTransactionID instanceof Promise ? await pendingTransactionID : pendingTransactionID;
|
|
63
|
-
const scope = req.context?.[deferredCleanupScopeContextKey];
|
|
64
|
-
const callbackEntry = {
|
|
65
|
-
callback,
|
|
66
|
-
sequence: nextTransactionCallbackSequence++
|
|
67
|
-
};
|
|
68
|
-
if (scope?.database === req.payload.db && scope.transactionID === (transactionID ?? undefined)) {
|
|
69
|
-
if (scope.state === 'flushing') {
|
|
70
|
-
await callback();
|
|
71
|
-
} else {
|
|
72
|
-
scope.callbacks.push(callbackEntry);
|
|
73
|
-
}
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (!transactionID) {
|
|
77
|
-
if (req.transactionID === pendingTransactionID) {
|
|
78
|
-
delete req.transactionID;
|
|
79
|
-
}
|
|
80
|
-
throw new Error('File cleanup requires an active transaction or deferred cleanup scope.');
|
|
81
|
-
}
|
|
82
|
-
getTransactionCallbacks({
|
|
83
|
-
database: req.payload.db,
|
|
84
|
-
transactionID
|
|
85
|
-
}).push(callbackEntry);
|
|
86
|
-
};
|
|
87
|
-
export const scheduleAfterTransactionRollback = async ({ callback, req })=>{
|
|
88
|
-
const pendingTransactionID = req.transactionID;
|
|
89
|
-
const transactionID = pendingTransactionID instanceof Promise ? await pendingTransactionID : pendingTransactionID;
|
|
90
|
-
if (!transactionID) {
|
|
91
|
-
throw new Error('Rollback callbacks require an active transaction.');
|
|
92
|
-
}
|
|
93
|
-
getRollbackCallbacks({
|
|
94
|
-
database: req.payload.db,
|
|
95
|
-
transactionID
|
|
96
|
-
}).push({
|
|
97
|
-
callback,
|
|
98
|
-
sequence: nextTransactionCallbackSequence++
|
|
99
|
-
});
|
|
100
|
-
};
|
|
101
|
-
export const runTransactionCommitCallbacks = async ({ req, transactionID })=>{
|
|
102
|
-
const callbacksByTransaction = callbacksByDatabase.get(req.payload.db);
|
|
103
|
-
const callbacks = callbacksByTransaction?.get(transactionID) ?? [];
|
|
104
|
-
const scopedCallbacks = closeTransactionScopes({
|
|
105
|
-
req,
|
|
106
|
-
transactionID
|
|
107
|
-
});
|
|
108
|
-
callbacksByTransaction?.delete(transactionID);
|
|
109
|
-
if (callbacksByTransaction?.size === 0) {
|
|
110
|
-
callbacksByDatabase.delete(req.payload.db);
|
|
111
|
-
}
|
|
112
|
-
if (callbacks.length === 0 && scopedCallbacks.length === 0) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
await runCallbacks({
|
|
116
|
-
callbacks: [
|
|
117
|
-
...callbacks,
|
|
118
|
-
...scopedCallbacks
|
|
119
|
-
]
|
|
120
|
-
});
|
|
121
|
-
};
|
|
122
|
-
export const clearTransactionCommitCallbacks = ({ req, transactionID })=>{
|
|
123
|
-
const callbacksByTransaction = callbacksByDatabase.get(req.payload.db);
|
|
124
|
-
closeTransactionScopes({
|
|
125
|
-
req,
|
|
126
|
-
transactionID
|
|
127
|
-
});
|
|
128
|
-
callbacksByTransaction?.delete(transactionID);
|
|
129
|
-
if (callbacksByTransaction?.size === 0) {
|
|
130
|
-
callbacksByDatabase.delete(req.payload.db);
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
|
-
export const runTransactionRollbackCallbacks = async ({ req, transactionID })=>{
|
|
134
|
-
const callbacksByTransaction = rollbackCallbacksByDatabase.get(req.payload.db);
|
|
135
|
-
const callbacks = callbacksByTransaction?.get(transactionID);
|
|
136
|
-
if (!callbacks) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
callbacksByTransaction.delete(transactionID);
|
|
140
|
-
if (callbacksByTransaction.size === 0) {
|
|
141
|
-
rollbackCallbacksByDatabase.delete(req.payload.db);
|
|
142
|
-
}
|
|
143
|
-
await runCallbacks({
|
|
144
|
-
callbacks
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
export const clearTransactionRollbackCallbacks = ({ req, transactionID })=>{
|
|
148
|
-
const callbacksByTransaction = rollbackCallbacksByDatabase.get(req.payload.db);
|
|
149
|
-
callbacksByTransaction?.delete(transactionID);
|
|
150
|
-
if (callbacksByTransaction?.size === 0) {
|
|
151
|
-
rollbackCallbacksByDatabase.delete(req.payload.db);
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
export const flushDeferredCleanupScope = async ({ req, scope })=>{
|
|
155
|
-
if (scope.state === 'closed') {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
assertDeferredCleanupScopeIsActive({
|
|
159
|
-
req,
|
|
160
|
-
scope
|
|
161
|
-
});
|
|
162
|
-
if (scope.parent?.database === scope.database && scope.parent.transactionID === scope.transactionID) {
|
|
163
|
-
scope.parent.callbacks.push(...scope.callbacks);
|
|
164
|
-
scope.callbacks.length = 0;
|
|
165
|
-
popScope({
|
|
166
|
-
req,
|
|
167
|
-
scope
|
|
168
|
-
});
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
if (scope.transactionID !== undefined) {
|
|
172
|
-
if (scope.callbacks.length > 0) {
|
|
173
|
-
getTransactionCallbacks({
|
|
174
|
-
database: scope.database,
|
|
175
|
-
transactionID: scope.transactionID
|
|
176
|
-
}).push(...scope.callbacks);
|
|
177
|
-
}
|
|
178
|
-
scope.callbacks.length = 0;
|
|
179
|
-
popScope({
|
|
180
|
-
req,
|
|
181
|
-
scope
|
|
182
|
-
});
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
scope.state = 'flushing';
|
|
186
|
-
const callbacks = scope.callbacks.splice(0);
|
|
187
|
-
try {
|
|
188
|
-
await runCallbacks({
|
|
189
|
-
callbacks
|
|
190
|
-
});
|
|
191
|
-
} finally{
|
|
192
|
-
popScope({
|
|
193
|
-
req,
|
|
194
|
-
scope
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
/**
|
|
199
|
-
* Flushes cleanup after an operation's database work has completed. A cleanup failure cannot undo
|
|
200
|
-
* that write, so report it with the same contract used after a committed transaction.
|
|
201
|
-
*/ export const flushDeferredCleanupScopeAfterOperation = async ({ req, scope })=>{
|
|
202
|
-
if (scope.state !== 'closed') {
|
|
203
|
-
assertDeferredCleanupScopeIsActive({
|
|
204
|
-
req,
|
|
205
|
-
scope
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
try {
|
|
209
|
-
await flushDeferredCleanupScope({
|
|
210
|
-
req,
|
|
211
|
-
scope
|
|
212
|
-
});
|
|
213
|
-
} catch (err) {
|
|
214
|
-
req.payload.logger.error({
|
|
215
|
-
err,
|
|
216
|
-
msg: 'A post-commit cleanup task failed.'
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
export const clearDeferredCleanupScope = ({ req, scope })=>{
|
|
221
|
-
if (scope.state === 'closed') {
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
assertDeferredCleanupScopeIsActive({
|
|
225
|
-
req,
|
|
226
|
-
scope
|
|
227
|
-
});
|
|
228
|
-
scope.callbacks.length = 0;
|
|
229
|
-
popScope({
|
|
230
|
-
req,
|
|
231
|
-
scope
|
|
232
|
-
});
|
|
233
|
-
};
|
|
234
|
-
const assertDeferredCleanupScopeIsActive = ({ req, scope })=>{
|
|
235
|
-
if (req.context?.[deferredCleanupScopeContextKey] !== scope) {
|
|
236
|
-
throw new Error('The deferred cleanup scope is no longer active.');
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
const getTransactionCallbacks = ({ database, transactionID })=>{
|
|
240
|
-
const callbacksByTransaction = callbacksByDatabase.get(database) ?? new Map();
|
|
241
|
-
const callbacks = callbacksByTransaction.get(transactionID) ?? [];
|
|
242
|
-
callbacksByTransaction.set(transactionID, callbacks);
|
|
243
|
-
callbacksByDatabase.set(database, callbacksByTransaction);
|
|
244
|
-
return callbacks;
|
|
245
|
-
};
|
|
246
|
-
const getRollbackCallbacks = ({ database, transactionID })=>{
|
|
247
|
-
const callbacksByTransaction = rollbackCallbacksByDatabase.get(database) ?? new Map();
|
|
248
|
-
const callbacks = callbacksByTransaction.get(transactionID) ?? [];
|
|
249
|
-
callbacksByTransaction.set(transactionID, callbacks);
|
|
250
|
-
rollbackCallbacksByDatabase.set(database, callbacksByTransaction);
|
|
251
|
-
return callbacks;
|
|
252
|
-
};
|
|
253
|
-
const popScope = ({ req, scope })=>{
|
|
254
|
-
if (req.context?.[deferredCleanupScopeContextKey] !== scope) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
if (scope.parent) {
|
|
258
|
-
req.context[deferredCleanupScopeContextKey] = scope.parent;
|
|
259
|
-
} else {
|
|
260
|
-
delete req.context[deferredCleanupScopeContextKey];
|
|
261
|
-
}
|
|
262
|
-
scope.state = 'closed';
|
|
263
|
-
};
|
|
264
|
-
const closeTransactionScopes = ({ req, transactionID })=>{
|
|
265
|
-
const scope = req.context?.[deferredCleanupScopeContextKey];
|
|
266
|
-
if (!scope || scope.transactionID !== transactionID) {
|
|
267
|
-
return [];
|
|
268
|
-
}
|
|
269
|
-
const callbacks = scope.callbacks.splice(0);
|
|
270
|
-
popScope({
|
|
271
|
-
req,
|
|
272
|
-
scope
|
|
273
|
-
});
|
|
274
|
-
return [
|
|
275
|
-
...closeTransactionScopes({
|
|
276
|
-
req,
|
|
277
|
-
transactionID
|
|
278
|
-
}),
|
|
279
|
-
...callbacks
|
|
280
|
-
];
|
|
281
|
-
};
|
|
282
|
-
const runCallbacks = async ({ callbacks })=>{
|
|
283
|
-
const errors = [];
|
|
284
|
-
for (const { callback } of callbacks.sort((a, b)=>a.sequence - b.sequence)){
|
|
285
|
-
try {
|
|
286
|
-
await callback();
|
|
287
|
-
} catch (error) {
|
|
288
|
-
errors.push(error);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
if (errors.length === 1) {
|
|
292
|
-
throw errors[0];
|
|
293
|
-
}
|
|
294
|
-
if (errors.length > 1) {
|
|
295
|
-
throw new AggregateError(errors, 'Multiple deferred cleanup callbacks failed.');
|
|
296
|
-
}
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
//# sourceMappingURL=transactionCallbacks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/transactionCallbacks.ts"],"sourcesContent":["import type { MarkRequired } from 'ts-essentials'\n\nimport type { PayloadRequest } from '../types/index.js'\n\ntype TransactionCallback = () => Promise<void>\ntype TransactionCallbackEntry = {\n callback: TransactionCallback\n sequence: number\n}\ntype TransactionID = number | string\nexport type DeferredCleanupScope = {\n callbacks: TransactionCallbackEntry[]\n database: object\n parent: DeferredCleanupScope | null\n state: 'closed' | 'collecting' | 'flushing'\n transactionID?: TransactionID\n}\n\nconst callbacksByDatabase = new WeakMap<object, Map<TransactionID, TransactionCallbackEntry[]>>()\nconst rollbackCallbacksByDatabase = new WeakMap<\n object,\n Map<TransactionID, TransactionCallbackEntry[]>\n>()\nexport const deferredCleanupScopeContextKey = '_payloadDeferredCleanupScope'\nlet nextTransactionCallbackSequence = 0\n\n/** Creates a request context whose cleanup callbacks can be managed independently. */\nexport const createIsolatedDeferredCleanupContext = ({\n req,\n}: {\n req: Partial<PayloadRequest>\n}): PayloadRequest['context'] => {\n const sourceContext = req.context ?? {}\n const context: PayloadRequest['context'] = {}\n\n for (const key of Reflect.ownKeys(sourceContext)) {\n if (key === deferredCleanupScopeContextKey) {\n continue\n }\n\n const descriptor = Object.getOwnPropertyDescriptor(sourceContext, key)\n\n if (descriptor?.enumerable) {\n Object.defineProperty(context, key, descriptor)\n }\n }\n\n return context\n}\n\nexport const hasActiveDeferredCleanupScope = ({ req }: { req: Partial<PayloadRequest> }): boolean =>\n Boolean(req.context?.[deferredCleanupScopeContextKey])\n\n/**\n * Creates an operation-owned cleanup queue. Successful nested scopes transfer their cleanup to a\n * parent for the same database and transaction. Root transaction scopes transfer their cleanup to\n * the transaction queue. Failed scopes can therefore discard only the cleanup they still own.\n */\nexport const beginDeferredCleanupScope = async ({\n req,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n}): Promise<DeferredCleanupScope> => {\n const transactionID = await resolveTransactionID({ req })\n\n return createDeferredCleanupScope({ req, transactionID })\n}\n\n/** Reuses an operation scope when a low-level cleanup helper does not need its own savepoint. */\nexport const beginDeferredCleanupScopeIfNeeded = async ({\n req,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n}): Promise<DeferredCleanupScope | null> => {\n const transactionID = await resolveTransactionID({ req })\n const activeScope = req.context?.[deferredCleanupScopeContextKey] as\n | DeferredCleanupScope\n | undefined\n\n if (\n activeScope?.database === req.payload.db &&\n activeScope.transactionID === (transactionID || undefined)\n ) {\n return null\n }\n\n return createDeferredCleanupScope({ req, transactionID })\n}\n\nconst createDeferredCleanupScope = ({\n req,\n transactionID,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n transactionID?: TransactionID\n}): DeferredCleanupScope => {\n req.context ??= {}\n const parent = (req.context[deferredCleanupScopeContextKey] as DeferredCleanupScope) ?? null\n const scope: DeferredCleanupScope = {\n callbacks: [],\n database: req.payload.db,\n parent,\n state: 'collecting',\n transactionID: transactionID ?? undefined,\n }\n\n req.context[deferredCleanupScopeContextKey] = scope\n\n return scope\n}\n\nconst resolveTransactionID = async ({\n req,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n}): Promise<TransactionID | undefined> =>\n req.transactionID instanceof Promise ? await req.transactionID : req.transactionID\n\nexport const scheduleAfterTransactionCommit = async ({\n callback,\n req,\n}: {\n callback: TransactionCallback\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n}): Promise<void> => {\n const pendingTransactionID = req.transactionID\n const transactionID =\n pendingTransactionID instanceof Promise ? await pendingTransactionID : pendingTransactionID\n const scope = req.context?.[deferredCleanupScopeContextKey] as DeferredCleanupScope | undefined\n const callbackEntry = {\n callback,\n sequence: nextTransactionCallbackSequence++,\n }\n\n if (scope?.database === req.payload.db && scope.transactionID === (transactionID ?? undefined)) {\n if (scope.state === 'flushing') {\n await callback()\n } else {\n scope.callbacks.push(callbackEntry)\n }\n\n return\n }\n\n if (!transactionID) {\n if (req.transactionID === pendingTransactionID) {\n delete req.transactionID\n }\n\n throw new Error('File cleanup requires an active transaction or deferred cleanup scope.')\n }\n\n getTransactionCallbacks({ database: req.payload.db, transactionID }).push(callbackEntry)\n}\n\nexport const scheduleAfterTransactionRollback = async ({\n callback,\n req,\n}: {\n callback: TransactionCallback\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n}): Promise<void> => {\n const pendingTransactionID = req.transactionID\n const transactionID =\n pendingTransactionID instanceof Promise ? await pendingTransactionID : pendingTransactionID\n\n if (!transactionID) {\n throw new Error('Rollback callbacks require an active transaction.')\n }\n\n getRollbackCallbacks({ database: req.payload.db, transactionID }).push({\n callback,\n sequence: nextTransactionCallbackSequence++,\n })\n}\n\nexport const runTransactionCommitCallbacks = async ({\n req,\n transactionID,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n transactionID: TransactionID\n}): Promise<void> => {\n const callbacksByTransaction = callbacksByDatabase.get(req.payload.db)\n const callbacks = callbacksByTransaction?.get(transactionID) ?? []\n const scopedCallbacks = closeTransactionScopes({ req, transactionID })\n\n callbacksByTransaction?.delete(transactionID)\n\n if (callbacksByTransaction?.size === 0) {\n callbacksByDatabase.delete(req.payload.db)\n }\n\n if (callbacks.length === 0 && scopedCallbacks.length === 0) {\n return\n }\n\n await runCallbacks({ callbacks: [...callbacks, ...scopedCallbacks] })\n}\n\nexport const clearTransactionCommitCallbacks = ({\n req,\n transactionID,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n transactionID: TransactionID\n}): void => {\n const callbacksByTransaction = callbacksByDatabase.get(req.payload.db)\n\n closeTransactionScopes({ req, transactionID })\n callbacksByTransaction?.delete(transactionID)\n\n if (callbacksByTransaction?.size === 0) {\n callbacksByDatabase.delete(req.payload.db)\n }\n}\n\nexport const runTransactionRollbackCallbacks = async ({\n req,\n transactionID,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n transactionID: TransactionID\n}): Promise<void> => {\n const callbacksByTransaction = rollbackCallbacksByDatabase.get(req.payload.db)\n const callbacks = callbacksByTransaction?.get(transactionID)\n\n if (!callbacks) {\n return\n }\n\n callbacksByTransaction!.delete(transactionID)\n\n if (callbacksByTransaction!.size === 0) {\n rollbackCallbacksByDatabase.delete(req.payload.db)\n }\n\n await runCallbacks({ callbacks })\n}\n\nexport const clearTransactionRollbackCallbacks = ({\n req,\n transactionID,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n transactionID: TransactionID\n}): void => {\n const callbacksByTransaction = rollbackCallbacksByDatabase.get(req.payload.db)\n\n callbacksByTransaction?.delete(transactionID)\n\n if (callbacksByTransaction?.size === 0) {\n rollbackCallbacksByDatabase.delete(req.payload.db)\n }\n}\n\nexport const flushDeferredCleanupScope = async ({\n req,\n scope,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n scope: DeferredCleanupScope\n}): Promise<void> => {\n if (scope.state === 'closed') {\n return\n }\n\n assertDeferredCleanupScopeIsActive({ req, scope })\n\n if (\n scope.parent?.database === scope.database &&\n scope.parent.transactionID === scope.transactionID\n ) {\n scope.parent.callbacks.push(...scope.callbacks)\n scope.callbacks.length = 0\n popScope({ req, scope })\n return\n }\n\n if (scope.transactionID !== undefined) {\n if (scope.callbacks.length > 0) {\n getTransactionCallbacks({\n database: scope.database,\n transactionID: scope.transactionID,\n }).push(...scope.callbacks)\n }\n scope.callbacks.length = 0\n popScope({ req, scope })\n return\n }\n\n scope.state = 'flushing'\n const callbacks = scope.callbacks.splice(0)\n\n try {\n await runCallbacks({ callbacks })\n } finally {\n popScope({ req, scope })\n }\n}\n\n/**\n * Flushes cleanup after an operation's database work has completed. A cleanup failure cannot undo\n * that write, so report it with the same contract used after a committed transaction.\n */\nexport const flushDeferredCleanupScopeAfterOperation = async ({\n req,\n scope,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n scope: DeferredCleanupScope\n}): Promise<void> => {\n if (scope.state !== 'closed') {\n assertDeferredCleanupScopeIsActive({ req, scope })\n }\n\n try {\n await flushDeferredCleanupScope({ req, scope })\n } catch (err) {\n req.payload.logger.error({ err, msg: 'A post-commit cleanup task failed.' })\n }\n}\n\nexport const clearDeferredCleanupScope = ({\n req,\n scope,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n scope: DeferredCleanupScope\n}): void => {\n if (scope.state === 'closed') {\n return\n }\n\n assertDeferredCleanupScopeIsActive({ req, scope })\n scope.callbacks.length = 0\n popScope({ req, scope })\n}\n\nconst assertDeferredCleanupScopeIsActive = ({\n req,\n scope,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n scope: DeferredCleanupScope\n}): void => {\n if (req.context?.[deferredCleanupScopeContextKey] !== scope) {\n throw new Error('The deferred cleanup scope is no longer active.')\n }\n}\n\nconst getTransactionCallbacks = ({\n database,\n transactionID,\n}: {\n database: object\n transactionID: TransactionID\n}): TransactionCallbackEntry[] => {\n const callbacksByTransaction = callbacksByDatabase.get(database) ?? new Map()\n const callbacks = callbacksByTransaction.get(transactionID) ?? []\n\n callbacksByTransaction.set(transactionID, callbacks)\n callbacksByDatabase.set(database, callbacksByTransaction)\n\n return callbacks\n}\n\nconst getRollbackCallbacks = ({\n database,\n transactionID,\n}: {\n database: object\n transactionID: TransactionID\n}): TransactionCallbackEntry[] => {\n const callbacksByTransaction = rollbackCallbacksByDatabase.get(database) ?? new Map()\n const callbacks = callbacksByTransaction.get(transactionID) ?? []\n\n callbacksByTransaction.set(transactionID, callbacks)\n rollbackCallbacksByDatabase.set(database, callbacksByTransaction)\n\n return callbacks\n}\nconst popScope = ({\n req,\n scope,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n scope: DeferredCleanupScope\n}): void => {\n if (req.context?.[deferredCleanupScopeContextKey] !== scope) {\n return\n }\n\n if (scope.parent) {\n req.context[deferredCleanupScopeContextKey] = scope.parent\n } else {\n delete req.context[deferredCleanupScopeContextKey]\n }\n\n scope.state = 'closed'\n}\n\nconst closeTransactionScopes = ({\n req,\n transactionID,\n}: {\n req: MarkRequired<Partial<PayloadRequest>, 'payload'>\n transactionID: TransactionID\n}): TransactionCallbackEntry[] => {\n const scope = req.context?.[deferredCleanupScopeContextKey] as DeferredCleanupScope | undefined\n\n if (!scope || scope.transactionID !== transactionID) {\n return []\n }\n\n const callbacks = scope.callbacks.splice(0)\n\n popScope({ req, scope })\n\n return [...closeTransactionScopes({ req, transactionID }), ...callbacks]\n}\n\nconst runCallbacks = async ({\n callbacks,\n}: {\n callbacks: TransactionCallbackEntry[]\n}): Promise<void> => {\n const errors: unknown[] = []\n\n for (const { callback } of callbacks.sort((a, b) => a.sequence - b.sequence)) {\n try {\n await callback()\n } catch (error) {\n errors.push(error)\n }\n }\n\n if (errors.length === 1) {\n throw errors[0]\n }\n\n if (errors.length > 1) {\n throw new AggregateError(errors, 'Multiple deferred cleanup callbacks failed.')\n }\n}\n"],"names":["callbacksByDatabase","WeakMap","rollbackCallbacksByDatabase","deferredCleanupScopeContextKey","nextTransactionCallbackSequence","createIsolatedDeferredCleanupContext","req","sourceContext","context","key","Reflect","ownKeys","descriptor","Object","getOwnPropertyDescriptor","enumerable","defineProperty","hasActiveDeferredCleanupScope","Boolean","beginDeferredCleanupScope","transactionID","resolveTransactionID","createDeferredCleanupScope","beginDeferredCleanupScopeIfNeeded","activeScope","database","payload","db","undefined","parent","scope","callbacks","state","Promise","scheduleAfterTransactionCommit","callback","pendingTransactionID","callbackEntry","sequence","push","Error","getTransactionCallbacks","scheduleAfterTransactionRollback","getRollbackCallbacks","runTransactionCommitCallbacks","callbacksByTransaction","get","scopedCallbacks","closeTransactionScopes","delete","size","length","runCallbacks","clearTransactionCommitCallbacks","runTransactionRollbackCallbacks","clearTransactionRollbackCallbacks","flushDeferredCleanupScope","assertDeferredCleanupScopeIsActive","popScope","splice","flushDeferredCleanupScopeAfterOperation","err","logger","error","msg","clearDeferredCleanupScope","Map","set","errors","sort","a","b","AggregateError"],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { BaseDatabaseAdapter } from '../database/types.js';
|
|
2
|
-
import type { PayloadRequest } from '../types/index.js';
|
|
3
|
-
type TransactionMutationState = {
|
|
4
|
-
hasTransactionWrite: boolean;
|
|
5
|
-
parent: TransactionMutationState | undefined;
|
|
6
|
-
};
|
|
7
|
-
export type TransactionMutationScope = {
|
|
8
|
-
state: TransactionMutationState;
|
|
9
|
-
};
|
|
10
|
-
export declare const runInTransactionMutationScope: <Value>({ adapter, callback, }: {
|
|
11
|
-
adapter?: BaseDatabaseAdapter;
|
|
12
|
-
callback: (scope: TransactionMutationScope) => Promise<Value>;
|
|
13
|
-
}) => Promise<Value>;
|
|
14
|
-
export declare const hasTransactionWrite: ({ scope }: {
|
|
15
|
-
scope: TransactionMutationScope;
|
|
16
|
-
}) => boolean;
|
|
17
|
-
export declare const markTransactionWrite: ({ req, }: {
|
|
18
|
-
req: Partial<PayloadRequest> | undefined;
|
|
19
|
-
}) => void;
|
|
20
|
-
export {};
|
|
21
|
-
//# sourceMappingURL=transactionMutationTracker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transactionMutationTracker.d.ts","sourceRoot":"","sources":["../../src/utilities/transactionMutationTracker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,KAAK,wBAAwB,GAAG;IAC9B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,MAAM,EAAE,wBAAwB,GAAG,SAAS,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,wBAAwB,CAAA;CAChC,CAAA;AAiED,eAAO,MAAM,6BAA6B,GAAU,KAAK,0BAGtD;IACD,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,KAAK,CAAC,CAAA;CAC9D,KAAG,OAAO,CAAC,KAAK,CAWhB,CAAA;AAED,eAAO,MAAM,mBAAmB,cAAe;IAAE,KAAK,EAAE,wBAAwB,CAAA;CAAE,KAAG,OACpD,CAAA;AAEjC,eAAO,MAAM,oBAAoB,aAE9B;IACD,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;CACzC,KAAG,IAWH,CAAA"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
const transactionMutationStorage = new AsyncLocalStorage();
|
|
3
|
-
const trackedDatabaseMutationMethod = Symbol('trackedDatabaseMutationMethod');
|
|
4
|
-
const databaseMutationMethodNames = [
|
|
5
|
-
'create',
|
|
6
|
-
'createGlobal',
|
|
7
|
-
'createGlobalVersion',
|
|
8
|
-
'createVersion',
|
|
9
|
-
'deleteBranchGlobal',
|
|
10
|
-
'deleteMany',
|
|
11
|
-
'deleteOne',
|
|
12
|
-
'deleteVersions',
|
|
13
|
-
'updateGlobal',
|
|
14
|
-
'updateGlobalVersion',
|
|
15
|
-
'updateJobs',
|
|
16
|
-
'updateMany',
|
|
17
|
-
'updateOne',
|
|
18
|
-
'updateVersion',
|
|
19
|
-
'upsert',
|
|
20
|
-
'upsertBranchGlobalChange'
|
|
21
|
-
];
|
|
22
|
-
const trackDatabaseAdapterMutations = ({ adapter })=>{
|
|
23
|
-
const adapterMethods = adapter;
|
|
24
|
-
for (const methodName of databaseMutationMethodNames){
|
|
25
|
-
const databaseMutationMethod = adapterMethods[methodName];
|
|
26
|
-
if (typeof databaseMutationMethod !== 'function' || databaseMutationMethod[trackedDatabaseMutationMethod]) {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
const trackedMethod = async (...args)=>{
|
|
30
|
-
// Mark before invoking the adapter. A rejected multi-statement mutation can have written to
|
|
31
|
-
// the ambient transaction before it failed, so a caught document error must still abort it.
|
|
32
|
-
markTransactionWrite({
|
|
33
|
-
req: args[0]?.req
|
|
34
|
-
});
|
|
35
|
-
return Reflect.apply(databaseMutationMethod, adapter, args);
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(trackedMethod, trackedDatabaseMutationMethod, {
|
|
38
|
-
value: true
|
|
39
|
-
});
|
|
40
|
-
if (!Reflect.set(adapterMethods, methodName, trackedMethod)) {
|
|
41
|
-
throw new TypeError(`Unable to track database mutation method "${methodName}".`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
export const runInTransactionMutationScope = async ({ adapter, callback })=>{
|
|
46
|
-
if (adapter) {
|
|
47
|
-
trackDatabaseAdapterMutations({
|
|
48
|
-
adapter
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
const state = {
|
|
52
|
-
hasTransactionWrite: false,
|
|
53
|
-
parent: transactionMutationStorage.getStore()
|
|
54
|
-
};
|
|
55
|
-
return transactionMutationStorage.run(state, ()=>callback({
|
|
56
|
-
state
|
|
57
|
-
}));
|
|
58
|
-
};
|
|
59
|
-
export const hasTransactionWrite = ({ scope })=>scope.state.hasTransactionWrite;
|
|
60
|
-
export const markTransactionWrite = ({ req })=>{
|
|
61
|
-
if (!req?.transactionID) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
let state = transactionMutationStorage.getStore();
|
|
65
|
-
while(state){
|
|
66
|
-
state.hasTransactionWrite = true;
|
|
67
|
-
state = state.parent;
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
//# sourceMappingURL=transactionMutationTracker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/transactionMutationTracker.ts"],"sourcesContent":["import { AsyncLocalStorage } from 'node:async_hooks'\n\nimport type { BaseDatabaseAdapter } from '../database/types.js'\nimport type { PayloadRequest } from '../types/index.js'\n\ntype TransactionMutationState = {\n hasTransactionWrite: boolean\n parent: TransactionMutationState | undefined\n}\n\nexport type TransactionMutationScope = {\n state: TransactionMutationState\n}\n\nconst transactionMutationStorage = new AsyncLocalStorage<TransactionMutationState>()\n\nconst trackedDatabaseMutationMethod = Symbol('trackedDatabaseMutationMethod')\n\nconst databaseMutationMethodNames = [\n 'create',\n 'createGlobal',\n 'createGlobalVersion',\n 'createVersion',\n 'deleteBranchGlobal',\n 'deleteMany',\n 'deleteOne',\n 'deleteVersions',\n 'updateGlobal',\n 'updateGlobalVersion',\n 'updateJobs',\n 'updateMany',\n 'updateOne',\n 'updateVersion',\n 'upsert',\n 'upsertBranchGlobalChange',\n] as const satisfies readonly (keyof BaseDatabaseAdapter)[]\n\ntype DatabaseMutationArguments = [\n {\n req?: Partial<PayloadRequest>\n },\n ...unknown[],\n]\n\ntype DatabaseMutationMethod = ((...args: DatabaseMutationArguments) => Promise<unknown>) & {\n [trackedDatabaseMutationMethod]?: true\n}\n\nconst trackDatabaseAdapterMutations = ({ adapter }: { adapter: BaseDatabaseAdapter }): void => {\n const adapterMethods = adapter as unknown as Record<PropertyKey, unknown>\n\n for (const methodName of databaseMutationMethodNames) {\n const databaseMutationMethod = adapterMethods[methodName] as DatabaseMutationMethod | undefined\n\n if (\n typeof databaseMutationMethod !== 'function' ||\n databaseMutationMethod[trackedDatabaseMutationMethod]\n ) {\n continue\n }\n\n const trackedMethod: DatabaseMutationMethod = async (...args) => {\n // Mark before invoking the adapter. A rejected multi-statement mutation can have written to\n // the ambient transaction before it failed, so a caught document error must still abort it.\n markTransactionWrite({ req: args[0]?.req })\n\n return Reflect.apply(databaseMutationMethod, adapter, args)\n }\n\n Object.defineProperty(trackedMethod, trackedDatabaseMutationMethod, { value: true })\n\n if (!Reflect.set(adapterMethods, methodName, trackedMethod)) {\n throw new TypeError(`Unable to track database mutation method \"${methodName}\".`)\n }\n }\n}\n\nexport const runInTransactionMutationScope = async <Value>({\n adapter,\n callback,\n}: {\n adapter?: BaseDatabaseAdapter\n callback: (scope: TransactionMutationScope) => Promise<Value>\n}): Promise<Value> => {\n if (adapter) {\n trackDatabaseAdapterMutations({ adapter })\n }\n\n const state: TransactionMutationState = {\n hasTransactionWrite: false,\n parent: transactionMutationStorage.getStore(),\n }\n\n return transactionMutationStorage.run(state, () => callback({ state }))\n}\n\nexport const hasTransactionWrite = ({ scope }: { scope: TransactionMutationScope }): boolean =>\n scope.state.hasTransactionWrite\n\nexport const markTransactionWrite = ({\n req,\n}: {\n req: Partial<PayloadRequest> | undefined\n}): void => {\n if (!req?.transactionID) {\n return\n }\n\n let state = transactionMutationStorage.getStore()\n\n while (state) {\n state.hasTransactionWrite = true\n state = state.parent\n }\n}\n"],"names":["AsyncLocalStorage","transactionMutationStorage","trackedDatabaseMutationMethod","Symbol","databaseMutationMethodNames","trackDatabaseAdapterMutations","adapter","adapterMethods","methodName","databaseMutationMethod","trackedMethod","args","markTransactionWrite","req","Reflect","apply","Object","defineProperty","value","set","TypeError","runInTransactionMutationScope","callback","state","hasTransactionWrite","parent","getStore","run","scope","transactionID"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,mBAAkB;AAcpD,MAAMC,6BAA6B,IAAID;AAEvC,MAAME,gCAAgCC,OAAO;AAE7C,MAAMC,8BAA8B;IAClC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAaD,MAAMC,gCAAgC,CAAC,EAAEC,OAAO,EAAoC;IAClF,MAAMC,iBAAiBD;IAEvB,KAAK,MAAME,cAAcJ,4BAA6B;QACpD,MAAMK,yBAAyBF,cAAc,CAACC,WAAW;QAEzD,IACE,OAAOC,2BAA2B,cAClCA,sBAAsB,CAACP,8BAA8B,EACrD;YACA;QACF;QAEA,MAAMQ,gBAAwC,OAAO,GAAGC;YACtD,4FAA4F;YAC5F,4FAA4F;YAC5FC,qBAAqB;gBAAEC,KAAKF,IAAI,CAAC,EAAE,EAAEE;YAAI;YAEzC,OAAOC,QAAQC,KAAK,CAACN,wBAAwBH,SAASK;QACxD;QAEAK,OAAOC,cAAc,CAACP,eAAeR,+BAA+B;YAAEgB,OAAO;QAAK;QAElF,IAAI,CAACJ,QAAQK,GAAG,CAACZ,gBAAgBC,YAAYE,gBAAgB;YAC3D,MAAM,IAAIU,UAAU,CAAC,0CAA0C,EAAEZ,WAAW,EAAE,CAAC;QACjF;IACF;AACF;AAEA,OAAO,MAAMa,gCAAgC,OAAc,EACzDf,OAAO,EACPgB,QAAQ,EAIT;IACC,IAAIhB,SAAS;QACXD,8BAA8B;YAAEC;QAAQ;IAC1C;IAEA,MAAMiB,QAAkC;QACtCC,qBAAqB;QACrBC,QAAQxB,2BAA2ByB,QAAQ;IAC7C;IAEA,OAAOzB,2BAA2B0B,GAAG,CAACJ,OAAO,IAAMD,SAAS;YAAEC;QAAM;AACtE,EAAC;AAED,OAAO,MAAMC,sBAAsB,CAAC,EAAEI,KAAK,EAAuC,GAChFA,MAAML,KAAK,CAACC,mBAAmB,CAAA;AAEjC,OAAO,MAAMZ,uBAAuB,CAAC,EACnCC,GAAG,EAGJ;IACC,IAAI,CAACA,KAAKgB,eAAe;QACvB;IACF;IAEA,IAAIN,QAAQtB,2BAA2ByB,QAAQ;IAE/C,MAAOH,MAAO;QACZA,MAAMC,mBAAmB,GAAG;QAC5BD,QAAQA,MAAME,MAAM;IACtB;AACF,EAAC"}
|