payload 3.36.0-canary.9 → 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/auth/operations/forgotPassword.d.ts.map +1 -1
- package/dist/auth/operations/forgotPassword.js +5 -3
- package/dist/auth/operations/forgotPassword.js.map +1 -1
- 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":"forgotPassword.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/forgotPassword.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACX,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAWjE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAA;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAE3B,eAAO,MAAM,uBAAuB,GAAU,KAAK,SAAS,cAAc,gBAC1D,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,IAAI,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"forgotPassword.d.ts","sourceRoot":"","sources":["../../../src/auth/operations/forgotPassword.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gCAAgC,EAChC,UAAU,EACX,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAWjE,MAAM,MAAM,SAAS,CAAC,KAAK,SAAS,cAAc,IAAI;IACpD,UAAU,EAAE,UAAU,CAAA;IACtB,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC,CAAA;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAA;AAE3B,eAAO,MAAM,uBAAuB,GAAU,KAAK,SAAS,cAAc,gBAC1D,SAAS,CAAC,KAAK,CAAC,KAC7B,OAAO,CAAC,IAAI,GAAG,MAAM,CA8LvB,CAAA"}
|
|
@@ -73,12 +73,14 @@ export const forgotPasswordOperation = async (incomingArgs)=>{
|
|
|
73
73
|
await commitTransaction(args.req);
|
|
74
74
|
return null;
|
|
75
75
|
}
|
|
76
|
-
|
|
77
|
-
user.resetPasswordExpiration = new Date(Date.now() + (collectionConfig.auth?.forgotPassword?.expiration ?? expiration ?? 3600000)).toISOString();
|
|
76
|
+
const resetPasswordExpiration = new Date(Date.now() + (collectionConfig.auth?.forgotPassword?.expiration ?? expiration ?? 3600000)).toISOString();
|
|
78
77
|
user = await payload.update({
|
|
79
78
|
id: user.id,
|
|
80
79
|
collection: collectionConfig.slug,
|
|
81
|
-
data:
|
|
80
|
+
data: {
|
|
81
|
+
resetPasswordExpiration,
|
|
82
|
+
resetPasswordToken: token
|
|
83
|
+
},
|
|
82
84
|
req
|
|
83
85
|
});
|
|
84
86
|
if (!disableEmail && user.email) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/auth/operations/forgotPassword.ts"],"sourcesContent":["// @ts-strict-ignore\nimport crypto from 'crypto'\nimport { status as httpStatus } from 'http-status'\nimport { URL } from 'url'\n\nimport type {\n AuthOperationsFromCollectionSlug,\n Collection,\n} from '../../collections/config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { APIError } from '../../errors/index.js'\nimport { Forbidden } from '../../index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getLoginOptions } from '../getLoginOptions.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: {\n [key: string]: unknown\n } & AuthOperationsFromCollectionSlug<TSlug>['forgotPassword']\n disableEmail?: boolean\n expiration?: number\n req: PayloadRequest\n}\n\nexport type Result = string\n\nexport const forgotPasswordOperation = async <TSlug extends CollectionSlug>(\n incomingArgs: Arguments<TSlug>,\n): Promise<null | string> => {\n const loginWithUsername = incomingArgs.collection.config.auth.loginWithUsername\n const { data } = incomingArgs\n\n const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername)\n\n const sanitizedEmail =\n (canLoginWithEmail && (incomingArgs.data.email || '').toLowerCase().trim()) || null\n const sanitizedUsername =\n 'username' in data && typeof data?.username === 'string'\n ? data.username.toLowerCase().trim()\n : null\n\n let args = incomingArgs\n\n if (incomingArgs.collection.config.auth.disableLocalStrategy) {\n throw new Forbidden(incomingArgs.req.t)\n }\n if (!sanitizedEmail && !sanitizedUsername) {\n throw new APIError(\n `Missing ${loginWithUsername ? 'username' : 'email'}.`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n try {\n const shouldCommit = 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: 'forgotPassword',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n disableEmail,\n expiration,\n req: {\n payload: { config, email },\n payload,\n },\n req,\n } = args\n\n // /////////////////////////////////////\n // Forget password\n // /////////////////////////////////////\n\n let token: string = crypto.randomBytes(20).toString('hex')\n type UserDoc = {\n email?: string\n id: number | string\n resetPasswordExpiration?: string\n resetPasswordToken?: string\n }\n\n if (!sanitizedEmail && !sanitizedUsername) {\n throw new APIError(\n `Missing ${loginWithUsername ? 'username' : 'email'}.`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n let whereConstraint: Where = {}\n\n if (canLoginWithEmail && sanitizedEmail) {\n whereConstraint = {\n email: {\n equals: sanitizedEmail,\n },\n }\n } else if (canLoginWithUsername && sanitizedUsername) {\n whereConstraint = {\n username: {\n equals: sanitizedUsername,\n },\n }\n }\n\n let user = await payload.db.findOne<UserDoc>({\n collection: collectionConfig.slug,\n req,\n where: whereConstraint,\n })\n\n // We don't want to indicate specifically that an email was not found,\n // as doing so could lead to the exposure of registered emails.\n // Therefore, we prefer to fail silently.\n if (!user) {\n await commitTransaction(args.req)\n return null\n }\n\n user.resetPasswordToken = token\n user.resetPasswordExpiration = new Date(\n Date.now() + (collectionConfig.auth?.forgotPassword?.expiration ?? expiration ?? 3600000),\n ).toISOString()\n\n user = await payload.update({\n id: user.id,\n collection: collectionConfig.slug,\n data: user,\n req,\n })\n\n if (!disableEmail && user.email) {\n const protocol = new URL(req.url).protocol // includes the final :\n const serverURL =\n config.serverURL !== null && config.serverURL !== ''\n ? config.serverURL\n : `${protocol}//${req.headers.get('host')}`\n const forgotURL = formatAdminURL({\n adminRoute: config.routes.admin,\n path: `${config.admin.routes.reset}/${token}`,\n serverURL,\n })\n let html = `${req.t('authentication:youAreReceivingResetPassword')}\n <a href=\"${forgotURL}\">${forgotURL}</a>\n ${req.t('authentication:youDidNotRequestPassword')}`\n\n if (typeof collectionConfig.auth.forgotPassword?.generateEmailHTML === 'function') {\n html = await collectionConfig.auth.forgotPassword.generateEmailHTML({\n req,\n token,\n user,\n })\n }\n\n let subject = req.t('authentication:resetYourPassword')\n\n if (typeof collectionConfig.auth.forgotPassword?.generateEmailSubject === 'function') {\n subject = await collectionConfig.auth.forgotPassword.generateEmailSubject({\n req,\n token,\n user,\n })\n }\n\n await email.sendEmail({\n from: `\"${email.defaultFromName}\" <${email.defaultFromAddress}>`,\n html,\n subject,\n to: user.email,\n })\n }\n\n // /////////////////////////////////////\n // afterForgotPassword - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterForgotPassword?.length) {\n for (const hook of collectionConfig.hooks.afterForgotPassword) {\n await hook({ args, collection: args.collection?.config, context: req.context })\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n token = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'forgotPassword',\n result: token,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return token\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["crypto","status","httpStatus","URL","buildAfterOperation","APIError","Forbidden","commitTransaction","formatAdminURL","initTransaction","killTransaction","getLoginOptions","forgotPasswordOperation","incomingArgs","loginWithUsername","collection","config","auth","data","canLoginWithEmail","canLoginWithUsername","sanitizedEmail","email","toLowerCase","trim","sanitizedUsername","username","args","disableLocalStrategy","req","t","BAD_REQUEST","shouldCommit","hooks","beforeOperation","length","hook","context","operation","collectionConfig","disableEmail","expiration","payload","token","randomBytes","toString","whereConstraint","equals","user","db","findOne","slug","where","resetPasswordToken","resetPasswordExpiration","Date","now","forgotPassword","toISOString","update","id","protocol","url","serverURL","headers","get","forgotURL","adminRoute","routes","admin","path","reset","html","generateEmailHTML","subject","generateEmailSubject","sendEmail","from","defaultFromName","defaultFromAddress","to","afterForgotPassword","result","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/auth/operations/forgotPassword.ts"],"sourcesContent":["// @ts-strict-ignore\nimport crypto from 'crypto'\nimport { status as httpStatus } from 'http-status'\nimport { URL } from 'url'\n\nimport type {\n AuthOperationsFromCollectionSlug,\n Collection,\n} from '../../collections/config/types.js'\nimport type { CollectionSlug } from '../../index.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { buildAfterOperation } from '../../collections/operations/utils.js'\nimport { APIError } from '../../errors/index.js'\nimport { Forbidden } from '../../index.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getLoginOptions } from '../getLoginOptions.js'\n\nexport type Arguments<TSlug extends CollectionSlug> = {\n collection: Collection\n data: {\n [key: string]: unknown\n } & AuthOperationsFromCollectionSlug<TSlug>['forgotPassword']\n disableEmail?: boolean\n expiration?: number\n req: PayloadRequest\n}\n\nexport type Result = string\n\nexport const forgotPasswordOperation = async <TSlug extends CollectionSlug>(\n incomingArgs: Arguments<TSlug>,\n): Promise<null | string> => {\n const loginWithUsername = incomingArgs.collection.config.auth.loginWithUsername\n const { data } = incomingArgs\n\n const { canLoginWithEmail, canLoginWithUsername } = getLoginOptions(loginWithUsername)\n\n const sanitizedEmail =\n (canLoginWithEmail && (incomingArgs.data.email || '').toLowerCase().trim()) || null\n const sanitizedUsername =\n 'username' in data && typeof data?.username === 'string'\n ? data.username.toLowerCase().trim()\n : null\n\n let args = incomingArgs\n\n if (incomingArgs.collection.config.auth.disableLocalStrategy) {\n throw new Forbidden(incomingArgs.req.t)\n }\n if (!sanitizedEmail && !sanitizedUsername) {\n throw new APIError(\n `Missing ${loginWithUsername ? 'username' : 'email'}.`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n try {\n const shouldCommit = 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: 'forgotPassword',\n req: args.req,\n })) || args\n }\n }\n\n const {\n collection: { config: collectionConfig },\n disableEmail,\n expiration,\n req: {\n payload: { config, email },\n payload,\n },\n req,\n } = args\n\n // /////////////////////////////////////\n // Forget password\n // /////////////////////////////////////\n\n let token: string = crypto.randomBytes(20).toString('hex')\n type UserDoc = {\n email?: string\n id: number | string\n resetPasswordExpiration?: string\n resetPasswordToken?: string\n }\n\n if (!sanitizedEmail && !sanitizedUsername) {\n throw new APIError(\n `Missing ${loginWithUsername ? 'username' : 'email'}.`,\n httpStatus.BAD_REQUEST,\n )\n }\n\n let whereConstraint: Where = {}\n\n if (canLoginWithEmail && sanitizedEmail) {\n whereConstraint = {\n email: {\n equals: sanitizedEmail,\n },\n }\n } else if (canLoginWithUsername && sanitizedUsername) {\n whereConstraint = {\n username: {\n equals: sanitizedUsername,\n },\n }\n }\n\n let user = await payload.db.findOne<UserDoc>({\n collection: collectionConfig.slug,\n req,\n where: whereConstraint,\n })\n\n // We don't want to indicate specifically that an email was not found,\n // as doing so could lead to the exposure of registered emails.\n // Therefore, we prefer to fail silently.\n if (!user) {\n await commitTransaction(args.req)\n return null\n }\n\n const resetPasswordExpiration = new Date(\n Date.now() + (collectionConfig.auth?.forgotPassword?.expiration ?? expiration ?? 3600000),\n ).toISOString()\n\n user = await payload.update({\n id: user.id,\n collection: collectionConfig.slug,\n data: {\n resetPasswordExpiration,\n resetPasswordToken: token,\n },\n req,\n })\n\n if (!disableEmail && user.email) {\n const protocol = new URL(req.url).protocol // includes the final :\n const serverURL =\n config.serverURL !== null && config.serverURL !== ''\n ? config.serverURL\n : `${protocol}//${req.headers.get('host')}`\n const forgotURL = formatAdminURL({\n adminRoute: config.routes.admin,\n path: `${config.admin.routes.reset}/${token}`,\n serverURL,\n })\n let html = `${req.t('authentication:youAreReceivingResetPassword')}\n <a href=\"${forgotURL}\">${forgotURL}</a>\n ${req.t('authentication:youDidNotRequestPassword')}`\n\n if (typeof collectionConfig.auth.forgotPassword?.generateEmailHTML === 'function') {\n html = await collectionConfig.auth.forgotPassword.generateEmailHTML({\n req,\n token,\n user,\n })\n }\n\n let subject = req.t('authentication:resetYourPassword')\n\n if (typeof collectionConfig.auth.forgotPassword?.generateEmailSubject === 'function') {\n subject = await collectionConfig.auth.forgotPassword.generateEmailSubject({\n req,\n token,\n user,\n })\n }\n\n await email.sendEmail({\n from: `\"${email.defaultFromName}\" <${email.defaultFromAddress}>`,\n html,\n subject,\n to: user.email,\n })\n }\n\n // /////////////////////////////////////\n // afterForgotPassword - Collection\n // /////////////////////////////////////\n\n if (collectionConfig.hooks?.afterForgotPassword?.length) {\n for (const hook of collectionConfig.hooks.afterForgotPassword) {\n await hook({ args, collection: args.collection?.config, context: req.context })\n }\n }\n\n // /////////////////////////////////////\n // afterOperation - Collection\n // /////////////////////////////////////\n\n token = await buildAfterOperation({\n args,\n collection: args.collection?.config,\n operation: 'forgotPassword',\n result: token,\n })\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return token\n } catch (error: unknown) {\n await killTransaction(args.req)\n throw error\n }\n}\n"],"names":["crypto","status","httpStatus","URL","buildAfterOperation","APIError","Forbidden","commitTransaction","formatAdminURL","initTransaction","killTransaction","getLoginOptions","forgotPasswordOperation","incomingArgs","loginWithUsername","collection","config","auth","data","canLoginWithEmail","canLoginWithUsername","sanitizedEmail","email","toLowerCase","trim","sanitizedUsername","username","args","disableLocalStrategy","req","t","BAD_REQUEST","shouldCommit","hooks","beforeOperation","length","hook","context","operation","collectionConfig","disableEmail","expiration","payload","token","randomBytes","toString","whereConstraint","equals","user","db","findOne","slug","where","resetPasswordExpiration","Date","now","forgotPassword","toISOString","update","id","resetPasswordToken","protocol","url","serverURL","headers","get","forgotURL","adminRoute","routes","admin","path","reset","html","generateEmailHTML","subject","generateEmailSubject","sendEmail","from","defaultFromName","defaultFromAddress","to","afterForgotPassword","result","error"],"mappings":"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"}
|
|
@@ -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":"AAAA,oBAAoB;AACpB,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAalD,OAAOC,mBAAmB,8BAA6B;AACvD,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,kBAAkB,QAAQ,uDAAsD;AACzF,SAASC,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,SAAS,QAAQ,wCAAuC;AACjE,SAASC,qBAAqB,QAAQ,6CAA4C;AAClF,SAASC,qBAAqB,QAAQ,yCAAwC;AAC9E,SAASC,uBAAuB,QAAQ,6CAA4C;AACpF,SAASC,iBAAiB,QAAQ,uCAAsC;AACxE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,wBAAwB,QAAQ,6CAA4C;AACrF,SAASC,0BAA0B,QAAQ,+CAA8C;AACzF,SAASC,mBAAmB,QAAQ,aAAY;AAehD,OAAO,MAAMC,kBAAkB,OAI7BC;IAEA,IAAIC,OAAOD;IAEX,IAAI;QACF,MAAME,eAAe,CAACD,KAAKE,kBAAkB,IAAK,MAAMV,gBAAgBQ,KAAKG,GAAG;QAChF,wCAAwC;QACxC,+BAA+B;QAC/B,wCAAwC;QAExC,IAAIH,KAAKI,UAAU,CAACC,MAAM,CAACC,KAAK,EAAEC,iBAAiBC,QAAQ;YACzD,KAAK,MAAMC,QAAQT,KAAKI,UAAU,CAACC,MAAM,CAACC,KAAK,CAACC,eAAe,CAAE;gBAC/DP,OACE,AAAC,MAAMS,KAAK;oBACVT;oBACAI,YAAYJ,KAAKI,UAAU,CAACC,MAAM;oBAClCK,SAASV,KAAKG,GAAG,CAACO,OAAO;oBACzBC,WAAW;oBACXR,KAAKH,KAAKG,GAAG;gBACf,MAAOH;YACX;QACF;QAEA,MAAM,EACJI,YAAY,EAAEC,QAAQO,gBAAgB,EAAE,EACxCC,KAAK,EACLC,cAAc,EACdC,YAAY,EACZC,QAAQ,EACRb,KAAK,EACHc,cAAc,EACdC,MAAM,EACNC,SAAS,EAAEd,MAAM,EAAE,EACnBc,OAAO,EACR,EACDhB,GAAG,EACHiB,QAAQC,cAAc,EACtBC,gBAAgB,EAChBC,KAAK,EACN,GAAGvB;QAEJ,IAAI,CAACuB,OAAO;YACV,MAAM,IAAIrC,SAAS,iDAAiDJ,WAAW0C,WAAW;QAC5F;QAEA,wCAAwC;QACxC,SAAS;QACT,wCAAwC;QAExC,IAAIC;QAEJ,IAAI,CAACX,gBAAgB;YACnBW,eAAe,MAAM1C,cAAc;gBAAEoB;YAAI,GAAGS,iBAAiBc,MAAM,CAACC,MAAM;QAC5E;QAEA,MAAM1C,mBAAmB;YACvB2B;YACAE;YACAX;YACAoB;QACF;QAEA,MAAMK,YAAY5C,eAAeuC,OAAOE;QAExC,MAAML,SAAS1B,eAAe;YAC5BmC,aAAajB,iBAAiBiB,WAAW;YACzCT,QAAQC;QACV;QAEA,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC,MAAM,EAAES,IAAI,EAAE,GAAG,MAAMX,QAAQY,EAAE,CAACC,IAAI,CAAgC;YACpE5B,YAAYQ,iBAAiBqB,IAAI;YACjCf;YACAf;YACAiB;YACAG,OAAOK;QACT;QAEA,MAAMM,SAAS,EAAE;QAEjB,MAAMC,WAAWL,KAAKM,GAAG,CAAC,OAAOC;YAC/B,IAAIC;YAEJ,MAAM,EAAEC,EAAE,EAAE,GAAGF;YAEf,IAAI;gBACF,wCAAwC;gBACxC,sCAAsC;gBACtC,wCAAwC;gBAExC,MAAM/C,wBAAwB;oBAC5BiD;oBACAC,gBAAgB5B,iBAAiBqB,IAAI;oBACrCQ,kBAAkB,CAAC,iBAAiB,EAAEF,GAAG,2CAA2C,CAAC;oBACrFxB;oBACAZ;gBACF;gBAEA,wCAAwC;gBACxC,4BAA4B;gBAC5B,wCAAwC;gBAExC,IAAIS,iBAAiBN,KAAK,EAAEoC,cAAclC,QAAQ;oBAChD,KAAK,MAAMC,QAAQG,iBAAiBN,KAAK,CAACoC,YAAY,CAAE;wBACtD,MAAMjC,KAAK;4BACT8B;4BACAnC,YAAYQ;4BACZF,SAASP,IAAIO,OAAO;4BACpBP;wBACF;oBACF;gBACF;gBAEA,MAAMd,sBAAsB;oBAC1BuB;oBACAP;oBACAgC;oBACAM,gBAAgB;oBAChBxC;gBACF;gBAEA,wCAAwC;gBACxC,kBAAkB;gBAClB,wCAAwC;gBAExC,IAAIS,iBAAiBgC,QAAQ,EAAE;oBAC7B,MAAMjD,yBAAyB;wBAC7B4C;wBACAN,MAAMrB,iBAAiBqB,IAAI;wBAC3Bd;wBACAhB;oBACF;gBACF;gBAEA,wCAAwC;gBACxC,yBAAyB;gBACzB,wCAAwC;gBACxC,IAAIS,iBAAiBgC,QAAQ,EAAEC,UAAUjC,iBAAiBgC,QAAQ,CAACC,MAAM,CAACC,eAAe,EAAE;oBACzF,MAAMlD,2BAA2B;wBAC/B2C;wBACAN,MAAMrB,iBAAiBqB,IAAI;wBAC3Bd;wBACAhB;oBACF;gBACF;gBAEA,wCAAwC;gBACxC,kBAAkB;gBAClB,wCAAwC;gBAExC,MAAMgB,QAAQY,EAAE,CAACgB,SAAS,CAAC;oBACzB3C,YAAYQ,iBAAiBqB,IAAI;oBACjC9B;oBACA6C,WAAW;oBACXzB,OAAO;wBACLgB,IAAI;4BACFU,QAAQV;wBACV;oBACF;gBACF;gBAEA,wCAAwC;gBACxC,qBAAqB;gBACrB,wCAAwC;gBAExCD,SAAS,MAAMnD,UAAU;oBACvBiB,YAAYQ;oBACZF,SAASP,IAAIO,OAAO;oBACpBG;oBACAwB,KAAKC,UAAUD;oBACfa,OAAOC;oBACPlC;oBACAmC,QAAQ;oBACRlC;oBACAJ;oBACAE;oBACAb;oBACAiB;oBACAE;gBACF;gBAEA,wCAAwC;gBACxC,yBAAyB;gBACzB,wCAAwC;gBAExC,IAAIV,iBAAiBN,KAAK,EAAEnB,WAAWqB,QAAQ;oBAC7C,KAAK,MAAMC,QAAQG,iBAAiBN,KAAK,CAACnB,SAAS,CAAE;wBACnDmD,SACE,AAAC,MAAM7B,KAAK;4BACVL,YAAYQ;4BACZF,SAASP,IAAIO,OAAO;4BACpB2B,KAAKC,UAAUD;4BACflC;wBACF,MAAOmC;oBACX;gBACF;gBAEA,wCAAwC;gBACxC,2BAA2B;gBAC3B,wCAAwC;gBAExC,IAAI1B,iBAAiBN,KAAK,EAAE+C,aAAa7C,QAAQ;oBAC/C,KAAK,MAAMC,QAAQG,iBAAiBN,KAAK,CAAC+C,WAAW,CAAE;wBACrDf,SACE,AAAC,MAAM7B,KAAK;4BACV8B;4BACAnC,YAAYQ;4BACZF,SAASP,IAAIO,OAAO;4BACpB2B,KAAKC;4BACLnC;wBACF,MAAOmC;oBACX;gBACF;gBAEA,wCAAwC;gBACxC,oBAAoB;gBACpB,wCAAwC;gBAExC,OAAOA;YACT,EAAE,OAAOgB,OAAO;gBACdpB,OAAOqB,IAAI,CAAC;oBACVhB,IAAIF,IAAIE,EAAE;oBACViB,SAASF,MAAME,OAAO;gBACxB;YACF;YACA,OAAO;QACT;QAEA,MAAMC,cAAc,MAAMC,QAAQC,GAAG,CAACxB;QAEtC,wCAAwC;QACxC,qBAAqB;QACrB,wCAAwC;QAExC,MAAM/C,sBAAsB;YAC1BwB;YACAgD,KAAK9B,KAAKM,GAAG,CAAC,CAAC,EAAEG,EAAE,EAAE,GAAKA;YAC1BpB;YACAhB;QACF;QAEA,IAAImC,SAAS;YACXR,MAAM2B,YAAYI,MAAM,CAACC;YACzB5B;QACF;QAEA,wCAAwC;QACxC,8BAA8B;QAC9B,wCAAwC;QAExCI,SAAS,MAAMzC,oBAAoB;YACjCG;YACAI,YAAYQ;YACZD,WAAW;YACX2B;QACF;QAEA,IAAIrC,cAAc;YAChB,MAAMV,kBAAkBY;QAC1B;QAEA,OAAOmC;IACT,EAAE,OAAOgB,OAAgB;QACvB,MAAM7D,gBAAgBO,KAAKG,GAAG;QAC9B,MAAMmD;IACR;AACF,EAAC"}
|
|
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
|
});
|