payload 3.66.0 → 3.67.0-internal.1ea538b
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/auth/operations/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/forgotPassword.js +7 -12
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- package/dist/auth/operations/login.d.ts.map +1 -1
- package/dist/auth/operations/login.js +7 -12
- package/dist/auth/operations/login.js.map +1 -1
- package/dist/auth/operations/refresh.d.ts.map +1 -1
- package/dist/auth/operations/refresh.js +7 -12
- 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 +7 -12
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/auth/operations/unlock.d.ts.map +1 -1
- package/dist/auth/operations/unlock.js +14 -1
- package/dist/auth/operations/unlock.js.map +1 -1
- package/dist/collections/config/sanitize.d.ts.map +1 -1
- package/dist/collections/config/sanitize.js +2 -0
- package/dist/collections/config/sanitize.js.map +1 -1
- package/dist/collections/config/types.d.ts +7 -19
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/collections/config/types.js.map +1 -1
- package/dist/collections/operations/count.d.ts.map +1 -1
- package/dist/collections/operations/count.js +7 -12
- package/dist/collections/operations/count.js.map +1 -1
- package/dist/collections/operations/countVersions.d.ts.map +1 -1
- package/dist/collections/operations/countVersions.js +7 -12
- package/dist/collections/operations/countVersions.js.map +1 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +10 -14
- 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 +9 -13
- 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 +9 -13
- 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 +9 -13
- 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 +22 -26
- 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 +7 -12
- 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 +20 -1
- 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 +24 -5
- 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 +9 -13
- 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 +9 -13
- 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 -12
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/collections/operations/utilities/buildAfterOperation.d.ts +6 -0
- package/dist/collections/operations/utilities/buildAfterOperation.d.ts.map +1 -0
- package/dist/collections/operations/{utils.js → utilities/buildAfterOperation.js} +1 -1
- package/dist/collections/operations/utilities/buildAfterOperation.js.map +1 -0
- package/dist/collections/operations/utilities/buildBeforeOperation.d.ts +47 -0
- package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -0
- package/dist/collections/operations/utilities/buildBeforeOperation.js +25 -0
- package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -0
- package/dist/collections/operations/utilities/types.d.ts +216 -0
- package/dist/collections/operations/utilities/types.d.ts.map +1 -0
- package/dist/collections/operations/utilities/types.js +23 -0
- package/dist/collections/operations/utilities/types.js.map +1 -0
- package/dist/collections/operations/utilities/update.d.ts.map +1 -1
- package/dist/collections/operations/utilities/update.js +4 -2
- package/dist/collections/operations/utilities/update.js.map +1 -1
- package/dist/config/sanitize.d.ts.map +1 -1
- package/dist/config/sanitize.js +2 -2
- package/dist/config/sanitize.js.map +1 -1
- package/dist/exports/shared.d.ts +1 -0
- package/dist/exports/shared.d.ts.map +1 -1
- package/dist/exports/shared.js +1 -0
- package/dist/exports/shared.js.map +1 -1
- package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
- package/dist/fields/baseFields/slug/generateSlug.js +2 -2
- package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
- package/dist/fields/config/types.d.ts +2 -0
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js.map +1 -1
- package/dist/globals/config/types.d.ts +1 -1
- 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 +4 -3
- package/dist/globals/operations/findOne.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +3 -2
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/index.bundled.d.ts +200 -119
- package/dist/utilities/getVersionsConfig.d.ts +37 -0
- package/dist/utilities/getVersionsConfig.d.ts.map +1 -0
- package/dist/utilities/getVersionsConfig.js +44 -0
- package/dist/utilities/getVersionsConfig.js.map +1 -0
- package/dist/versions/buildCollectionFields.d.ts.map +1 -1
- package/dist/versions/buildCollectionFields.js +3 -2
- package/dist/versions/buildCollectionFields.js.map +1 -1
- package/dist/versions/buildGlobalFields.d.ts.map +1 -1
- package/dist/versions/buildGlobalFields.js +3 -2
- package/dist/versions/buildGlobalFields.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +3 -1
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +3 -2
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +2 -1
- package/dist/versions/saveVersion.js.map +1 -1
- package/package.json +2 -2
- package/dist/collections/operations/utils.d.ts +0 -105
- package/dist/collections/operations/utils.d.ts.map +0 -1
- package/dist/collections/operations/utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/create.ts"],"sourcesContent":["import crypto from 'crypto'\n\nimport type { CollectionSlug, 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 { 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 './utils.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 publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n selectedLocales?: string[]\n showHiddenFields?: boolean\n}\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 if (args.collection.config.hooks.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'create',\n req: args.req,\n })) || args\n }\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 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 isSavingDraft = Boolean(draft && collectionConfig.versions.drafts)\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:\n isSavingDraft &&\n collectionConfig.versions.drafts &&\n !collectionConfig.versions.drafts.validate,\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 // 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 })\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 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 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 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","initTransaction","killTransaction","sanitizeInternalFields","sanitizeSelect","buildAfterOperation","createOperation","incomingArgs","args","shouldCommit","disableTransaction","req","authOptions","collection","config","auth","collectionSlug","slug","data","operation","hooks","beforeOperation","length","hook","context","publishSpecificLocale","locale","autosave","collectionConfig","depth","disableVerificationEmail","draft","duplicateFromID","overrideAccess","overwriteExistingFiles","populate","fallbackLocale","payload","select","incomingSelect","selectedLocales","showHiddenFields","isSavingDraft","Boolean","versions","drafts","duplicatedFromDocWithLocales","duplicatedFromDoc","duplicateResult","id","draftArg","access","create","newFileData","files","filesToUpload","isDuplicating","originalDoc","throwOnMissingFile","upload","filesRequiredOnCreate","doc","global","resultWithLocales","docWithLocales","skipValidation","validate","disableLocalStorage","fields","flattenedFields","forceSelect","disableLocalStrategy","verify","_verified","_verificationToken","randomBytes","toString","password","db","verificationToken","result","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, 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 { hasDraftsEnabled, hasDraftValidationEnabled } 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 publishSpecificLocale?: string\n req: PayloadRequest\n select?: SelectType\n selectedLocales?: string[]\n showHiddenFields?: boolean\n}\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 })\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 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 isSavingDraft = Boolean(draft && hasDraftsEnabled(collectionConfig))\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 // /////////////////////////////////////\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 // 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 })\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 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 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 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","initTransaction","killTransaction","sanitizeInternalFields","sanitizeSelect","buildAfterOperation","buildBeforeOperation","createOperation","incomingArgs","args","shouldCommit","disableTransaction","req","authOptions","collection","config","auth","collectionSlug","slug","data","operation","publishSpecificLocale","locale","autosave","collectionConfig","depth","disableVerificationEmail","draft","duplicateFromID","overrideAccess","overwriteExistingFiles","populate","fallbackLocale","payload","select","incomingSelect","selectedLocales","showHiddenFields","isSavingDraft","Boolean","duplicatedFromDocWithLocales","duplicatedFromDoc","duplicateResult","id","draftArg","access","create","newFileData","files","filesToUpload","isDuplicating","originalDoc","throwOnMissingFile","upload","filesRequiredOnCreate","context","doc","global","hooks","length","hook","resultWithLocales","docWithLocales","skipValidation","disableLocalStorage","fields","flattenedFields","forceSelect","disableLocalStrategy","verify","_verified","_verificationToken","randomBytes","toString","password","db","verificationToken","result","versions","email","disableEmail","token","user","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,MAAM,gBAAgB,CAAA;AACpD,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,MAAM,gBAAgB,CAAA;AACpD,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;AAuB3B,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,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,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,CAoR7C,CAAA"}
|
|
@@ -10,13 +10,15 @@ import { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js';
|
|
|
10
10
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
11
11
|
import { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js';
|
|
12
12
|
import { commitTransaction } from '../../utilities/commitTransaction.js';
|
|
13
|
+
import { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js';
|
|
13
14
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
14
15
|
import { isErrorPublic } from '../../utilities/isErrorPublic.js';
|
|
15
16
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
16
17
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
17
18
|
import { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js';
|
|
18
19
|
import { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js';
|
|
19
|
-
import { buildAfterOperation } from './
|
|
20
|
+
import { buildAfterOperation } from './utilities/buildAfterOperation.js';
|
|
21
|
+
import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
|
|
20
22
|
export const deleteOperation = async (incomingArgs)=>{
|
|
21
23
|
let args = incomingArgs;
|
|
22
24
|
try {
|
|
@@ -24,17 +26,11 @@ export const deleteOperation = async (incomingArgs)=>{
|
|
|
24
26
|
// /////////////////////////////////////
|
|
25
27
|
// beforeOperation - Collection
|
|
26
28
|
// /////////////////////////////////////
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
context: args.req.context,
|
|
33
|
-
operation: 'delete',
|
|
34
|
-
req: args.req
|
|
35
|
-
}) || args;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
29
|
+
args = await buildBeforeOperation({
|
|
30
|
+
args,
|
|
31
|
+
collection: args.collection.config,
|
|
32
|
+
operation: 'delete'
|
|
33
|
+
});
|
|
38
34
|
const { collection: { config: collectionConfig }, depth, overrideAccess, overrideLock, populate, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false, where } = args;
|
|
39
35
|
if (!where) {
|
|
40
36
|
throw new APIError("Missing 'where' query of documents to delete.", httpStatus.BAD_REQUEST);
|
|
@@ -130,7 +126,7 @@ export const deleteOperation = async (incomingArgs)=>{
|
|
|
130
126
|
// /////////////////////////////////////
|
|
131
127
|
// Delete scheduled posts
|
|
132
128
|
// /////////////////////////////////////
|
|
133
|
-
if (collectionConfig
|
|
129
|
+
if (hasScheduledPublishEnabled(collectionConfig)) {
|
|
134
130
|
await deleteScheduledPublishJobs({
|
|
135
131
|
id,
|
|
136
132
|
slug: collectionConfig.slug,
|
|
@@ -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 } 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 { 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 './utils.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 select?: SelectType\n showHiddenFields?: boolean\n trash?: boolean\n where: Where\n}\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 if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'delete',\n req: args.req,\n })) || args\n }\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 // /////////////////////////////////////\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 (collectionConfig.versions?.drafts && collectionConfig.versions.drafts.schedulePublish) {\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 // 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 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\n return result\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\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 const awaitedDocs = await Promise.all(promises)\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 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","initTransaction","isErrorPublic","killTransaction","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","deleteOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","hooks","beforeOperation","length","hook","context","operation","collectionConfig","depth","overrideAccess","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","collectionSlug","lockErrorMessage","beforeDelete","overrideDelete","versions","drafts","schedulePublish","deleteOne","returning","equals","draft","undefined","global","afterDelete","error","isPublic","Error","push","message","awaitedDocs","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 } 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 select?: SelectType\n showHiddenFields?: boolean\n trash?: boolean\n where: Where\n}\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 })\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 // /////////////////////////////////////\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 // 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 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\n return result\n } catch (error) {\n const isPublic = error instanceof Error ? isErrorPublic(error, config) : false\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 const awaitedDocs = await Promise.all(promises)\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 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","collectionConfig","depth","overrideAccess","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","collectionSlug","lockErrorMessage","hooks","beforeDelete","length","hook","context","overrideDelete","versions","deleteOne","returning","equals","draft","undefined","global","afterDelete","error","isPublic","Error","push","message","awaitedDocs","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,MAAM,gBAAgB,CAAA;AACpD,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,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAqB5E,MAAM,MAAM,SAAS,GAAG;IACtB,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,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,KAAK,SAAS,cAAc,EAAE,OAAO,SAAS,UAAU,gBAClF,SAAS,KACtB,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CA4OvD,CAAA"}
|
|
@@ -8,12 +8,14 @@ import { deleteAssociatedFiles } from '../../uploads/deleteAssociatedFiles.js';
|
|
|
8
8
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
9
9
|
import { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js';
|
|
10
10
|
import { commitTransaction } from '../../utilities/commitTransaction.js';
|
|
11
|
+
import { hasScheduledPublishEnabled } from '../../utilities/getVersionsConfig.js';
|
|
11
12
|
import { initTransaction } from '../../utilities/initTransaction.js';
|
|
12
13
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
13
14
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
14
15
|
import { deleteCollectionVersions } from '../../versions/deleteCollectionVersions.js';
|
|
15
16
|
import { deleteScheduledPublishJobs } from '../../versions/deleteScheduledPublishJobs.js';
|
|
16
|
-
import { buildAfterOperation } from './
|
|
17
|
+
import { buildAfterOperation } from './utilities/buildAfterOperation.js';
|
|
18
|
+
import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
|
|
17
19
|
export const deleteByIDOperation = async (incomingArgs)=>{
|
|
18
20
|
let args = incomingArgs;
|
|
19
21
|
try {
|
|
@@ -21,17 +23,11 @@ export const deleteByIDOperation = async (incomingArgs)=>{
|
|
|
21
23
|
// /////////////////////////////////////
|
|
22
24
|
// beforeOperation - Collection
|
|
23
25
|
// /////////////////////////////////////
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
context: args.req.context,
|
|
30
|
-
operation: 'delete',
|
|
31
|
-
req: args.req
|
|
32
|
-
}) || args;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
26
|
+
args = await buildBeforeOperation({
|
|
27
|
+
args,
|
|
28
|
+
collection: args.collection.config,
|
|
29
|
+
operation: 'delete'
|
|
30
|
+
});
|
|
35
31
|
const { id, collection: { config: collectionConfig }, depth, overrideAccess, overrideLock, populate, req: { fallbackLocale, locale, payload: { config }, payload }, req, select: incomingSelect, showHiddenFields, trash = false } = args;
|
|
36
32
|
// /////////////////////////////////////
|
|
37
33
|
// Access
|
|
@@ -111,7 +107,7 @@ export const deleteByIDOperation = async (incomingArgs)=>{
|
|
|
111
107
|
// /////////////////////////////////////
|
|
112
108
|
// Delete scheduled posts
|
|
113
109
|
// /////////////////////////////////////
|
|
114
|
-
if (collectionConfig
|
|
110
|
+
if (hasScheduledPublishEnabled(collectionConfig)) {
|
|
115
111
|
await deleteScheduledPublishJobs({
|
|
116
112
|
id,
|
|
117
113
|
slug: collectionConfig.slug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/deleteByID.ts"],"sourcesContent":["import type { CollectionSlug } 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 { 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 './utils.js'\n\nexport type Arguments = {\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 select?: SelectType\n showHiddenFields?: boolean\n trash?: boolean\n}\n\nexport const deleteByIDOperation = async <TSlug extends CollectionSlug, TSelect extends SelectType>(\n incomingArgs: Arguments,\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 if (args.collection.config.hooks?.beforeOperation?.length) {\n for (const hook of args.collection.config.hooks.beforeOperation) {\n args =\n (await hook({\n args,\n collection: args.collection.config,\n context: args.req.context,\n operation: 'delete',\n req: args.req,\n })) || args\n }\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 (collectionConfig.versions?.drafts && collectionConfig.versions.drafts.schedulePublish) {\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 // 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 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 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","initTransaction","killTransaction","sanitizeSelect","deleteCollectionVersions","deleteScheduledPublishJobs","buildAfterOperation","deleteByIDOperation","incomingArgs","args","shouldCommit","disableTransaction","req","collection","config","hooks","beforeOperation","length","hook","context","operation","id","collectionConfig","depth","overrideAccess","overrideLock","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","trash","accessResults","access","delete","hasWhereAccess","beforeDelete","where","equals","enableTrash","docToDelete","db","findOne","slug","t","collectionSlug","lockErrorMessage","doc","overrideDelete","versions","drafts","schedulePublish","fields","flattenedFields","forceSelect","result","deleteOne","ids","draft","undefined","global","afterDelete","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/deleteByID.ts"],"sourcesContent":["import type { CollectionSlug } 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 = {\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 select?: SelectType\n showHiddenFields?: boolean\n trash?: boolean\n}\n\nexport const deleteByIDOperation = async <TSlug extends CollectionSlug, TSelect extends SelectType>(\n incomingArgs: Arguments,\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 })\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 // 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 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 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","id","collectionConfig","depth","overrideAccess","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","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,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/D,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,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/D,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;AAqB3B,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,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAID,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,CAoTtE,CAAA"}
|
|
@@ -6,14 +6,16 @@ import { sanitizeWhereQuery } from '../../database/sanitizeWhereQuery.js';
|
|
|
6
6
|
import { afterRead } from '../../fields/hooks/afterRead/index.js';
|
|
7
7
|
import { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js';
|
|
8
8
|
import { appendNonTrashedFilter } from '../../utilities/appendNonTrashedFilter.js';
|
|
9
|
+
import { hasDraftsEnabled } from '../../utilities/getVersionsConfig.js';
|
|
9
10
|
import { killTransaction } from '../../utilities/killTransaction.js';
|
|
10
11
|
import { sanitizeSelect } from '../../utilities/sanitizeSelect.js';
|
|
11
12
|
import { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js';
|
|
12
13
|
import { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js';
|
|
13
14
|
import { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js';
|
|
14
15
|
import { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js';
|
|
16
|
+
import { buildAfterOperation } from './utilities/buildAfterOperation.js';
|
|
17
|
+
import { buildBeforeOperation } from './utilities/buildBeforeOperation.js';
|
|
15
18
|
import { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js';
|
|
16
|
-
import { buildAfterOperation } from './utils.js';
|
|
17
19
|
const lockDurationDefault = 300 // Default 5 minutes in seconds
|
|
18
20
|
;
|
|
19
21
|
export const findOperation = async (incomingArgs)=>{
|
|
@@ -22,17 +24,11 @@ export const findOperation = async (incomingArgs)=>{
|
|
|
22
24
|
// /////////////////////////////////////
|
|
23
25
|
// beforeOperation - Collection
|
|
24
26
|
// /////////////////////////////////////
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
context: args.req.context,
|
|
31
|
-
operation: 'read',
|
|
32
|
-
req: args.req
|
|
33
|
-
}) || args;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
27
|
+
args = await buildBeforeOperation({
|
|
28
|
+
args,
|
|
29
|
+
collection: args.collection.config,
|
|
30
|
+
operation: 'read'
|
|
31
|
+
});
|
|
36
32
|
const { collection: { config: collectionConfig }, collection, currentDepth, depth, disableErrors, draft: draftsEnabled, includeLockStatus, joins, limit, overrideAccess, page, pagination = true, populate, select: incomingSelect, showHiddenFields, sort: incomingSort, trash = false, where } = args;
|
|
37
33
|
const req = args.req;
|
|
38
34
|
const { fallbackLocale, locale, payload } = req;
|
|
@@ -95,7 +91,7 @@ export const findOperation = async (incomingArgs)=>{
|
|
|
95
91
|
overrideAccess: overrideAccess,
|
|
96
92
|
req
|
|
97
93
|
});
|
|
98
|
-
if (collectionConfig
|
|
94
|
+
if (hasDraftsEnabled(collectionConfig) && draftsEnabled) {
|
|
99
95
|
fullWhere = appendVersionToQueryKey(fullWhere);
|
|
100
96
|
await validateQueryPaths({
|
|
101
97
|
collectionConfig: collection.config,
|