payload 3.36.0 → 3.36.1
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/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- package/dist/collections/operations/findByID.js.map +1 -1
- package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
- package/dist/collections/operations/findVersionByID.js +4 -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 +3 -1
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/config/orderable/index.d.ts.map +1 -1
- package/dist/config/orderable/index.js +7 -0
- package/dist/config/orderable/index.js.map +1 -1
- package/dist/fields/validations.js +1 -1
- package/dist/fields/validations.js.map +1 -1
- package/dist/globals/operations/findOne.d.ts.map +1 -1
- package/dist/globals/operations/findOne.js +1 -0
- 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 +4 -1
- 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 +3 -1
- package/dist/globals/operations/findVersions.js.map +1 -1
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +1 -0
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +4 -1
- package/dist/uploads/generateFileData.js.map +1 -1
- package/dist/uploads/getFileByPath.js +15 -14
- package/dist/uploads/getFileByPath.js.map +1 -1
- package/dist/utilities/sanitizeSelect.d.ts +4 -1
- package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
- package/dist/utilities/sanitizeSelect.js +110 -3
- package/dist/utilities/sanitizeSelect.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAIV,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAW3B,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,gBAAgB,CAAA;AAYrE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,eAAe,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IACrD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/create.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAIV,UAAU,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAW3B,OAAO,EAAE,KAAK,cAAc,EAAmB,MAAM,gBAAgB,CAAA;AAYrE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE,8BAA8B,CAAC,KAAK,CAAC,CAAA;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,eAAe,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;IACrD,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,SAAS,cAAc,EAC5B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAuVvD,CAAA"}
|
|
@@ -153,6 +153,7 @@ export const createOperation = async (incomingArgs)=>{
|
|
|
153
153
|
// /////////////////////////////////////
|
|
154
154
|
let doc;
|
|
155
155
|
const select = sanitizeSelect({
|
|
156
|
+
fields: collectionConfig.flattenedFields,
|
|
156
157
|
forceSelect: collectionConfig.forceSelect,
|
|
157
158
|
select: incomingSelect
|
|
158
159
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/create.ts"],"sourcesContent":["// @ts-strict-ignore\nimport crypto from 'crypto'\n\nimport type {\n Document,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n AfterChangeHook,\n BeforeOperationHook,\n BeforeValidateHook,\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 { type CollectionSlug, type JsonObject } 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 { saveVersion } from '../../versions/saveVersion.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 req: PayloadRequest\n select?: SelectType\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 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 req: {\n fallbackLocale,\n locale,\n payload,\n payload: { config },\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n } = args\n\n let { data } = args\n\n const shouldSaveDraft = 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: shouldSaveDraft,\n overrideAccess,\n req,\n shouldSaveDraft,\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 !shouldSaveDraft && 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,\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 req,\n skipValidation:\n shouldSaveDraft &&\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 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 select,\n })\n } else {\n doc = await payload.db.create({\n collection: collectionConfig.slug,\n data: resultWithLocales,\n req,\n select,\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 payload,\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,\n doc: result,\n draft,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n 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 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","generateFileData","unlinkTempFiles","uploadFiles","commitTransaction","initTransaction","killTransaction","sanitizeInternalFields","sanitizeSelect","saveVersion","buildAfterOperation","createOperation","incomingArgs","args","shouldCommit","disableTransaction","req","authOptions","collection","config","auth","collectionSlug","slug","data","operation","hooks","beforeOperation","length","hook","context","autosave","collectionConfig","depth","disableVerificationEmail","draft","duplicateFromID","overrideAccess","overwriteExistingFiles","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","shouldSaveDraft","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","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":["// @ts-strict-ignore\nimport crypto from 'crypto'\n\nimport type {\n Document,\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type {\n AfterChangeHook,\n BeforeOperationHook,\n BeforeValidateHook,\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 { type CollectionSlug, type JsonObject } 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 { saveVersion } from '../../versions/saveVersion.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 req: PayloadRequest\n select?: SelectType\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 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 req: {\n fallbackLocale,\n locale,\n payload,\n payload: { config },\n },\n req,\n select: incomingSelect,\n showHiddenFields,\n } = args\n\n let { data } = args\n\n const shouldSaveDraft = 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: shouldSaveDraft,\n overrideAccess,\n req,\n shouldSaveDraft,\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 !shouldSaveDraft && 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,\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 req,\n skipValidation:\n shouldSaveDraft &&\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 select,\n })\n } else {\n doc = await payload.db.create({\n collection: collectionConfig.slug,\n data: resultWithLocales,\n req,\n select,\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 payload,\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,\n doc: result,\n draft,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n 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 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","generateFileData","unlinkTempFiles","uploadFiles","commitTransaction","initTransaction","killTransaction","sanitizeInternalFields","sanitizeSelect","saveVersion","buildAfterOperation","createOperation","incomingArgs","args","shouldCommit","disableTransaction","req","authOptions","collection","config","auth","collectionSlug","slug","data","operation","hooks","beforeOperation","length","hook","context","autosave","collectionConfig","depth","disableVerificationEmail","draft","duplicateFromID","overrideAccess","overwriteExistingFiles","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","shouldSaveDraft","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/delete.ts"],"names":[],"mappings":"AAIA,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,EAEV,mBAAmB,EACnB,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAkB3B,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,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,
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/delete.ts"],"names":[],"mappings":"AAIA,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,EAEV,mBAAmB,EACnB,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAkB3B,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,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,CA6Q7C,CAAA"}
|
|
@@ -54,6 +54,7 @@ export const deleteOperation = async (incomingArgs)=>{
|
|
|
54
54
|
});
|
|
55
55
|
const fullWhere = combineQueries(where, accessResult);
|
|
56
56
|
const select = sanitizeSelect({
|
|
57
|
+
fields: collectionConfig.flattenedFields,
|
|
57
58
|
forceSelect: collectionConfig.forceSelect,
|
|
58
59
|
select: incomingSelect
|
|
59
60
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/delete.ts"],"sourcesContent":["// @ts-strict-ignore\nimport { 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 BeforeOperationHook,\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 { 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 { 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 overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: 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 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,\n req,\n where,\n })\n\n const fullWhere = combineQueries(where, accessResult)\n\n const select = sanitizeSelect({\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,\n req,\n select,\n where: fullWhere,\n })\n\n const 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,\n doc: result || doc,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n 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 errors.push({\n id: doc.id,\n message: error.message,\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","APIError","afterRead","deleteUserPreferences","deleteAssociatedFiles","checkDocumentLockStatus","commitTransaction","initTransaction","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","where","BAD_REQUEST","accessResult","access","delete","fullWhere","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","push","message","awaitedDocs","Promise","all","ids","filter","Boolean"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/delete.ts"],"sourcesContent":["// @ts-strict-ignore\nimport { 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 BeforeOperationHook,\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 { 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 { 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 overrideAccess?: boolean\n overrideLock?: boolean\n populate?: PopulateType\n req: PayloadRequest\n select?: SelectType\n showHiddenFields?: 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 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,\n req,\n where,\n })\n\n const fullWhere = combineQueries(where, accessResult)\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,\n req,\n select,\n where: fullWhere,\n })\n\n const 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,\n doc: result || doc,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n 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 errors.push({\n id: doc.id,\n message: error.message,\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","APIError","afterRead","deleteUserPreferences","deleteAssociatedFiles","checkDocumentLockStatus","commitTransaction","initTransaction","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","where","BAD_REQUEST","accessResult","access","delete","fullWhere","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","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":"AACA,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,EAAuB,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAkBjG,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;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,KAAK,SAAS,cAAc,EAAE,OAAO,SAAS,UAAU,gBAClF,SAAS,KACtB,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"deleteByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/deleteByID.ts"],"names":[],"mappings":"AACA,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,EAAuB,UAAU,EAA0B,MAAM,oBAAoB,CAAA;AAkBjG,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;CAC3B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAU,KAAK,SAAS,cAAc,EAAE,OAAO,SAAS,UAAU,gBAClF,SAAS,KACtB,OAAO,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAyOvD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/deleteByID.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { CollectionSlug } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type { BeforeOperationHook, 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 { 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}\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 } = 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 const docToDelete = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale: req.locale,\n req,\n where: combineQueries({ id: { equals: id } }, accessResults),\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 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,\n doc: result,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n 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","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","accessResults","access","delete","hasWhereAccess","beforeDelete","docToDelete","db","findOne","slug","where","equals","t","collectionSlug","lockErrorMessage","doc","overrideDelete","versions","drafts","schedulePublish","forceSelect","result","deleteOne","ids","draft","undefined","global","afterDelete","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/deleteByID.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { CollectionSlug } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n TransformCollectionWithSelect,\n} from '../../types/index.js'\nimport type { BeforeOperationHook, 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 { 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}\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 } = 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 const docToDelete = await req.payload.db.findOne({\n collection: collectionConfig.slug,\n locale: req.locale,\n req,\n where: combineQueries({ id: { equals: id } }, accessResults),\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,\n doc: result,\n draft: undefined,\n fallbackLocale,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n 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","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","accessResults","access","delete","hasWhereAccess","beforeDelete","docToDelete","db","findOne","slug","where","equals","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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/find.ts"],"names":[],"mappings":"AAEA,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;AAiB3B,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,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,
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/find.ts"],"names":[],"mappings":"AAEA,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;AAiB3B,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,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,CAiTtE,CAAA"}
|
|
@@ -34,6 +34,7 @@ export const findOperation = async (incomingArgs)=>{
|
|
|
34
34
|
}
|
|
35
35
|
const { collection: { config: collectionConfig }, collection, currentDepth, depth, disableErrors, draft: draftsEnabled, includeLockStatus, joins, limit, overrideAccess, page, pagination = true, populate, req: { fallbackLocale, locale, payload }, req, select: incomingSelect, showHiddenFields, sort: incomingSort, where } = args;
|
|
36
36
|
const select = sanitizeSelect({
|
|
37
|
+
fields: collectionConfig.flattenedFields,
|
|
37
38
|
forceSelect: collectionConfig.forceSelect,
|
|
38
39
|
select: incomingSelect
|
|
39
40
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/collections/operations/find.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { CollectionSlug, JoinQuery } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n includeLockStatus?: boolean\n joins?: JoinQuery\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n sort?: Sort\n where?: Where\n}\n\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const findOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>> => {\n let args = incomingArgs\n\n try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n 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: 'read',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft: draftsEnabled,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n where,\n } = args\n\n const select = sanitizeSelect({\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, collectionConfig.access.read)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 1,\n }\n }\n }\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const usePagination = pagination && limit !== 0\n const sanitizedLimit = limit ?? (usePagination ? 10 : 0)\n const sanitizedPage = page || 1\n\n let result: PaginatedDocs<DataFromCollectionSlug<TSlug>>\n\n let fullWhere = combineQueries(where, accessResult)\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n if (collectionConfig.versions?.drafts && draftsEnabled) {\n fullWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n result = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale,\n page: sanitizedPage,\n pagination: usePagination,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: getQueryDraftsSort({\n collectionConfig,\n sort,\n }),\n where: fullWhere,\n })\n } else {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n\n result = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n draftsEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n }\n\n if (includeLockStatus) {\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n const lockedDocuments = await payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: sanitizedLimit,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n in: result.docs.map((doc) => doc.id),\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n const lockedDocs = Array.isArray(lockedDocuments?.docs) ? lockedDocuments.docs : []\n\n // Filter out stale locks\n const validLockedDocs = lockedDocs.filter((lock) => {\n const lastEditedAt = new Date(lock?.updatedAt).getTime()\n return lastEditedAt + lockDurationInMilliseconds > now\n })\n\n for (const doc of result.docs) {\n const lockedDoc = validLockedDocs.find((lock) => lock?.document?.value === doc.id)\n doc._isLocked = !!lockedDoc\n doc._userEditing = lockedDoc ? lockedDoc?.user?.value : null\n }\n } catch (_err) {\n for (const doc of result.docs) {\n doc._isLocked = false\n doc._userEditing = null\n }\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.beforeRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (doc) =>\n afterRead<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth,\n doc,\n draft: draftsEnabled,\n fallbackLocale,\n findMany: true,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields,\n }),\n ),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n findMany: true,\n query: fullWhere,\n req,\n })) || doc\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'find',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeJoinQuery","afterRead","lockedDocumentsCollectionSlug","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","getQueryDraftsSort","sanitizeSortQuery","buildAfterOperation","lockDurationDefault","findOperation","incomingArgs","args","collection","config","hooks","beforeOperation","length","hook","context","req","operation","collectionConfig","currentDepth","depth","disableErrors","draft","draftsEnabled","includeLockStatus","joins","limit","overrideAccess","page","pagination","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","sort","incomingSort","where","forceSelect","accessResult","access","read","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","usePagination","sanitizedLimit","sanitizedPage","result","fullWhere","fields","flattenedFields","sanitizedJoins","versions","drafts","versionFields","db","queryDrafts","slug","payloadAPI","find","lockDocumentsProp","lockDocuments","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","lockedDocuments","and","equals","in","map","doc","id","updatedAt","greater_than","lockedDocs","Array","isArray","validLockedDocs","filter","lock","lastEditedAt","lockedDoc","document","value","_isLocked","_userEditing","user","_err","beforeRead","Promise","all","docRef","query","findMany","global","error"],"mappings":"AAAA,oBAAoB;AAkBpB,OAAOA,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,iBAAiB,QAAQ,sCAAqC;AACvE,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,6BAA6B,QAAQ,mCAAkC;AAChF,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,4BAA4B,QAAQ,0CAAyC;AACtF,SAASC,uBAAuB,QAAQ,mDAAkD;AAC1F,SAASC,oBAAoB,QAAQ,gDAA+C;AACpF,SAASC,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,iBAAiB,QAAQ,mCAAkC;AACpE,SAASC,mBAAmB,QAAQ,aAAY;AAsBhD,MAAMC,sBAAsB,IAAI,+BAA+B;;AAE/D,OAAO,MAAMC,gBAAgB,OAI3BC;IAEA,IAAIC,OAAOD;IAEX,IAAI;QACF,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExC,IAAIC,KAAKC,UAAU,CAACC,MAAM,CAACC,KAAK,EAAEC,iBAAiBC,QAAQ;YACzD,KAAK,MAAMC,QAAQN,KAAKC,UAAU,CAACC,MAAM,CAACC,KAAK,CAACC,eAAe,CAAE;gBAC/DJ,OACE,AAAC,MAAMM,KAAK;oBACVN;oBACAC,YAAYD,KAAKC,UAAU,CAACC,MAAM;oBAClCK,SAASP,KAAKQ,GAAG,CAACD,OAAO;oBACzBE,WAAW;oBACXD,KAAKR,KAAKQ,GAAG;gBACf,MAAOR;YACX;QACF;QAEA,MAAM,EACJC,YAAY,EAAEC,QAAQQ,gBAAgB,EAAE,EACxCT,UAAU,EACVU,YAAY,EACZC,KAAK,EACLC,aAAa,EACbC,OAAOC,aAAa,EACpBC,iBAAiB,EACjBC,KAAK,EACLC,KAAK,EACLC,cAAc,EACdC,IAAI,EACJC,aAAa,IAAI,EACjBC,QAAQ,EACRd,KAAK,EAAEe,cAAc,EAAEC,MAAM,EAAEC,OAAO,EAAE,EACxCjB,GAAG,EACHkB,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,MAAMC,YAAY,EAClBC,KAAK,EACN,GAAG/B;QAEJ,MAAM0B,SAASpC,eAAe;YAC5B0C,aAAatB,iBAAiBsB,WAAW;YACzCN,QAAQC;QACV;QAEA,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIM;QAEJ,IAAI,CAACd,gBAAgB;YACnBc,eAAe,MAAMlD,cAAc;gBAAE8B;gBAAeL;YAAI,GAAGE,iBAAiBwB,MAAM,CAACC,IAAI;YAEvF,yEAAyE;YACzE,IAAIF,iBAAiB,OAAO;gBAC1B,OAAO;oBACLG,MAAM,EAAE;oBACRC,aAAa;oBACbC,aAAa;oBACbpB;oBACAqB,UAAU;oBACVnB,MAAM;oBACNoB,eAAe;oBACfC,UAAU;oBACVC,WAAW;oBACXC,YAAY;gBACd;YACF;QACF;QAEA,wCAAwC;QACxC,OAAO;QACP,wCAAwC;QAExC,MAAMC,gBAAgBvB,cAAcH,UAAU;QAC9C,MAAM2B,iBAAiB3B,SAAU0B,CAAAA,gBAAgB,KAAK,CAAA;QACtD,MAAME,gBAAgB1B,QAAQ;QAE9B,IAAI2B;QAEJ,IAAIC,YAAYhE,eAAe+C,OAAOE;QAEtC,MAAMJ,OAAOlC,kBAAkB;YAC7BsD,QAAQhD,WAAWC,MAAM,CAACgD,eAAe;YACzCrB,MAAMC;QACR;QAEA,MAAMqB,iBAAiB,MAAMjE,kBAAkB;YAC7CwB;YACAO;YACAE;YACAX;QACF;QAEA,IAAIE,iBAAiB0C,QAAQ,EAAEC,UAAUtC,eAAe;YACtDiC,YAAYxD,wBAAwBwD;YAEpC,MAAM/D,mBAAmB;gBACvByB,kBAAkBT,WAAWC,MAAM;gBACnCiB;gBACAX;gBACA8C,eAAe/D,6BAA6BkC,QAAQvB,MAAM,EAAED,WAAWC,MAAM,EAAE;gBAC/E6B,OAAOvC,wBAAwBuC;YACjC;YAEAgB,SAAS,MAAMtB,QAAQ8B,EAAE,CAACC,WAAW,CAAgC;gBACnEvD,YAAYS,iBAAiB+C,IAAI;gBACjCxC,OAAOT,IAAIkD,UAAU,KAAK,YAAY,QAAQP;gBAC9CjC,OAAO2B;gBACPrB;gBACAJ,MAAM0B;gBACNzB,YAAYuB;gBACZpC;gBACAkB,QAAQjC,qBAAqB;oBAAEiC;gBAAO;gBACtCG,MAAMnC,mBAAmB;oBACvBgB;oBACAmB;gBACF;gBACAE,OAAOiB;YACT;QACF,OAAO;YACL,MAAM/D,mBAAmB;gBACvByB;gBACAS;gBACAX;gBACAuB;YACF;YAEAgB,SAAS,MAAMtB,QAAQ8B,EAAE,CAACI,IAAI,CAAgC;gBAC5D1D,YAAYS,iBAAiB+C,IAAI;gBACjC1C;gBACAE,OAAOT,IAAIkD,UAAU,KAAK,YAAY,QAAQP;gBAC9CjC,OAAO2B;gBACPrB;gBACAJ,MAAM0B;gBACNzB;gBACAb;gBACAkB;gBACAG;gBACAE,OAAOiB;YACT;QACF;QAEA,IAAIhC,mBAAmB;YACrB,IAAI;gBACF,MAAM4C,oBAAoBlD,kBAAkBmD;gBAE5C,MAAMC,eACJ,OAAOF,sBAAsB,WAAWA,kBAAkBG,QAAQ,GAAGlE;gBACvE,MAAMmE,6BAA6BF,eAAe;gBAElD,MAAMG,MAAM,IAAIC,OAAOC,OAAO;gBAE9B,MAAMC,kBAAkB,MAAM3C,QAAQkC,IAAI,CAAC;oBACzC1D,YAAYb;oBACZwB,OAAO;oBACPM,OAAO2B;oBACP1B,gBAAgB;oBAChBE,YAAY;oBACZb;oBACAuB,OAAO;wBACLsC,KAAK;4BACH;gCACE,uBAAuB;oCACrBC,QAAQ5D,iBAAiB+C,IAAI;gCAC/B;4BACF;4BACA;gCACE,kBAAkB;oCAChBc,IAAIxB,OAAOX,IAAI,CAACoC,GAAG,CAAC,CAACC,MAAQA,IAAIC,EAAE;gCACrC;4BACF;4BACA,sEAAsE;4BACtE;gCACEC,WAAW;oCACTC,cAAc,IAAIV,KAAKD,MAAMD;gCAC/B;4BACF;yBACD;oBACH;gBACF;gBAEA,MAAMa,aAAaC,MAAMC,OAAO,CAACX,iBAAiBhC,QAAQgC,gBAAgBhC,IAAI,GAAG,EAAE;gBAEnF,yBAAyB;gBACzB,MAAM4C,kBAAkBH,WAAWI,MAAM,CAAC,CAACC;oBACzC,MAAMC,eAAe,IAAIjB,KAAKgB,MAAMP,WAAWR,OAAO;oBACtD,OAAOgB,eAAenB,6BAA6BC;gBACrD;gBAEA,KAAK,MAAMQ,OAAO1B,OAAOX,IAAI,CAAE;oBAC7B,MAAMgD,YAAYJ,gBAAgBrB,IAAI,CAAC,CAACuB,OAASA,MAAMG,UAAUC,UAAUb,IAAIC,EAAE;oBACjFD,IAAIc,SAAS,GAAG,CAAC,CAACH;oBAClBX,IAAIe,YAAY,GAAGJ,YAAYA,WAAWK,MAAMH,QAAQ;gBAC1D;YACF,EAAE,OAAOI,MAAM;gBACb,KAAK,MAAMjB,OAAO1B,OAAOX,IAAI,CAAE;oBAC7BqC,IAAIc,SAAS,GAAG;oBAChBd,IAAIe,YAAY,GAAG;gBACrB;YACF;QACF;QAEA,wCAAwC;QACxC,0BAA0B;QAC1B,wCAAwC;QAExC,IAAI9E,kBAAkBP,OAAOwF,YAAYtF,QAAQ;YAC/C0C,OAAOX,IAAI,GAAG,MAAMwD,QAAQC,GAAG,CAC7B9C,OAAOX,IAAI,CAACoC,GAAG,CAAC,OAAOC;gBACrB,IAAIqB,SAASrB;gBAEb,KAAK,MAAMnE,QAAQI,iBAAiBP,KAAK,CAACwF,UAAU,CAAE;oBACpDG,SACE,AAAC,MAAMxF,KAAK;wBACVL,YAAYS;wBACZH,SAASC,IAAID,OAAO;wBACpBkE,KAAKqB;wBACLC,OAAO/C;wBACPxC;oBACF,MAAOsF;gBACX;gBAEA,OAAOA;YACT;QAEJ;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC/C,OAAOX,IAAI,GAAG,MAAMwD,QAAQC,GAAG,CAC7B9C,OAAOX,IAAI,CAACoC,GAAG,CAAC,OAAOC,MACrBtF,UAAyC;gBACvCc,YAAYS;gBACZH,SAASC,IAAID,OAAO;gBACpBI;gBACAC;gBACA6D;gBACA3D,OAAOC;gBACPQ;gBACAyE,UAAU;gBACVC,QAAQ;gBACRzE;gBACAL;gBACAG;gBACAd;gBACAkB;gBACAE;YACF;QAIJ,wCAAwC;QACxC,yBAAyB;QACzB,wCAAwC;QAExC,IAAIlB,kBAAkBP,OAAOhB,WAAWkB,QAAQ;YAC9C0C,OAAOX,IAAI,GAAG,MAAMwD,QAAQC,GAAG,CAC7B9C,OAAOX,IAAI,CAACoC,GAAG,CAAC,OAAOC;gBACrB,IAAIqB,SAASrB;gBAEb,KAAK,MAAMnE,QAAQI,iBAAiBP,KAAK,CAAChB,SAAS,CAAE;oBACnD2G,SACE,AAAC,MAAMxF,KAAK;wBACVL,YAAYS;wBACZH,SAASC,IAAID,OAAO;wBACpBkE,KAAKqB;wBACLE,UAAU;wBACVD,OAAO/C;wBACPxC;oBACF,MAAOiE;gBACX;gBAEA,OAAOqB;YACT;QAEJ;QAEA,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExC/C,SAAS,MAAMnD,oBAAoB;YACjCI;YACAC,YAAYS;YACZD,WAAW;YACXsC;QACF;QAEA,wCAAwC;QACxC,iBAAiB;QACjB,wCAAwC;QAExC,OAAOA;IACT,EAAE,OAAOmD,OAAgB;QACvB,MAAM7G,gBAAgBW,KAAKQ,GAAG;QAC9B,MAAM0F;IACR;AACF,EAAC"}
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/operations/find.ts"],"sourcesContent":["// @ts-strict-ignore\nimport type { AccessResult } from '../../config/types.js'\nimport type { PaginatedDocs } from '../../database/types.js'\nimport type { CollectionSlug, JoinQuery } from '../../index.js'\nimport type {\n PayloadRequest,\n PopulateType,\n SelectType,\n Sort,\n TransformCollectionWithSelect,\n Where,\n} from '../../types/index.js'\nimport type {\n Collection,\n DataFromCollectionSlug,\n SelectFromCollectionSlug,\n} from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { validateQueryPaths } from '../../database/queryValidation/validateQueryPaths.js'\nimport { sanitizeJoinQuery } from '../../database/sanitizeJoinQuery.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { lockedDocumentsCollectionSlug } from '../../locked-documents/config.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { buildVersionCollectionFields } from '../../versions/buildCollectionFields.js'\nimport { appendVersionToQueryKey } from '../../versions/drafts/appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from '../../versions/drafts/getQueryDraftsSelect.js'\nimport { getQueryDraftsSort } from '../../versions/drafts/getQueryDraftsSort.js'\nimport { sanitizeSortQuery } from './utilities/sanitizeSortQuery.js'\nimport { buildAfterOperation } from './utils.js'\n\nexport type Arguments = {\n collection: Collection\n currentDepth?: number\n depth?: number\n disableErrors?: boolean\n draft?: boolean\n includeLockStatus?: boolean\n joins?: JoinQuery\n limit?: number\n overrideAccess?: boolean\n page?: number\n pagination?: boolean\n populate?: PopulateType\n req?: PayloadRequest\n select?: SelectType\n showHiddenFields?: boolean\n sort?: Sort\n where?: Where\n}\n\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const findOperation = async <\n TSlug extends CollectionSlug,\n TSelect extends SelectFromCollectionSlug<TSlug>,\n>(\n incomingArgs: Arguments,\n): Promise<PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>> => {\n let args = incomingArgs\n\n try {\n // /////////////////////////////////////\n // beforeOperation - Collection\n // /////////////////////////////////////\n\n 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: 'read',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n collection,\n currentDepth,\n depth,\n disableErrors,\n draft: draftsEnabled,\n includeLockStatus,\n joins,\n limit,\n overrideAccess,\n page,\n pagination = true,\n populate,\n req: { fallbackLocale, locale, payload },\n req,\n select: incomingSelect,\n showHiddenFields,\n sort: incomingSort,\n where,\n } = args\n\n const select = sanitizeSelect({\n fields: collectionConfig.flattenedFields,\n forceSelect: collectionConfig.forceSelect,\n select: incomingSelect,\n })\n\n // /////////////////////////////////////\n // Access\n // /////////////////////////////////////\n\n let accessResult: AccessResult\n\n if (!overrideAccess) {\n accessResult = await executeAccess({ disableErrors, req }, collectionConfig.access.read)\n\n // If errors are disabled, and access returns false, return empty results\n if (accessResult === false) {\n return {\n docs: [],\n hasNextPage: false,\n hasPrevPage: false,\n limit,\n nextPage: null,\n page: 1,\n pagingCounter: 1,\n prevPage: null,\n totalDocs: 0,\n totalPages: 1,\n }\n }\n }\n\n // /////////////////////////////////////\n // Find\n // /////////////////////////////////////\n\n const usePagination = pagination && limit !== 0\n const sanitizedLimit = limit ?? (usePagination ? 10 : 0)\n const sanitizedPage = page || 1\n\n let result: PaginatedDocs<DataFromCollectionSlug<TSlug>>\n\n let fullWhere = combineQueries(where, accessResult)\n\n const sort = sanitizeSortQuery({\n fields: collection.config.flattenedFields,\n sort: incomingSort,\n })\n\n const sanitizedJoins = await sanitizeJoinQuery({\n collectionConfig,\n joins,\n overrideAccess,\n req,\n })\n\n if (collectionConfig.versions?.drafts && draftsEnabled) {\n fullWhere = appendVersionToQueryKey(fullWhere)\n\n await validateQueryPaths({\n collectionConfig: collection.config,\n overrideAccess,\n req,\n versionFields: buildVersionCollectionFields(payload.config, collection.config, true),\n where: appendVersionToQueryKey(where),\n })\n\n result = await payload.db.queryDrafts<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale,\n page: sanitizedPage,\n pagination: usePagination,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: getQueryDraftsSort({\n collectionConfig,\n sort,\n }),\n where: fullWhere,\n })\n } else {\n await validateQueryPaths({\n collectionConfig,\n overrideAccess,\n req,\n where,\n })\n\n result = await payload.db.find<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig.slug,\n draftsEnabled,\n joins: req.payloadAPI === 'GraphQL' ? false : sanitizedJoins,\n limit: sanitizedLimit,\n locale,\n page: sanitizedPage,\n pagination,\n req,\n select,\n sort,\n where: fullWhere,\n })\n }\n\n if (includeLockStatus) {\n try {\n const lockDocumentsProp = collectionConfig?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n const lockedDocuments = await payload.find({\n collection: lockedDocumentsCollectionSlug,\n depth: 1,\n limit: sanitizedLimit,\n overrideAccess: false,\n pagination: false,\n req,\n where: {\n and: [\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n 'document.value': {\n in: result.docs.map((doc) => doc.id),\n },\n },\n // Query where the lock is newer than the current time minus lock time\n {\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds),\n },\n },\n ],\n },\n })\n\n const lockedDocs = Array.isArray(lockedDocuments?.docs) ? lockedDocuments.docs : []\n\n // Filter out stale locks\n const validLockedDocs = lockedDocs.filter((lock) => {\n const lastEditedAt = new Date(lock?.updatedAt).getTime()\n return lastEditedAt + lockDurationInMilliseconds > now\n })\n\n for (const doc of result.docs) {\n const lockedDoc = validLockedDocs.find((lock) => lock?.document?.value === doc.id)\n doc._isLocked = !!lockedDoc\n doc._userEditing = lockedDoc ? lockedDoc?.user?.value : null\n }\n } catch (_err) {\n for (const doc of result.docs) {\n doc._isLocked = false\n doc._userEditing = null\n }\n }\n }\n\n // /////////////////////////////////////\n // beforeRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.beforeRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.beforeRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n query: fullWhere,\n req,\n })) || docRef\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result.docs = await Promise.all(\n result.docs.map(async (doc) =>\n afterRead<DataFromCollectionSlug<TSlug>>({\n collection: collectionConfig,\n context: req.context,\n currentDepth,\n depth,\n doc,\n draft: draftsEnabled,\n fallbackLocale,\n findMany: true,\n global: null,\n locale,\n overrideAccess,\n populate,\n req,\n select,\n showHiddenFields,\n }),\n ),\n )\n\n // /////////////////////////////////////\n // afterRead - Collection\n // /////////////////////////////////////\n\n if (collectionConfig?.hooks?.afterRead?.length) {\n result.docs = await Promise.all(\n result.docs.map(async (doc) => {\n let docRef = doc\n\n for (const hook of collectionConfig.hooks.afterRead) {\n docRef =\n (await hook({\n collection: collectionConfig,\n context: req.context,\n doc: docRef,\n findMany: true,\n query: fullWhere,\n req,\n })) || doc\n }\n\n return docRef\n }),\n )\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n result = await buildAfterOperation({\n args,\n collection: collectionConfig,\n operation: 'find',\n result,\n })\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n return result as PaginatedDocs<TransformCollectionWithSelect<TSlug, TSelect>>\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["executeAccess","combineQueries","validateQueryPaths","sanitizeJoinQuery","afterRead","lockedDocumentsCollectionSlug","killTransaction","sanitizeSelect","buildVersionCollectionFields","appendVersionToQueryKey","getQueryDraftsSelect","getQueryDraftsSort","sanitizeSortQuery","buildAfterOperation","lockDurationDefault","findOperation","incomingArgs","args","collection","config","hooks","beforeOperation","length","hook","context","req","operation","collectionConfig","currentDepth","depth","disableErrors","draft","draftsEnabled","includeLockStatus","joins","limit","overrideAccess","page","pagination","populate","fallbackLocale","locale","payload","select","incomingSelect","showHiddenFields","sort","incomingSort","where","fields","flattenedFields","forceSelect","accessResult","access","read","docs","hasNextPage","hasPrevPage","nextPage","pagingCounter","prevPage","totalDocs","totalPages","usePagination","sanitizedLimit","sanitizedPage","result","fullWhere","sanitizedJoins","versions","drafts","versionFields","db","queryDrafts","slug","payloadAPI","find","lockDocumentsProp","lockDocuments","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","lockedDocuments","and","equals","in","map","doc","id","updatedAt","greater_than","lockedDocs","Array","isArray","validLockedDocs","filter","lock","lastEditedAt","lockedDoc","document","value","_isLocked","_userEditing","user","_err","beforeRead","Promise","all","docRef","query","findMany","global","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findByID.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAc3B,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,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,KAAK,SAAS,cAAc,EAC5B,cAAc,SAAS,OAAO,EAC9B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,KACtB,OAAO,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"findByID.d.ts","sourceRoot":"","sources":["../../../src/collections/operations/findByID.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,6BAA6B,EAC9B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EACV,UAAU,EAEV,wBAAwB,EACzB,MAAM,oBAAoB,CAAA;AAc3B,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,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,KAAK,SAAS,cAAc,EAC5B,cAAc,SAAS,OAAO,EAC9B,OAAO,SAAS,wBAAwB,CAAC,KAAK,CAAC,gBAEjC,SAAS,KACtB,OAAO,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAgQ3F,CAAA"}
|
|
@@ -29,6 +29,7 @@ export const findByIDOperation = async (incomingArgs)=>{
|
|
|
29
29
|
}
|
|
30
30
|
const { id, collection: { config: collectionConfig }, currentDepth, depth, disableErrors, draft: draftEnabled = false, includeLockStatus, joins, overrideAccess = false, populate, req: { fallbackLocale, locale, t }, req, select: incomingSelect, showHiddenFields } = args;
|
|
31
31
|
const select = sanitizeSelect({
|
|
32
|
+
fields: collectionConfig.flattenedFields,
|
|
32
33
|
forceSelect: collectionConfig.forceSelect,
|
|
33
34
|
select: incomingSelect
|
|
34
35
|
});
|