From 22c53392a35319f6cfaa8238707c8603d167a966 Mon Sep 17 00:00:00 2001 From: Jarrod Flesch <30633324+JarrodMFlesch@users.noreply.github.com> Date: Thu, 25 Apr 2024 10:23:03 -0400 Subject: [PATCH] chore: improves types for payloadRequest (#6012) --- packages/db-mongodb/src/count.ts | 4 +- packages/db-mongodb/src/create.ts | 4 +- packages/db-mongodb/src/createGlobal.ts | 4 +- .../db-mongodb/src/createGlobalVersion.ts | 12 +- packages/db-mongodb/src/createVersion.ts | 4 +- packages/db-mongodb/src/deleteMany.ts | 4 +- packages/db-mongodb/src/deleteOne.ts | 4 +- packages/db-mongodb/src/deleteVersions.ts | 4 +- packages/db-mongodb/src/find.ts | 13 +- packages/db-mongodb/src/findGlobal.ts | 4 +- packages/db-mongodb/src/findGlobalVersions.ts | 4 +- packages/db-mongodb/src/findOne.ts | 4 +- packages/db-mongodb/src/findVersions.ts | 4 +- packages/db-mongodb/src/migrateFresh.ts | 4 +- packages/db-mongodb/src/queryDrafts.ts | 13 +- packages/db-mongodb/src/updateGlobal.ts | 4 +- .../db-mongodb/src/updateGlobalVersion.ts | 4 +- packages/db-mongodb/src/updateOne.ts | 4 +- packages/db-mongodb/src/updateVersion.ts | 4 +- packages/db-postgres/src/createGlobal.ts | 4 +- .../db-postgres/src/createGlobalVersion.ts | 9 +- packages/db-postgres/src/createVersion.ts | 4 +- packages/db-postgres/src/deleteMany.ts | 4 +- packages/db-postgres/src/deleteOne.ts | 4 +- packages/db-postgres/src/deleteVersions.ts | 4 +- packages/db-postgres/src/find.ts | 4 +- packages/db-postgres/src/find/findMany.ts | 4 +- .../db-postgres/src/findGlobalVersions.ts | 4 +- packages/db-postgres/src/findOne.ts | 4 +- packages/db-postgres/src/findVersions.ts | 4 +- packages/db-postgres/src/migrate.ts | 4 +- packages/db-postgres/src/migrateDown.ts | 4 +- packages/db-postgres/src/migrateFresh.ts | 4 +- packages/db-postgres/src/migrateRefresh.ts | 4 +- packages/db-postgres/src/migrateReset.ts | 4 +- packages/db-postgres/src/queryDrafts.ts | 13 +- packages/db-postgres/src/types.ts | 6 +- packages/db-postgres/src/updateGlobal.ts | 4 +- .../db-postgres/src/updateGlobalVersion.ts | 4 +- packages/db-postgres/src/updateVersion.ts | 4 +- packages/db-postgres/src/upsertRow/types.ts | 4 +- .../src/resolvers/collections/count.ts | 4 +- .../src/resolvers/collections/create.ts | 4 +- .../src/resolvers/collections/delete.ts | 4 +- .../src/resolvers/collections/docAccess.ts | 4 +- .../src/resolvers/collections/duplicate.ts | 4 +- .../graphql/src/resolvers/collections/find.ts | 4 +- .../src/resolvers/collections/findByID.ts | 4 +- .../resolvers/collections/findVersionByID.ts | 4 +- .../src/resolvers/collections/findVersions.ts | 4 +- .../resolvers/collections/restoreVersion.ts | 4 +- .../src/resolvers/collections/update.ts | 4 +- .../src/resolvers/globals/docAccess.ts | 4 +- .../src/resolvers/globals/findVersionByID.ts | 4 +- .../src/resolvers/globals/findVersions.ts | 4 +- .../src/resolvers/globals/restoreVersion.ts | 4 +- .../graphql/src/resolvers/globals/update.ts | 4 +- packages/graphql/src/resolvers/types.ts | 4 +- .../src/utilities/wrapCustomResolver.ts | 4 +- packages/next/src/exports/utilities.ts | 4 +- packages/next/src/routes/graphql/handler.ts | 14 +- .../next/src/routes/graphql/playground.ts | 3 - .../next/src/routes/rest/buildFormState.ts | 6 +- .../src/routes/rest/files/checkFileAccess.ts | 4 +- .../next/src/routes/rest/files/getFile.ts | 4 +- packages/next/src/routes/rest/index.ts | 387 ++++++++++-------- packages/next/src/routes/rest/routeError.ts | 4 +- packages/next/src/routes/rest/types.ts | 16 +- .../src/utilities/addDataAndFileToRequest.ts | 32 +- .../next/src/utilities/addLocalesToRequest.ts | 72 +++- .../utilities/buildFieldSchemaMap/index.ts | 4 +- .../src/utilities/createPayloadRequest.ts | 33 +- packages/next/src/utilities/getDataAndFile.ts | 6 +- .../next/src/utilities/headersWithCors.ts | 4 +- packages/next/src/utilities/initPage.ts | 4 +- .../src/views/Edit/Default/Auth/APIKey.tsx | 4 +- .../ForgotPasswordForm/index.tsx | 4 +- .../next/src/views/Login/LoginForm/index.tsx | 6 +- packages/payload/src/admin/RichText.ts | 4 +- packages/payload/src/admin/views/types.ts | 4 +- packages/payload/src/auth/defaultAccess.ts | 4 +- packages/payload/src/auth/executeAccess.ts | 4 +- packages/payload/src/auth/getAccessResults.ts | 4 +- packages/payload/src/auth/getFieldsToSign.ts | 4 +- .../payload/src/auth/operations/access.ts | 4 +- packages/payload/src/auth/operations/auth.ts | 6 +- .../src/auth/operations/forgotPassword.ts | 4 +- packages/payload/src/auth/operations/init.ts | 4 +- .../payload/src/auth/operations/local/auth.ts | 4 +- .../auth/operations/local/forgotPassword.ts | 4 +- .../src/auth/operations/local/login.ts | 4 +- .../auth/operations/local/resetPassword.ts | 4 +- .../src/auth/operations/local/unlock.ts | 4 +- .../src/auth/operations/local/verifyEmail.ts | 4 +- packages/payload/src/auth/operations/login.ts | 4 +- .../payload/src/auth/operations/logout.ts | 4 +- packages/payload/src/auth/operations/me.ts | 4 +- .../payload/src/auth/operations/refresh.ts | 4 +- .../src/auth/operations/registerFirstUser.ts | 4 +- .../src/auth/operations/resetPassword.ts | 4 +- .../payload/src/auth/operations/unlock.ts | 4 +- .../src/auth/operations/verifyEmail.ts | 4 +- .../payload/src/auth/sendVerificationEmail.ts | 4 +- .../local/incrementLoginAttempts.ts | 4 +- .../src/auth/strategies/local/register.ts | 4 +- .../strategies/local/resetLoginAttempts.ts | 4 +- packages/payload/src/auth/types.ts | 10 +- .../payload/src/collections/config/types.ts | 30 +- .../payload/src/collections/dataloader.ts | 4 +- .../src/collections/operations/count.ts | 4 +- .../src/collections/operations/create.ts | 4 +- .../src/collections/operations/delete.ts | 4 +- .../src/collections/operations/deleteByID.ts | 4 +- .../src/collections/operations/docAccess.ts | 4 +- .../src/collections/operations/duplicate.ts | 4 +- .../src/collections/operations/find.ts | 4 +- .../src/collections/operations/findByID.ts | 6 +- .../collections/operations/findVersionByID.ts | 4 +- .../collections/operations/findVersions.ts | 4 +- .../src/collections/operations/local/count.ts | 9 +- .../collections/operations/local/create.ts | 4 +- .../collections/operations/local/delete.ts | 4 +- .../collections/operations/local/duplicate.ts | 4 +- .../src/collections/operations/local/find.ts | 9 +- .../collections/operations/local/findByID.ts | 4 +- .../operations/local/findVersionByID.ts | 4 +- .../operations/local/findVersions.ts | 9 +- .../operations/local/restoreVersion.ts | 4 +- .../collections/operations/local/update.ts | 9 +- .../collections/operations/restoreVersion.ts | 4 +- .../src/collections/operations/update.ts | 4 +- .../src/collections/operations/updateByID.ts | 4 +- .../src/collections/operations/utils.ts | 4 +- packages/payload/src/config/types.ts | 6 +- .../src/database/migrations/migrate.ts | 4 +- .../src/database/migrations/migrateDown.ts | 4 +- .../src/database/migrations/migrateRefresh.ts | 4 +- .../src/database/migrations/migrateReset.ts | 4 +- .../queryValidation/validateQueryPaths.ts | 4 +- .../queryValidation/validateSearchParams.ts | 4 +- packages/payload/src/database/types.ts | 40 +- packages/payload/src/fields/config/types.ts | 12 +- .../payload/src/fields/getDefaultValue.ts | 4 +- .../src/fields/hooks/afterChange/index.ts | 4 +- .../src/fields/hooks/afterChange/promise.ts | 4 +- .../hooks/afterChange/traverseFields.ts | 4 +- .../src/fields/hooks/afterRead/index.ts | 4 +- .../src/fields/hooks/afterRead/promise.ts | 4 +- .../relationshipPopulationPromise.ts | 6 +- .../fields/hooks/afterRead/traverseFields.ts | 4 +- .../src/fields/hooks/beforeChange/index.ts | 4 +- .../src/fields/hooks/beforeChange/promise.ts | 4 +- .../hooks/beforeChange/traverseFields.ts | 4 +- .../src/fields/hooks/beforeValidate/index.ts | 4 +- .../fields/hooks/beforeValidate/promise.ts | 4 +- .../hooks/beforeValidate/traverseFields.ts | 4 +- packages/payload/src/globals/config/types.ts | 14 +- .../src/globals/operations/docAccess.ts | 4 +- .../payload/src/globals/operations/findOne.ts | 4 +- .../src/globals/operations/findVersionByID.ts | 4 +- .../src/globals/operations/findVersions.ts | 4 +- .../src/globals/operations/local/findOne.ts | 4 +- .../operations/local/findVersionByID.ts | 4 +- .../globals/operations/local/findVersions.ts | 4 +- .../operations/local/restoreVersion.ts | 4 +- .../src/globals/operations/local/update.ts | 4 +- .../src/globals/operations/restoreVersion.ts | 4 +- .../payload/src/globals/operations/update.ts | 4 +- .../src/preferences/deleteUserPreferences.ts | 4 +- .../src/preferences/requestHandlers/delete.ts | 19 +- .../preferences/requestHandlers/findOne.ts | 19 +- .../src/preferences/requestHandlers/update.ts | 23 +- packages/payload/src/preferences/types.ts | 6 +- packages/payload/src/types/index.ts | 30 +- .../src/uploads/deleteAssociatedFiles.ts | 4 +- .../src/uploads/docWithFilenameExists.ts | 4 +- .../payload/src/uploads/generateFileData.ts | 4 +- .../payload/src/uploads/getExternalFile.ts | 4 +- packages/payload/src/uploads/getFileByPath.ts | 4 +- packages/payload/src/uploads/getImageSize.ts | 4 +- .../payload/src/uploads/getSafeFilename.ts | 4 +- packages/payload/src/uploads/imageResizer.ts | 6 +- packages/payload/src/uploads/types.ts | 4 +- .../payload/src/uploads/unlinkTempFiles.ts | 4 +- packages/payload/src/uploads/uploadFiles.ts | 4 +- .../src/utilities/commitTransaction.ts | 4 +- .../payload/src/utilities/createLocalReq.ts | 12 +- .../src/utilities/getEntityPolicies.ts | 4 +- .../payload/src/utilities/initTransaction.ts | 4 +- .../payload/src/utilities/isEntityHidden.ts | 4 +- .../payload/src/utilities/killTransaction.ts | 4 +- .../utilities/telemetry/events/adminInit.ts | 4 +- .../src/versions/deleteCollectionVersions.ts | 4 +- .../drafts/replaceWithDraftIfAvailable.ts | 4 +- .../src/versions/enforceMaxVersions.ts | 4 +- .../versions/getLatestCollectionVersion.ts | 4 +- .../src/versions/getLatestGlobalVersion.ts | 4 +- packages/payload/src/versions/saveVersion.ts | 4 +- .../src/adapters/vercelBlob/staticHandler.ts | 2 +- packages/plugin-cloud-storage/src/types.ts | 8 +- .../src/utilities/getFilePrefix.ts | 4 +- .../src/utilities/getIncomingFiles.ts | 4 +- .../plugin-cloud/src/hooks/uploadCache.ts | 4 +- packages/plugin-cloud/src/types.ts | 8 +- .../src/utilities/getIncomingFiles.ts | 4 +- .../src/hooks/resaveChildren.ts | 8 +- packages/plugin-search/src/types.ts | 8 +- packages/plugin-seo/src/index.tsx | 16 +- packages/plugin-stripe/src/routes/rest.ts | 4 +- packages/plugin-stripe/src/routes/webhooks.ts | 4 +- .../src/field/features/types.ts | 6 +- .../richtext-lexical/src/populate/populate.ts | 4 +- .../src/populate/recurseNestedFields.ts | 4 +- packages/richtext-slate/src/data/populate.ts | 4 +- .../src/data/recurseNestedFields.ts | 4 +- .../src/data/richTextRelationshipPromise.ts | 4 +- .../src/elements/HydrateClientUser/index.tsx | 4 +- .../addFieldStatePromise.ts | 4 +- .../calculateDefaultValues/index.ts | 4 +- .../calculateDefaultValues/iterateFields.ts | 4 +- .../calculateDefaultValues/promise.ts | 4 +- .../src/forms/buildStateFromSchema/index.tsx | 4 +- .../buildStateFromSchema/iterateFields.ts | 4 +- test/_community/collections/Media/index.ts | 2 - test/access-control/config.ts | 4 +- test/access-control/int.spec.ts | 23 +- test/database/int.spec.ts | 8 +- test/helpers/reInit.ts | 12 +- test/helpers/sdk/endpoint.ts | 13 +- test/hooks/collections/ContextHooks/index.ts | 4 +- test/plugin-form-builder/seed/index.ts | 4 +- test/plugin-search/seed/index.ts | 4 +- test/plugin-seo/seed/index.ts | 4 +- test/plugin-stripe/seed/index.ts | 4 +- test/relationships/int.spec.ts | 4 +- 235 files changed, 961 insertions(+), 823 deletions(-) diff --git a/packages/db-mongodb/src/count.ts b/packages/db-mongodb/src/count.ts index 4247164f96..a8fafe9bf1 100644 --- a/packages/db-mongodb/src/count.ts +++ b/packages/db-mongodb/src/count.ts @@ -1,6 +1,6 @@ import type { QueryOptions } from 'mongoose' import type { Count } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { flattenWhereToOperators } from 'payload/database' @@ -10,7 +10,7 @@ import { withSession } from './withSession.js' export const count: Count = async function count( this: MongooseAdapter, - { collection, locale, req = {} as PayloadRequest, where }, + { collection, locale, req = {} as PayloadRequestWithData, where }, ) { const Model = this.collections[collection] const options: QueryOptions = withSession(this, req.transactionID) diff --git a/packages/db-mongodb/src/create.ts b/packages/db-mongodb/src/create.ts index 427ca44a02..cbcbbdd226 100644 --- a/packages/db-mongodb/src/create.ts +++ b/packages/db-mongodb/src/create.ts @@ -1,5 +1,5 @@ import type { Create } from 'payload/database' -import type { Document, PayloadRequest } from 'payload/types' +import type { Document, PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -8,7 +8,7 @@ import { withSession } from './withSession.js' export const create: Create = async function create( this: MongooseAdapter, - { collection, data, req = {} as PayloadRequest }, + { collection, data, req = {} as PayloadRequestWithData }, ) { const Model = this.collections[collection] const options = withSession(this, req.transactionID) diff --git a/packages/db-mongodb/src/createGlobal.ts b/packages/db-mongodb/src/createGlobal.ts index 8d7a866513..b976339599 100644 --- a/packages/db-mongodb/src/createGlobal.ts +++ b/packages/db-mongodb/src/createGlobal.ts @@ -1,5 +1,5 @@ import type { CreateGlobal } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -8,7 +8,7 @@ import { withSession } from './withSession.js' export const createGlobal: CreateGlobal = async function createGlobal( this: MongooseAdapter, - { slug, data, req = {} as PayloadRequest }, + { slug, data, req = {} as PayloadRequestWithData }, ) { const Model = this.globals const global = { diff --git a/packages/db-mongodb/src/createGlobalVersion.ts b/packages/db-mongodb/src/createGlobalVersion.ts index 668d38ef44..77a9435d7b 100644 --- a/packages/db-mongodb/src/createGlobalVersion.ts +++ b/packages/db-mongodb/src/createGlobalVersion.ts @@ -1,5 +1,5 @@ import type { CreateGlobalVersion } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Document } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -8,7 +8,15 @@ import { withSession } from './withSession.js' export const createGlobalVersion: CreateGlobalVersion = async function createGlobalVersion( this: MongooseAdapter, - { autosave, createdAt, globalSlug, parent, req = {} as PayloadRequest, updatedAt, versionData }, + { + autosave, + createdAt, + globalSlug, + parent, + req = {} as PayloadRequestWithData, + updatedAt, + versionData, + }, ) { const VersionModel = this.versions[globalSlug] const options = withSession(this, req.transactionID) diff --git a/packages/db-mongodb/src/createVersion.ts b/packages/db-mongodb/src/createVersion.ts index fd9279c1ba..fc21af3526 100644 --- a/packages/db-mongodb/src/createVersion.ts +++ b/packages/db-mongodb/src/createVersion.ts @@ -1,5 +1,5 @@ import type { CreateVersion } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Document } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -13,7 +13,7 @@ export const createVersion: CreateVersion = async function createVersion( collectionSlug, createdAt, parent, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, updatedAt, versionData, }, diff --git a/packages/db-mongodb/src/deleteMany.ts b/packages/db-mongodb/src/deleteMany.ts index 49e27997f7..56fc8e64da 100644 --- a/packages/db-mongodb/src/deleteMany.ts +++ b/packages/db-mongodb/src/deleteMany.ts @@ -1,5 +1,5 @@ import type { DeleteMany } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -7,7 +7,7 @@ import { withSession } from './withSession.js' export const deleteMany: DeleteMany = async function deleteMany( this: MongooseAdapter, - { collection, req = {} as PayloadRequest, where }, + { collection, req = {} as PayloadRequestWithData, where }, ) { const Model = this.collections[collection] const options = { diff --git a/packages/db-mongodb/src/deleteOne.ts b/packages/db-mongodb/src/deleteOne.ts index e4bffad3c8..ace4429893 100644 --- a/packages/db-mongodb/src/deleteOne.ts +++ b/packages/db-mongodb/src/deleteOne.ts @@ -1,5 +1,5 @@ import type { DeleteOne } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Document } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -9,7 +9,7 @@ import { withSession } from './withSession.js' export const deleteOne: DeleteOne = async function deleteOne( this: MongooseAdapter, - { collection, req = {} as PayloadRequest, where }, + { collection, req = {} as PayloadRequestWithData, where }, ) { const Model = this.collections[collection] const options = withSession(this, req.transactionID) diff --git a/packages/db-mongodb/src/deleteVersions.ts b/packages/db-mongodb/src/deleteVersions.ts index 6bd2f7fffc..ec09ca1698 100644 --- a/packages/db-mongodb/src/deleteVersions.ts +++ b/packages/db-mongodb/src/deleteVersions.ts @@ -1,5 +1,5 @@ import type { DeleteVersions } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -7,7 +7,7 @@ import { withSession } from './withSession.js' export const deleteVersions: DeleteVersions = async function deleteVersions( this: MongooseAdapter, - { collection, locale, req = {} as PayloadRequest, where }, + { collection, locale, req = {} as PayloadRequestWithData, where }, ) { const VersionsModel = this.versions[collection] const options = { diff --git a/packages/db-mongodb/src/find.ts b/packages/db-mongodb/src/find.ts index e0ac006a0f..b425be710f 100644 --- a/packages/db-mongodb/src/find.ts +++ b/packages/db-mongodb/src/find.ts @@ -1,6 +1,6 @@ import type { PaginateOptions } from 'mongoose' import type { Find } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { flattenWhereToOperators } from 'payload/database' @@ -12,7 +12,16 @@ import { withSession } from './withSession.js' export const find: Find = async function find( this: MongooseAdapter, - { collection, limit, locale, page, pagination, req = {} as PayloadRequest, sort: sortArg, where }, + { + collection, + limit, + locale, + page, + pagination, + req = {} as PayloadRequestWithData, + sort: sortArg, + where, + }, ) { const Model = this.collections[collection] const collectionConfig = this.payload.collections[collection].config diff --git a/packages/db-mongodb/src/findGlobal.ts b/packages/db-mongodb/src/findGlobal.ts index cac7f74440..17d490cab8 100644 --- a/packages/db-mongodb/src/findGlobal.ts +++ b/packages/db-mongodb/src/findGlobal.ts @@ -1,5 +1,5 @@ import type { FindGlobal } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { combineQueries } from 'payload/database' @@ -10,7 +10,7 @@ import { withSession } from './withSession.js' export const findGlobal: FindGlobal = async function findGlobal( this: MongooseAdapter, - { slug, locale, req = {} as PayloadRequest, where }, + { slug, locale, req = {} as PayloadRequestWithData, where }, ) { const Model = this.globals const options = { diff --git a/packages/db-mongodb/src/findGlobalVersions.ts b/packages/db-mongodb/src/findGlobalVersions.ts index 023b9d4fc9..41f120ed5d 100644 --- a/packages/db-mongodb/src/findGlobalVersions.ts +++ b/packages/db-mongodb/src/findGlobalVersions.ts @@ -1,6 +1,6 @@ import type { PaginateOptions } from 'mongoose' import type { FindGlobalVersions } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { flattenWhereToOperators } from 'payload/database' import { buildVersionGlobalFields } from 'payload/versions' @@ -19,7 +19,7 @@ export const findGlobalVersions: FindGlobalVersions = async function findGlobalV locale, page, pagination, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, skip, sort: sortArg, where, diff --git a/packages/db-mongodb/src/findOne.ts b/packages/db-mongodb/src/findOne.ts index c5bc7714af..c5d388e133 100644 --- a/packages/db-mongodb/src/findOne.ts +++ b/packages/db-mongodb/src/findOne.ts @@ -1,6 +1,6 @@ import type { MongooseQueryOptions } from 'mongoose' import type { FindOne } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Document } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -10,7 +10,7 @@ import { withSession } from './withSession.js' export const findOne: FindOne = async function findOne( this: MongooseAdapter, - { collection, locale, req = {} as PayloadRequest, where }, + { collection, locale, req = {} as PayloadRequestWithData, where }, ) { const Model = this.collections[collection] const options: MongooseQueryOptions = { diff --git a/packages/db-mongodb/src/findVersions.ts b/packages/db-mongodb/src/findVersions.ts index 1fc4308d38..510c3edb4b 100644 --- a/packages/db-mongodb/src/findVersions.ts +++ b/packages/db-mongodb/src/findVersions.ts @@ -1,6 +1,6 @@ import type { PaginateOptions } from 'mongoose' import type { FindVersions } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { flattenWhereToOperators } from 'payload/database' @@ -18,7 +18,7 @@ export const findVersions: FindVersions = async function findVersions( locale, page, pagination, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, skip, sort: sortArg, where, diff --git a/packages/db-mongodb/src/migrateFresh.ts b/packages/db-mongodb/src/migrateFresh.ts index 4633e41b9e..c22545cac5 100644 --- a/packages/db-mongodb/src/migrateFresh.ts +++ b/packages/db-mongodb/src/migrateFresh.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { commitTransaction, @@ -50,7 +50,7 @@ export async function migrateFresh( msg: `Found ${migrationFiles.length} migration files.`, }) - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData // Run all migrate up for (const migration of migrationFiles) { diff --git a/packages/db-mongodb/src/queryDrafts.ts b/packages/db-mongodb/src/queryDrafts.ts index a37682694f..62bc6c66af 100644 --- a/packages/db-mongodb/src/queryDrafts.ts +++ b/packages/db-mongodb/src/queryDrafts.ts @@ -1,6 +1,6 @@ import type { PaginateOptions } from 'mongoose' import type { QueryDrafts } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { combineQueries, flattenWhereToOperators } from 'payload/database' @@ -12,7 +12,16 @@ import { withSession } from './withSession.js' export const queryDrafts: QueryDrafts = async function queryDrafts( this: MongooseAdapter, - { collection, limit, locale, page, pagination, req = {} as PayloadRequest, sort: sortArg, where }, + { + collection, + limit, + locale, + page, + pagination, + req = {} as PayloadRequestWithData, + sort: sortArg, + where, + }, ) { const VersionModel = this.versions[collection] const collectionConfig = this.payload.collections[collection].config diff --git a/packages/db-mongodb/src/updateGlobal.ts b/packages/db-mongodb/src/updateGlobal.ts index 150d43d145..48186d299d 100644 --- a/packages/db-mongodb/src/updateGlobal.ts +++ b/packages/db-mongodb/src/updateGlobal.ts @@ -1,5 +1,5 @@ import type { UpdateGlobal } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -8,7 +8,7 @@ import { withSession } from './withSession.js' export const updateGlobal: UpdateGlobal = async function updateGlobal( this: MongooseAdapter, - { slug, data, req = {} as PayloadRequest }, + { slug, data, req = {} as PayloadRequestWithData }, ) { const Model = this.globals const options = { diff --git a/packages/db-mongodb/src/updateGlobalVersion.ts b/packages/db-mongodb/src/updateGlobalVersion.ts index cb63e2e120..ac65188df9 100644 --- a/packages/db-mongodb/src/updateGlobalVersion.ts +++ b/packages/db-mongodb/src/updateGlobalVersion.ts @@ -1,5 +1,5 @@ import type { UpdateGlobalVersionArgs } from 'payload/database' -import type { PayloadRequest, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, TypeWithID } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -11,7 +11,7 @@ export async function updateGlobalVersion( id, global, locale, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, versionData, where, }: UpdateGlobalVersionArgs, diff --git a/packages/db-mongodb/src/updateOne.ts b/packages/db-mongodb/src/updateOne.ts index 9602a22fdd..aacb596b4c 100644 --- a/packages/db-mongodb/src/updateOne.ts +++ b/packages/db-mongodb/src/updateOne.ts @@ -1,5 +1,5 @@ import type { UpdateOne } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -9,7 +9,7 @@ import { withSession } from './withSession.js' export const updateOne: UpdateOne = async function updateOne( this: MongooseAdapter, - { id, collection, data, locale, req = {} as PayloadRequest, where: whereArg }, + { id, collection, data, locale, req = {} as PayloadRequestWithData, where: whereArg }, ) { const where = id ? { id: { equals: id } } : whereArg const Model = this.collections[collection] diff --git a/packages/db-mongodb/src/updateVersion.ts b/packages/db-mongodb/src/updateVersion.ts index 84c7a7ee5e..2120b5f8ee 100644 --- a/packages/db-mongodb/src/updateVersion.ts +++ b/packages/db-mongodb/src/updateVersion.ts @@ -1,5 +1,5 @@ import type { UpdateVersion } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { MongooseAdapter } from './index.js' @@ -7,7 +7,7 @@ import { withSession } from './withSession.js' export const updateVersion: UpdateVersion = async function updateVersion( this: MongooseAdapter, - { id, collection, locale, req = {} as PayloadRequest, versionData, where }, + { id, collection, locale, req = {} as PayloadRequestWithData, versionData, where }, ) { const VersionModel = this.versions[collection] const whereToUse = where || { id: { equals: id } } diff --git a/packages/db-postgres/src/createGlobal.ts b/packages/db-postgres/src/createGlobal.ts index a8f185c80c..23f5280184 100644 --- a/packages/db-postgres/src/createGlobal.ts +++ b/packages/db-postgres/src/createGlobal.ts @@ -1,5 +1,5 @@ import type { CreateGlobalArgs } from 'payload/database' -import type { PayloadRequest, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, TypeWithID } from 'payload/types' import toSnakeCase from 'to-snake-case' @@ -9,7 +9,7 @@ import { upsertRow } from './upsertRow/index.js' export async function createGlobal( this: PostgresAdapter, - { slug, data, req = {} as PayloadRequest }: CreateGlobalArgs, + { slug, data, req = {} as PayloadRequestWithData }: CreateGlobalArgs, ): Promise { const db = this.sessions[req.transactionID]?.db || this.drizzle const globalConfig = this.payload.globals.config.find((config) => config.slug === slug) diff --git a/packages/db-postgres/src/createGlobalVersion.ts b/packages/db-postgres/src/createGlobalVersion.ts index c3e2ad9705..ce085d1671 100644 --- a/packages/db-postgres/src/createGlobalVersion.ts +++ b/packages/db-postgres/src/createGlobalVersion.ts @@ -1,5 +1,5 @@ import type { TypeWithVersion } from 'payload/database' -import type { PayloadRequest, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, TypeWithID } from 'payload/types' import { sql } from 'drizzle-orm' import { type CreateGlobalVersionArgs } from 'payload/database' @@ -12,7 +12,12 @@ import { upsertRow } from './upsertRow/index.js' export async function createGlobalVersion( this: PostgresAdapter, - { autosave, globalSlug, req = {} as PayloadRequest, versionData }: CreateGlobalVersionArgs, + { + autosave, + globalSlug, + req = {} as PayloadRequestWithData, + versionData, + }: CreateGlobalVersionArgs, ) { const db = this.sessions[req.transactionID]?.db || this.drizzle const global = this.payload.globals.config.find(({ slug }) => slug === globalSlug) diff --git a/packages/db-postgres/src/createVersion.ts b/packages/db-postgres/src/createVersion.ts index cbb3483e2d..ea7cb8310f 100644 --- a/packages/db-postgres/src/createVersion.ts +++ b/packages/db-postgres/src/createVersion.ts @@ -1,5 +1,5 @@ import type { CreateVersionArgs, TypeWithVersion } from 'payload/database' -import type { PayloadRequest, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, TypeWithID } from 'payload/types' import { sql } from 'drizzle-orm' import { buildVersionCollectionFields } from 'payload/versions' @@ -15,7 +15,7 @@ export async function createVersion( autosave, collectionSlug, parent, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, versionData, }: CreateVersionArgs, ) { diff --git a/packages/db-postgres/src/deleteMany.ts b/packages/db-postgres/src/deleteMany.ts index a0e326169d..d0ad26f4c8 100644 --- a/packages/db-postgres/src/deleteMany.ts +++ b/packages/db-postgres/src/deleteMany.ts @@ -1,5 +1,5 @@ import type { DeleteMany } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { inArray } from 'drizzle-orm' import toSnakeCase from 'to-snake-case' @@ -10,7 +10,7 @@ import { findMany } from './find/findMany.js' export const deleteMany: DeleteMany = async function deleteMany( this: PostgresAdapter, - { collection, req = {} as PayloadRequest, where }, + { collection, req = {} as PayloadRequestWithData, where }, ) { const db = this.sessions[req.transactionID]?.db || this.drizzle const collectionConfig = this.payload.collections[collection].config diff --git a/packages/db-postgres/src/deleteOne.ts b/packages/db-postgres/src/deleteOne.ts index 7f99424ee0..b43aec7074 100644 --- a/packages/db-postgres/src/deleteOne.ts +++ b/packages/db-postgres/src/deleteOne.ts @@ -1,5 +1,5 @@ import type { DeleteOne } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { eq } from 'drizzle-orm' import toSnakeCase from 'to-snake-case' @@ -13,7 +13,7 @@ import { transform } from './transform/read/index.js' export const deleteOne: DeleteOne = async function deleteOne( this: PostgresAdapter, - { collection: collectionSlug, req = {} as PayloadRequest, where: whereArg }, + { collection: collectionSlug, req = {} as PayloadRequestWithData, where: whereArg }, ) { const db = this.sessions[req.transactionID]?.db || this.drizzle const collection = this.payload.collections[collectionSlug].config diff --git a/packages/db-postgres/src/deleteVersions.ts b/packages/db-postgres/src/deleteVersions.ts index 5f790daf1e..4d84bdd546 100644 --- a/packages/db-postgres/src/deleteVersions.ts +++ b/packages/db-postgres/src/deleteVersions.ts @@ -1,5 +1,5 @@ import type { DeleteVersions } from 'payload/database' -import type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedCollectionConfig } from 'payload/types' import { inArray } from 'drizzle-orm' import { buildVersionCollectionFields } from 'payload/versions' @@ -11,7 +11,7 @@ import { findMany } from './find/findMany.js' export const deleteVersions: DeleteVersions = async function deleteVersion( this: PostgresAdapter, - { collection, locale, req = {} as PayloadRequest, where: where }, + { collection, locale, req = {} as PayloadRequestWithData, where: where }, ) { const db = this.sessions[req.transactionID]?.db || this.drizzle const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config diff --git a/packages/db-postgres/src/find.ts b/packages/db-postgres/src/find.ts index fa339989c2..39b3c7cfaf 100644 --- a/packages/db-postgres/src/find.ts +++ b/packages/db-postgres/src/find.ts @@ -1,5 +1,5 @@ import type { Find } from 'payload/database' -import type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedCollectionConfig } from 'payload/types' import toSnakeCase from 'to-snake-case' @@ -15,7 +15,7 @@ export const find: Find = async function find( locale, page = 1, pagination, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, sort: sortArg, where, }, diff --git a/packages/db-postgres/src/find/findMany.ts b/packages/db-postgres/src/find/findMany.ts index 0eaa79bd79..41ce010ff8 100644 --- a/packages/db-postgres/src/find/findMany.ts +++ b/packages/db-postgres/src/find/findMany.ts @@ -1,5 +1,5 @@ import type { FindArgs } from 'payload/database' -import type { Field, PayloadRequest, TypeWithID } from 'payload/types' +import type { Field, PayloadRequestWithData, TypeWithID } from 'payload/types' import { inArray, sql } from 'drizzle-orm' @@ -25,7 +25,7 @@ export const findMany = async function find({ locale, page = 1, pagination, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, skip, sort, tableName, diff --git a/packages/db-postgres/src/findGlobalVersions.ts b/packages/db-postgres/src/findGlobalVersions.ts index 0ee21b28cc..3c2ab911f1 100644 --- a/packages/db-postgres/src/findGlobalVersions.ts +++ b/packages/db-postgres/src/findGlobalVersions.ts @@ -1,5 +1,5 @@ import type { FindGlobalVersions } from 'payload/database' -import type { PayloadRequest, SanitizedGlobalConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedGlobalConfig } from 'payload/types' import { buildVersionGlobalFields } from 'payload/versions' import toSnakeCase from 'to-snake-case' @@ -16,7 +16,7 @@ export const findGlobalVersions: FindGlobalVersions = async function findGlobalV locale, page, pagination, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, skip, sort: sortArg, where, diff --git a/packages/db-postgres/src/findOne.ts b/packages/db-postgres/src/findOne.ts index 404e79e56a..76a467652e 100644 --- a/packages/db-postgres/src/findOne.ts +++ b/packages/db-postgres/src/findOne.ts @@ -1,5 +1,5 @@ import type { FindOneArgs } from 'payload/database' -import type { PayloadRequest, SanitizedCollectionConfig, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, SanitizedCollectionConfig, TypeWithID } from 'payload/types' import toSnakeCase from 'to-snake-case' @@ -9,7 +9,7 @@ import { findMany } from './find/findMany.js' export async function findOne( this: PostgresAdapter, - { collection, locale, req = {} as PayloadRequest, where }: FindOneArgs, + { collection, locale, req = {} as PayloadRequestWithData, where }: FindOneArgs, ): Promise { const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config diff --git a/packages/db-postgres/src/findVersions.ts b/packages/db-postgres/src/findVersions.ts index 33f6f5c0b2..a6523e9e0d 100644 --- a/packages/db-postgres/src/findVersions.ts +++ b/packages/db-postgres/src/findVersions.ts @@ -1,5 +1,5 @@ import type { FindVersions } from 'payload/database' -import type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedCollectionConfig } from 'payload/types' import { buildVersionCollectionFields } from 'payload/versions' import toSnakeCase from 'to-snake-case' @@ -16,7 +16,7 @@ export const findVersions: FindVersions = async function findVersions( locale, page, pagination, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, skip, sort: sortArg, where, diff --git a/packages/db-postgres/src/migrate.ts b/packages/db-postgres/src/migrate.ts index bb86cb4712..63ef9af8c4 100644 --- a/packages/db-postgres/src/migrate.ts +++ b/packages/db-postgres/src/migrate.ts @@ -1,7 +1,7 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ import type { Payload } from 'payload' import type { Migration } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { createRequire } from 'module' import { @@ -88,7 +88,7 @@ async function runMigrationFile(payload: Payload, migration: Migration, batch: n const { generateDrizzleJson } = require('drizzle-kit/payload') const start = Date.now() - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData payload.logger.info({ msg: `Migrating: ${migration.name}` }) diff --git a/packages/db-postgres/src/migrateDown.ts b/packages/db-postgres/src/migrateDown.ts index c9c94bc586..5d3ef1648e 100644 --- a/packages/db-postgres/src/migrateDown.ts +++ b/packages/db-postgres/src/migrateDown.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { commitTransaction, @@ -40,7 +40,7 @@ export async function migrateDown(this: PostgresAdapter): Promise { } const start = Date.now() - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData try { payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` }) diff --git a/packages/db-postgres/src/migrateFresh.ts b/packages/db-postgres/src/migrateFresh.ts index 64beb58f56..361417d7bf 100644 --- a/packages/db-postgres/src/migrateFresh.ts +++ b/packages/db-postgres/src/migrateFresh.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { sql } from 'drizzle-orm' import { @@ -56,7 +56,7 @@ export async function migrateFresh( msg: `Found ${migrationFiles.length} migration files.`, }) - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData // Run all migrate up for (const migration of migrationFiles) { payload.logger.info({ msg: `Migrating: ${migration.name}` }) diff --git a/packages/db-postgres/src/migrateRefresh.ts b/packages/db-postgres/src/migrateRefresh.ts index d2b66cc9d8..e06ab909b4 100644 --- a/packages/db-postgres/src/migrateRefresh.ts +++ b/packages/db-postgres/src/migrateRefresh.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { commitTransaction, @@ -34,7 +34,7 @@ export async function migrateRefresh(this: PostgresAdapter) { msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`, }) - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData // Reverse order of migrations to rollback existingMigrations.reverse() diff --git a/packages/db-postgres/src/migrateReset.ts b/packages/db-postgres/src/migrateReset.ts index 1ba473aba3..722f3e37ee 100644 --- a/packages/db-postgres/src/migrateReset.ts +++ b/packages/db-postgres/src/migrateReset.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { commitTransaction, @@ -27,7 +27,7 @@ export async function migrateReset(this: PostgresAdapter): Promise { return } - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData // Rollback all migrations in order for (const migration of existingMigrations) { diff --git a/packages/db-postgres/src/queryDrafts.ts b/packages/db-postgres/src/queryDrafts.ts index 103285b085..581b35b71d 100644 --- a/packages/db-postgres/src/queryDrafts.ts +++ b/packages/db-postgres/src/queryDrafts.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest, SanitizedCollectionConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedCollectionConfig } from 'payload/types' import { type QueryDrafts, combineQueries } from 'payload/database' import { buildVersionCollectionFields } from 'payload/versions' @@ -10,7 +10,16 @@ import { findMany } from './find/findMany.js' export const queryDrafts: QueryDrafts = async function queryDrafts( this: PostgresAdapter, - { collection, limit, locale, page = 1, pagination, req = {} as PayloadRequest, sort, where }, + { + collection, + limit, + locale, + page = 1, + pagination, + req = {} as PayloadRequestWithData, + sort, + where, + }, ) { const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config const tableName = this.tableNameMap.get( diff --git a/packages/db-postgres/src/types.ts b/packages/db-postgres/src/types.ts index 7e1156c910..c69a8a7101 100644 --- a/packages/db-postgres/src/types.ts +++ b/packages/db-postgres/src/types.ts @@ -17,7 +17,7 @@ import type { import type { PgTableFn } from 'drizzle-orm/pg-core/table' import type { Payload } from 'payload' import type { BaseDatabaseAdapter } from 'payload/database' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Pool, PoolConfig } from 'pg' export type DrizzleDB = NodePgDatabase> @@ -95,8 +95,8 @@ export type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar' export type PostgresAdapterResult = (args: { payload: Payload }) => PostgresAdapter -export type MigrateUpArgs = { payload: Payload; req?: Partial } -export type MigrateDownArgs = { payload: Payload; req?: Partial } +export type MigrateUpArgs = { payload: Payload; req?: Partial } +export type MigrateDownArgs = { payload: Payload; req?: Partial } declare module 'payload' { export interface DatabaseAdapter diff --git a/packages/db-postgres/src/updateGlobal.ts b/packages/db-postgres/src/updateGlobal.ts index a9e3cfd2f2..84713b65a5 100644 --- a/packages/db-postgres/src/updateGlobal.ts +++ b/packages/db-postgres/src/updateGlobal.ts @@ -1,5 +1,5 @@ import type { UpdateGlobalArgs } from 'payload/database' -import type { PayloadRequest, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, TypeWithID } from 'payload/types' import toSnakeCase from 'to-snake-case' @@ -9,7 +9,7 @@ import { upsertRow } from './upsertRow/index.js' export async function updateGlobal( this: PostgresAdapter, - { slug, data, req = {} as PayloadRequest }: UpdateGlobalArgs, + { slug, data, req = {} as PayloadRequestWithData }: UpdateGlobalArgs, ): Promise { const db = this.sessions[req.transactionID]?.db || this.drizzle const globalConfig = this.payload.globals.config.find((config) => config.slug === slug) diff --git a/packages/db-postgres/src/updateGlobalVersion.ts b/packages/db-postgres/src/updateGlobalVersion.ts index 7fc6becc06..313c352a27 100644 --- a/packages/db-postgres/src/updateGlobalVersion.ts +++ b/packages/db-postgres/src/updateGlobalVersion.ts @@ -1,5 +1,5 @@ import type { TypeWithVersion, UpdateGlobalVersionArgs } from 'payload/database' -import type { PayloadRequest, SanitizedGlobalConfig, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, SanitizedGlobalConfig, TypeWithID } from 'payload/types' import { buildVersionGlobalFields } from 'payload/versions' import toSnakeCase from 'to-snake-case' @@ -15,7 +15,7 @@ export async function updateGlobalVersion( id, global, locale, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, versionData, where: whereArg, }: UpdateGlobalVersionArgs, diff --git a/packages/db-postgres/src/updateVersion.ts b/packages/db-postgres/src/updateVersion.ts index 91694b17b1..e87177e18d 100644 --- a/packages/db-postgres/src/updateVersion.ts +++ b/packages/db-postgres/src/updateVersion.ts @@ -1,5 +1,5 @@ import type { TypeWithVersion, UpdateVersionArgs } from 'payload/database' -import type { PayloadRequest, SanitizedCollectionConfig, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, SanitizedCollectionConfig, TypeWithID } from 'payload/types' import { buildVersionCollectionFields } from 'payload/versions' import toSnakeCase from 'to-snake-case' @@ -15,7 +15,7 @@ export async function updateVersion( id, collection, locale, - req = {} as PayloadRequest, + req = {} as PayloadRequestWithData, versionData, where: whereArg, }: UpdateVersionArgs, diff --git a/packages/db-postgres/src/upsertRow/types.ts b/packages/db-postgres/src/upsertRow/types.ts index eec4a4586a..e2952d94a9 100644 --- a/packages/db-postgres/src/upsertRow/types.ts +++ b/packages/db-postgres/src/upsertRow/types.ts @@ -1,5 +1,5 @@ import type { SQL } from 'drizzle-orm' -import type { Field, PayloadRequest } from 'payload/types' +import type { Field, PayloadRequestWithData } from 'payload/types' import type { DrizzleDB, GenericColumn, PostgresAdapter } from '../types.js' @@ -9,7 +9,7 @@ type BaseArgs = { db: DrizzleDB fields: Field[] path?: string - req: PayloadRequest + req: PayloadRequestWithData tableName: string } diff --git a/packages/graphql/src/resolvers/collections/count.ts b/packages/graphql/src/resolvers/collections/count.ts index d101166332..4771b348f0 100644 --- a/packages/graphql/src/resolvers/collections/count.ts +++ b/packages/graphql/src/resolvers/collections/count.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest, Where } from 'payload/types' +import type { PayloadRequestWithData, Where } from 'payload/types' import type { Collection } from 'payload/types' import { countOperation } from 'payload/operations' @@ -14,7 +14,7 @@ export type Resolver = ( where?: Where }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, // eslint-disable-next-line @typescript-eslint/no-explicit-any ) => Promise<{ totalDocs: number }> diff --git a/packages/graphql/src/resolvers/collections/create.ts b/packages/graphql/src/resolvers/collections/create.ts index 1fd319dd1c..6e9a6f7da3 100644 --- a/packages/graphql/src/resolvers/collections/create.ts +++ b/packages/graphql/src/resolvers/collections/create.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection } from 'payload/types' import type { MarkOptional } from 'ts-essentials' @@ -19,7 +19,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/collections/delete.ts b/packages/graphql/src/resolvers/collections/delete.ts index 1004ac6daa..6b3d095898 100644 --- a/packages/graphql/src/resolvers/collections/delete.ts +++ b/packages/graphql/src/resolvers/collections/delete.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection } from 'payload/types' import { deleteByIDOperation } from 'payload/operations' @@ -14,7 +14,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/collections/docAccess.ts b/packages/graphql/src/resolvers/collections/docAccess.ts index cd37f72dad..f4e6f41355 100644 --- a/packages/graphql/src/resolvers/collections/docAccess.ts +++ b/packages/graphql/src/resolvers/collections/docAccess.ts @@ -1,5 +1,5 @@ import type { CollectionPermission, GlobalPermission } from 'payload/auth' -import type { Collection, PayloadRequest } from 'payload/types' +import type { Collection, PayloadRequestWithData } from 'payload/types' import { docAccessOperation } from 'payload/operations' import { isolateObjectProperty } from 'payload/utilities' @@ -12,7 +12,7 @@ export type Resolver = ( id: number | string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/collections/duplicate.ts b/packages/graphql/src/resolvers/collections/duplicate.ts index 8431beadaa..6dc59b56c5 100644 --- a/packages/graphql/src/resolvers/collections/duplicate.ts +++ b/packages/graphql/src/resolvers/collections/duplicate.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection } from 'payload/types' import { duplicateOperation } from 'payload/operations' @@ -16,7 +16,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/collections/find.ts b/packages/graphql/src/resolvers/collections/find.ts index a7edb1cd1e..1e3e8062fd 100644 --- a/packages/graphql/src/resolvers/collections/find.ts +++ b/packages/graphql/src/resolvers/collections/find.ts @@ -1,5 +1,5 @@ import type { PaginatedDocs } from 'payload/database' -import type { PayloadRequest, Where } from 'payload/types' +import type { PayloadRequestWithData, Where } from 'payload/types' import type { Collection } from 'payload/types' import { findOperation } from 'payload/operations' @@ -20,7 +20,7 @@ export type Resolver = ( where?: Where }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, // eslint-disable-next-line @typescript-eslint/no-explicit-any ) => Promise> diff --git a/packages/graphql/src/resolvers/collections/findByID.ts b/packages/graphql/src/resolvers/collections/findByID.ts index 8171e52a65..6dd328d849 100644 --- a/packages/graphql/src/resolvers/collections/findByID.ts +++ b/packages/graphql/src/resolvers/collections/findByID.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection } from 'payload/types' import { findByIDOperation } from 'payload/operations' @@ -16,7 +16,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/collections/findVersionByID.ts b/packages/graphql/src/resolvers/collections/findVersionByID.ts index 75cb6349c4..a4c947096e 100644 --- a/packages/graphql/src/resolvers/collections/findVersionByID.ts +++ b/packages/graphql/src/resolvers/collections/findVersionByID.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection, TypeWithID } from 'payload/types' import type { TypeWithVersion } from 'payload/versions' @@ -16,7 +16,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise> diff --git a/packages/graphql/src/resolvers/collections/findVersions.ts b/packages/graphql/src/resolvers/collections/findVersions.ts index a87861b5f2..a1ac2e4303 100644 --- a/packages/graphql/src/resolvers/collections/findVersions.ts +++ b/packages/graphql/src/resolvers/collections/findVersions.ts @@ -1,5 +1,5 @@ import type { PaginatedDocs } from 'payload/database' -import type { PayloadRequest, Where } from 'payload/types' +import type { PayloadRequestWithData, Where } from 'payload/types' import type { Collection } from 'payload/types' import { findVersionsOperation } from 'payload/operations' @@ -18,7 +18,7 @@ export type Resolver = ( where: Where }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise> diff --git a/packages/graphql/src/resolvers/collections/restoreVersion.ts b/packages/graphql/src/resolvers/collections/restoreVersion.ts index 0aa5ef94a0..c497eacbe4 100644 --- a/packages/graphql/src/resolvers/collections/restoreVersion.ts +++ b/packages/graphql/src/resolvers/collections/restoreVersion.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection } from 'payload/types' import { restoreVersionOperation } from 'payload/operations' @@ -12,7 +12,7 @@ export type Resolver = ( id: number | string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/collections/update.ts b/packages/graphql/src/resolvers/collections/update.ts index 5c1fab7bcf..30b37ec3aa 100644 --- a/packages/graphql/src/resolvers/collections/update.ts +++ b/packages/graphql/src/resolvers/collections/update.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection } from 'payload/types' import { updateByIDOperation } from 'payload/operations' @@ -17,7 +17,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/globals/docAccess.ts b/packages/graphql/src/resolvers/globals/docAccess.ts index 8093d9d95a..1a36d15050 100644 --- a/packages/graphql/src/resolvers/globals/docAccess.ts +++ b/packages/graphql/src/resolvers/globals/docAccess.ts @@ -1,5 +1,5 @@ import type { CollectionPermission, GlobalPermission } from 'payload/auth' -import type { PayloadRequest, SanitizedGlobalConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedGlobalConfig } from 'payload/types' import { docAccessOperationGlobal } from 'payload/operations' import { isolateObjectProperty } from 'payload/utilities' @@ -9,7 +9,7 @@ import type { Context } from '../types.js' export type Resolver = ( _: unknown, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/globals/findVersionByID.ts b/packages/graphql/src/resolvers/globals/findVersionByID.ts index a203e5e677..be6a072e14 100644 --- a/packages/graphql/src/resolvers/globals/findVersionByID.ts +++ b/packages/graphql/src/resolvers/globals/findVersionByID.ts @@ -1,4 +1,4 @@ -import type { Document, PayloadRequest, SanitizedGlobalConfig } from 'payload/types' +import type { Document, PayloadRequestWithData, SanitizedGlobalConfig } from 'payload/types' import { findVersionByIDOperationGlobal } from 'payload/operations' import { isolateObjectProperty } from 'payload/utilities' @@ -14,7 +14,7 @@ export type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/globals/findVersions.ts b/packages/graphql/src/resolvers/globals/findVersions.ts index 389ea34ff1..38ef27d9be 100644 --- a/packages/graphql/src/resolvers/globals/findVersions.ts +++ b/packages/graphql/src/resolvers/globals/findVersions.ts @@ -1,4 +1,4 @@ -import type { Document, PayloadRequest, SanitizedGlobalConfig, Where } from 'payload/types' +import type { Document, PayloadRequestWithData, SanitizedGlobalConfig, Where } from 'payload/types' import { findVersionsOperationGlobal } from 'payload/operations' import { isolateObjectProperty } from 'payload/utilities' @@ -16,7 +16,7 @@ export type Resolver = ( where: Where }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/globals/restoreVersion.ts b/packages/graphql/src/resolvers/globals/restoreVersion.ts index 03fa6fbe03..f8eb61dcee 100644 --- a/packages/graphql/src/resolvers/globals/restoreVersion.ts +++ b/packages/graphql/src/resolvers/globals/restoreVersion.ts @@ -1,4 +1,4 @@ -import type { Document, PayloadRequest, SanitizedGlobalConfig } from 'payload/types' +import type { Document, PayloadRequestWithData, SanitizedGlobalConfig } from 'payload/types' import { restoreVersionOperationGlobal } from 'payload/operations' import { isolateObjectProperty } from 'payload/utilities' @@ -11,7 +11,7 @@ type Resolver = ( id: number | string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise export default function restoreVersionResolver(globalConfig: SanitizedGlobalConfig): Resolver { diff --git a/packages/graphql/src/resolvers/globals/update.ts b/packages/graphql/src/resolvers/globals/update.ts index 1c1ed66882..3b574af920 100644 --- a/packages/graphql/src/resolvers/globals/update.ts +++ b/packages/graphql/src/resolvers/globals/update.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from 'payload' -import type { PayloadRequest, SanitizedGlobalConfig } from 'payload/types' +import type { PayloadRequestWithData, SanitizedGlobalConfig } from 'payload/types' import type { DeepPartial } from 'ts-essentials' import { updateOperationGlobal } from 'payload/operations' @@ -16,7 +16,7 @@ type Resolver = ( locale?: string }, context: { - req: PayloadRequest + req: PayloadRequestWithData }, ) => Promise diff --git a/packages/graphql/src/resolvers/types.ts b/packages/graphql/src/resolvers/types.ts index 353067796c..53d0fcabea 100644 --- a/packages/graphql/src/resolvers/types.ts +++ b/packages/graphql/src/resolvers/types.ts @@ -1,8 +1,8 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' export type Context = { headers: { [key: string]: string } - req: PayloadRequest + req: PayloadRequestWithData } diff --git a/packages/graphql/src/utilities/wrapCustomResolver.ts b/packages/graphql/src/utilities/wrapCustomResolver.ts index a82fd8e3f2..4f02ba4a8b 100644 --- a/packages/graphql/src/utilities/wrapCustomResolver.ts +++ b/packages/graphql/src/utilities/wrapCustomResolver.ts @@ -1,10 +1,10 @@ import type { ObjMap } from 'graphql/jsutils/ObjMap.js' import type { GraphQLFieldConfig, GraphQLFieldResolver } from 'graphql/type/definition.js' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { isolateObjectProperty } from 'payload/utilities' -type PayloadContext = { req: PayloadRequest } +type PayloadContext = { req: PayloadRequestWithData } function wrapCustomResolver( resolver: GraphQLFieldResolver, diff --git a/packages/next/src/exports/utilities.ts b/packages/next/src/exports/utilities.ts index 502ddf5399..45ba47b11d 100644 --- a/packages/next/src/exports/utilities.ts +++ b/packages/next/src/exports/utilities.ts @@ -1,7 +1,7 @@ export { addDataAndFileToRequest } from '../utilities/addDataAndFileToRequest.js' -export { addLocalesToRequest } from '../utilities/addLocalesToRequest.js' +export { addLocalesToRequestFromData, sanitizeLocales } from '../utilities/addLocalesToRequest.js' export { traverseFields } from '../utilities/buildFieldSchemaMap/traverseFields.js' -export { createPayloadRequest } from '../utilities/createPayloadRequest.js' +export { createPayloadRequest as createBasePayloadRequest } from '../utilities/createPayloadRequest.js' export { getNextRequestI18n } from '../utilities/getNextRequestI18n.js' export { getPayloadHMR, reload } from '../utilities/getPayloadHMR.js' export { headersWithCors } from '../utilities/headersWithCors.js' diff --git a/packages/next/src/routes/graphql/handler.ts b/packages/next/src/routes/graphql/handler.ts index 0aedf8e3a2..1fc94fd3f8 100644 --- a/packages/next/src/routes/graphql/handler.ts +++ b/packages/next/src/routes/graphql/handler.ts @@ -5,7 +5,8 @@ import { configToSchema } from '@payloadcms/graphql' import { createHandler } from 'graphql-http/lib/use/fetch' import httpStatus from 'http-status' -import { addLocalesToRequest } from '../../utilities/addLocalesToRequest.js' +import { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest.js' +import { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js' import { createPayloadRequest } from '../../utilities/createPayloadRequest.js' import { headersWithCors } from '../../utilities/headersWithCors.js' @@ -83,23 +84,24 @@ export const getGraphql = async (config: Promise | SanitizedCon export const POST = (config: Promise | SanitizedConfig) => async (request: Request) => { const originalRequest = request.clone() - const req = await createPayloadRequest({ + const basePayloadRequest = await createPayloadRequest({ config, request, }) - addLocalesToRequest({ request: req }) + const reqWithData = await addDataAndFileToRequest({ request: basePayloadRequest }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) const { schema, validationRules } = await getGraphql(config) - const { payload } = req + const { payload } = payloadRequest const afterErrorHook = typeof payload.config.hooks.afterError === 'function' ? payload.config.hooks.afterError : null const headers = {} const apiResponse = await createHandler({ - context: { headers, req }, + context: { headers, req: payloadRequest }, onOperation: async (request, args, result) => { const response = typeof payload.extensions === 'function' @@ -126,7 +128,7 @@ export const POST = const resHeaders = headersWithCors({ headers: new Headers(apiResponse.headers), - req, + req: payloadRequest, }) for (const key in headers) { diff --git a/packages/next/src/routes/graphql/playground.ts b/packages/next/src/routes/graphql/playground.ts index 89b88af551..fd67cf14b0 100644 --- a/packages/next/src/routes/graphql/playground.ts +++ b/packages/next/src/routes/graphql/playground.ts @@ -2,7 +2,6 @@ import type { SanitizedConfig } from 'payload/types' import { renderPlaygroundPage } from 'graphql-playground-html' -import { addLocalesToRequest } from '../../utilities/addLocalesToRequest.js' import { createPayloadRequest } from '../../utilities/createPayloadRequest.js' export const GET = (config: Promise) => async (request: Request) => { @@ -11,8 +10,6 @@ export const GET = (config: Promise) => async (request: Request request, }) - addLocalesToRequest({ request: req }) - if ( (!req.payload.config.graphQL.disable && !req.payload.config.graphQL.disablePlaygroundInProduction && diff --git a/packages/next/src/routes/rest/buildFormState.ts b/packages/next/src/routes/rest/buildFormState.ts index d43414b1a2..fa026e04f4 100644 --- a/packages/next/src/routes/rest/buildFormState.ts +++ b/packages/next/src/routes/rest/buildFormState.ts @@ -1,5 +1,5 @@ import type { BuildFormStateArgs } from '@payloadcms/ui/forms/buildStateFromSchema' -import type { DocumentPreferences, Field, PayloadRequest, TypeWithID } from 'payload/types' +import type { DocumentPreferences, Field, PayloadRequestWithData, TypeWithID } from 'payload/types' import { buildStateFromSchema } from '@payloadcms/ui/forms/buildStateFromSchema' import { reduceFieldsToValues } from '@payloadcms/ui/utilities/reduceFieldsToValues' @@ -17,7 +17,7 @@ if (!cached) { cached = global._payload_fieldSchemaMap = null } -export const getFieldSchemaMap = (req: PayloadRequest): FieldSchemaMap => { +export const getFieldSchemaMap = (req: PayloadRequestWithData): FieldSchemaMap => { if (cached && process.env.NODE_ENV !== 'development') { return cached } @@ -27,7 +27,7 @@ export const getFieldSchemaMap = (req: PayloadRequest): FieldSchemaMap => { return cached } -export const buildFormState = async ({ req }: { req: PayloadRequest }) => { +export const buildFormState = async ({ req }: { req: PayloadRequestWithData }) => { const headers = headersWithCors({ headers: new Headers(), req, diff --git a/packages/next/src/routes/rest/files/checkFileAccess.ts b/packages/next/src/routes/rest/files/checkFileAccess.ts index 8bb8aca233..8d67ac7541 100644 --- a/packages/next/src/routes/rest/files/checkFileAccess.ts +++ b/packages/next/src/routes/rest/files/checkFileAccess.ts @@ -1,4 +1,4 @@ -import type { Collection, PayloadRequest, Where } from 'payload/types' +import type { Collection, PayloadRequestWithData, Where } from 'payload/types' import { executeAccess } from 'payload/auth' import { Forbidden } from 'payload/errors' @@ -12,7 +12,7 @@ export async function checkFileAccess({ }: { collection: Collection filename: string - req: PayloadRequest + req: PayloadRequestWithData }) { const { config } = collection const disableEndpoints = endpointsAreDisabled({ endpoints: config.endpoints, request: req }) diff --git a/packages/next/src/routes/rest/files/getFile.ts b/packages/next/src/routes/rest/files/getFile.ts index 3e3b0085e1..4eda3dca50 100644 --- a/packages/next/src/routes/rest/files/getFile.ts +++ b/packages/next/src/routes/rest/files/getFile.ts @@ -1,4 +1,4 @@ -import type { Collection, PayloadRequest } from 'payload/types' +import type { Collection, PayloadRequestWithData } from 'payload/types' import getFileType from 'file-type' import fsPromises from 'fs/promises' @@ -16,7 +16,7 @@ import { getFileTypeFallback } from './getFileTypeFallback.js' type Args = { collection: Collection filename: string - req: PayloadRequest + req: PayloadRequestWithData } export const getFile = async ({ collection, filename, req }: Args): Promise => { try { diff --git a/packages/next/src/routes/rest/index.ts b/packages/next/src/routes/rest/index.ts index 99f12e1bce..89a4dd0aa4 100644 --- a/packages/next/src/routes/rest/index.ts +++ b/packages/next/src/routes/rest/index.ts @@ -1,5 +1,11 @@ import type { Endpoint } from 'payload/config' -import type { Collection, GlobalConfig, PayloadRequest, SanitizedConfig } from 'payload/types' +import type { + Collection, + GlobalConfig, + PayloadRequest, + PayloadRequestData, + SanitizedConfig, +} from 'payload/types' import httpStatus from 'http-status' import { match } from 'path-to-regexp' @@ -12,7 +18,7 @@ import type { } from './types.js' import { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest.js' -import { addLocalesToRequest } from '../../utilities/addLocalesToRequest.js' +import { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js' import { createPayloadRequest } from '../../utilities/createPayloadRequest.js' import { headersWithCors } from '../../utilities/headersWithCors.js' import { access } from './auth/access.js' @@ -198,7 +204,7 @@ export const GET = (config: Promise | SanitizedConfig) => async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => { const [slug1, slug2, slug3, slug4] = slug - let req: PayloadRequest + let req: PayloadRequest | (PayloadRequest & PayloadRequestData) let res: Response let collection: Collection @@ -235,49 +241,57 @@ export const GET = if (customEndpointResponse) { return customEndpointResponse } else { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - } + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) - switch (slug.length) { - case 1: - // /:collection - res = await endpoints.collection.GET.find({ collection, req }) - break - case 2: - if (slug2 in endpoints.collection.GET) { - // /:collection/init - // /:collection/me - // /:collection/versions - // /:collection/count - res = await (endpoints.collection.GET[slug2] as CollectionRouteHandler)({ - collection, - req, - }) - } else { - // /:collection/:id - res = await endpoints.collection.GET.findByID({ id: slug2, collection, req }) - } - break - case 3: - if (slug2 === 'file') { - // /:collection/file/:filename - res = await endpoints.collection.GET.getFile({ collection, filename: slug3, req }) - } else if (slug3 in endpoints.collection.GET) { - // /:collection/:id/preview - res = await (endpoints.collection.GET[slug3] as CollectionRouteHandlerWithID)({ - id: slug2, - collection, - req, - }) - } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) { - // /:collection/access/:id - // /:collection/versions/:id - res = await ( - endpoints.collection.GET[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID - )({ id: slug3, collection, req }) - } - break + switch (slug.length) { + case 1: + // /:collection + res = await endpoints.collection.GET.find({ collection, req: payloadRequest }) + break + case 2: + if (slug2 in endpoints.collection.GET) { + // /:collection/init + // /:collection/me + // /:collection/versions + // /:collection/count + res = await (endpoints.collection.GET[slug2] as CollectionRouteHandler)({ + collection, + req: payloadRequest, + }) + } else { + // /:collection/:id + res = await endpoints.collection.GET.findByID({ + id: slug2, + collection, + req: payloadRequest, + }) + } + break + case 3: + if (slug2 === 'file') { + // /:collection/file/:filename + res = await endpoints.collection.GET.getFile({ + collection, + filename: slug3, + req: payloadRequest, + }) + } else if (slug3 in endpoints.collection.GET) { + // /:collection/:id/preview + res = await (endpoints.collection.GET[slug3] as CollectionRouteHandlerWithID)({ + id: slug2, + collection, + req: payloadRequest, + }) + } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) { + // /:collection/access/:id + // /:collection/versions/:id + res = await ( + endpoints.collection.GET[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID + )({ id: slug3, collection, req: payloadRequest }) + } + break + } } } else if (slug1 === 'globals') { const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2) @@ -298,49 +312,49 @@ export const GET = if (customEndpointResponse) { return customEndpointResponse } else { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - } + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) - switch (slug.length) { - case 2: - // /globals/:slug - res = await endpoints.global.GET.findOne({ globalConfig, req }) - break - case 3: - if (slug3 in endpoints.global.GET) { - // /globals/:slug/preview - res = await (endpoints.global.GET[slug3] as GlobalRouteHandler)({ - globalConfig, - req, - }) - } else if (`doc-${slug3}` in endpoints.global.GET) { - // /globals/:slug/access - // /globals/:slug/versions - // /globals/:slug/preview - res = await (endpoints.global.GET?.[`doc-${slug3}`] as GlobalRouteHandler)({ - globalConfig, - req, - }) - } - break - case 4: - if (`doc-${slug3}-by-id` in endpoints.global.GET) { - // /globals/:slug/versions/:id - res = await ( - endpoints.global.GET?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID - )({ - id: slug4, - globalConfig, - req, - }) - } - break + switch (slug.length) { + case 2: + // /globals/:slug + res = await endpoints.global.GET.findOne({ globalConfig, req: payloadRequest }) + break + case 3: + if (slug3 in endpoints.global.GET) { + // /globals/:slug/preview + res = await (endpoints.global.GET[slug3] as GlobalRouteHandler)({ + globalConfig, + req: payloadRequest, + }) + } else if (`doc-${slug3}` in endpoints.global.GET) { + // /globals/:slug/access + // /globals/:slug/versions + // /globals/:slug/preview + res = await (endpoints.global.GET?.[`doc-${slug3}`] as GlobalRouteHandler)({ + globalConfig, + req: payloadRequest, + }) + } + break + case 4: + if (`doc-${slug3}-by-id` in endpoints.global.GET) { + // /globals/:slug/versions/:id + res = await ( + endpoints.global.GET?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID + )({ + id: slug4, + globalConfig, + req: payloadRequest, + }) + } + break + } } } else if (slug.length === 1 && slug1 in endpoints.root.GET) { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - res = await endpoints.root.GET[slug1]({ req }) + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) + res = await endpoints.root.GET[slug1]({ req: payloadRequest }) } if (res instanceof Response) return res @@ -406,45 +420,49 @@ export const POST = if (customEndpointResponse) { return customEndpointResponse } else { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - } + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) - switch (slug.length) { - case 1: - // /:collection - res = await endpoints.collection.POST.create({ collection, req }) - break - case 2: - if (slug2 in endpoints.collection.POST) { - // /:collection/login - // /:collection/logout - // /:collection/unlock - // /:collection/access - // /:collection/first-register - // /:collection/forgot-password - // /:collection/reset-password - // /:collection/refresh-token + switch (slug.length) { + case 1: + // /:collection + res = await endpoints.collection.POST.create({ collection, req: payloadRequest }) + break + case 2: + if (slug2 in endpoints.collection.POST) { + // /:collection/login + // /:collection/logout + // /:collection/unlock + // /:collection/access + // /:collection/first-register + // /:collection/forgot-password + // /:collection/reset-password + // /:collection/refresh-token - res = await (endpoints.collection.POST?.[slug2] as CollectionRouteHandler)({ - collection, - req, - }) - } - break - case 3: - if (`doc-${slug2}-by-id` in endpoints.collection.POST) { - // /:collection/access/:id - // /:collection/versions/:id - // /:collection/verify/:token ("doc-verify-by-id" uses id as token internally) - res = await ( - endpoints.collection.POST[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID - )({ id: slug3, collection, req }) - } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) { - // /:collection/:id/duplicate - res = await endpoints.collection.POST.duplicate({ id: slug2, collection, req }) - } - break + res = await (endpoints.collection.POST?.[slug2] as CollectionRouteHandler)({ + collection, + req: payloadRequest, + }) + } + break + case 3: + if (`doc-${slug2}-by-id` in endpoints.collection.POST) { + // /:collection/access/:id + // /:collection/versions/:id + // /:collection/verify/:token ("doc-verify-by-id" uses id as token internally) + res = await ( + endpoints.collection.POST[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID + )({ id: slug3, collection, req: payloadRequest }) + } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) { + // /:collection/:id/duplicate + res = await endpoints.collection.POST.duplicate({ + id: slug2, + collection, + req: payloadRequest, + }) + } + break + } } } else if (slug1 === 'globals' && slug2) { const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2) @@ -463,43 +481,42 @@ export const POST = if (customEndpointResponse) { return customEndpointResponse } else { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - } - - switch (slug.length) { - case 2: - // /globals/:slug - res = await endpoints.global.POST.update({ globalConfig, req }) - break - case 3: - if (`doc-${slug3}` in endpoints.global.POST) { - // /globals/:slug/access - res = await (endpoints.global.POST?.[`doc-${slug3}`] as GlobalRouteHandler)({ - globalConfig, - req, - }) - } - break - case 4: - if (`doc-${slug3}-by-id` in endpoints.global.POST) { - // /globals/:slug/versions/:id - res = await ( - endpoints.global.POST?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID - )({ - id: slug4, - globalConfig, - req, - }) - } - break - default: - res = new Response('Route Not Found', { status: 404 }) + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) + switch (slug.length) { + case 2: + // /globals/:slug + res = await endpoints.global.POST.update({ globalConfig, req: payloadRequest }) + break + case 3: + if (`doc-${slug3}` in endpoints.global.POST) { + // /globals/:slug/access + res = await (endpoints.global.POST?.[`doc-${slug3}`] as GlobalRouteHandler)({ + globalConfig, + req: payloadRequest, + }) + } + break + case 4: + if (`doc-${slug3}-by-id` in endpoints.global.POST) { + // /globals/:slug/versions/:id + res = await ( + endpoints.global.POST?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID + )({ + id: slug4, + globalConfig, + req: payloadRequest, + }) + } + break + default: + res = new Response('Route Not Found', { status: 404 }) + } } } else if (slug.length === 1 && slug1 in endpoints.root.POST) { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - res = await endpoints.root.POST[slug1]({ req }) + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) + res = await endpoints.root.POST[slug1]({ req: payloadRequest }) } if (res instanceof Response) return res @@ -564,19 +581,23 @@ export const DELETE = if (customEndpointResponse) { return customEndpointResponse } else { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - } + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) - switch (slug.length) { - case 1: - // /:collection - res = await endpoints.collection.DELETE.delete({ collection, req }) - break - case 2: - // /:collection/:id - res = await endpoints.collection.DELETE.deleteByID({ id: slug2, collection, req }) - break + switch (slug.length) { + case 1: + // /:collection + res = await endpoints.collection.DELETE.delete({ collection, req: payloadRequest }) + break + case 2: + // /:collection/:id + res = await endpoints.collection.DELETE.deleteByID({ + id: slug2, + collection, + req: payloadRequest, + }) + break + } } } @@ -643,19 +664,23 @@ export const PATCH = if (customEndpointResponse) { return customEndpointResponse } else { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - } + const reqWithData = await addDataAndFileToRequest({ request: req }) + const payloadRequest = addLocalesToRequestFromData({ request: reqWithData }) - switch (slug.length) { - case 1: - // /:collection - res = await endpoints.collection.PATCH.update({ collection, req }) - break - case 2: - // /:collection/:id - res = await endpoints.collection.PATCH.updateByID({ id: slug2, collection, req }) - break + switch (slug.length) { + case 1: + // /:collection + res = await endpoints.collection.PATCH.update({ collection, req: payloadRequest }) + break + case 2: + // /:collection/:id + res = await endpoints.collection.PATCH.updateByID({ + id: slug2, + collection, + req: payloadRequest, + }) + break + } } } diff --git a/packages/next/src/routes/rest/routeError.ts b/packages/next/src/routes/rest/routeError.ts index 2a8e2d4ce0..d74079e658 100644 --- a/packages/next/src/routes/rest/routeError.ts +++ b/packages/next/src/routes/rest/routeError.ts @@ -1,4 +1,4 @@ -import type { Collection, PayloadRequest, SanitizedConfig } from 'payload/types' +import type { Collection, PayloadRequestWithData, SanitizedConfig } from 'payload/types' import httpStatus from 'http-status' import { APIError } from 'payload/errors' @@ -78,7 +78,7 @@ export const routeError = async ({ collection?: Collection config: Promise | SanitizedConfig err: APIError - req: Partial + req: Partial }) => { let payload = req?.payload diff --git a/packages/next/src/routes/rest/types.ts b/packages/next/src/routes/rest/types.ts index 4460c9da10..dcfe96f002 100644 --- a/packages/next/src/routes/rest/types.ts +++ b/packages/next/src/routes/rest/types.ts @@ -1,13 +1,17 @@ -import type { Collection, PayloadRequest, SanitizedGlobalConfig } from 'payload/types' +import type { Collection, PayloadRequestWithData, SanitizedGlobalConfig } from 'payload/types' -export type BaseRouteHandler = ({ req }: { req: PayloadRequest }) => Promise | Response +export type BaseRouteHandler = ({ + req, +}: { + req: PayloadRequestWithData +}) => Promise | Response export type CollectionRouteHandler = ({ collection, req, }: { collection: Collection - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | Response export type CollectionRouteHandlerWithID = ({ @@ -17,7 +21,7 @@ export type CollectionRouteHandlerWithID = ({ }: { collection: Collection id: string - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | Response export type GlobalRouteHandler = ({ @@ -25,7 +29,7 @@ export type GlobalRouteHandler = ({ req, }: { globalConfig: SanitizedGlobalConfig - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | Response export type GlobalRouteHandlerWithID = ({ @@ -35,5 +39,5 @@ export type GlobalRouteHandlerWithID = ({ }: { globalConfig: SanitizedGlobalConfig id: string - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | Response diff --git a/packages/next/src/utilities/addDataAndFileToRequest.ts b/packages/next/src/utilities/addDataAndFileToRequest.ts index 5498615fc2..978286523f 100644 --- a/packages/next/src/utilities/addDataAndFileToRequest.ts +++ b/packages/next/src/utilities/addDataAndFileToRequest.ts @@ -1,28 +1,25 @@ -import type { CustomPayloadRequest, PayloadRequest } from 'payload/types' +import type { PayloadRequest, PayloadRequestData } from 'payload/types' import type { NextFileUploadOptions } from '../next-fileupload/index.js' import { nextFileUpload } from '../next-fileupload/index.js' -type AddDataAndFileToRequest = (args: { request: PayloadRequest }) => Promise +type ReturnType = PayloadRequest & PayloadRequestData +type AddDataAndFileToRequest = (args: { request: PayloadRequest }) => Promise /** * Mutates the Request to contain 'data' and 'file' if present */ -export const addDataAndFileToRequest: AddDataAndFileToRequest = async ({ - request: incomingRequest, -}) => { - const config = incomingRequest.payload.config +export const addDataAndFileToRequest: AddDataAndFileToRequest = async ({ request }) => { + const config = request.payload.config let data: Record | undefined = undefined - let file: CustomPayloadRequest['file'] = undefined + let file: PayloadRequestData['file'] = undefined if ( - incomingRequest.method && - ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) && - incomingRequest.body + request.method && + ['PATCH', 'POST', 'PUT'].includes(request.method.toUpperCase()) && + request.body ) { - // @ts-expect-error todo: fix type - const request = new Request(incomingRequest) const [contentType] = (request.headers.get('Content-Type') || '').split(';') if (contentType === 'application/json') { @@ -44,7 +41,7 @@ export const addDataAndFileToRequest: AddDataAndFileToRequest = async ({ if (request.headers.has('Content-Length') && request.headers.get('Content-Length') !== '0') { const { error, fields, files } = await nextFileUpload({ options: config.upload as NextFileUploadOptions, - request, + request: request as Request, }) if (error) { @@ -62,9 +59,12 @@ export const addDataAndFileToRequest: AddDataAndFileToRequest = async ({ } } + const mutableRequest = request as ReturnType if (data) { - incomingRequest.data = data - incomingRequest.json = () => Promise.resolve(data) + mutableRequest.data = data + mutableRequest.json = () => Promise.resolve(data) } - if (file) incomingRequest.file = file + if (file) mutableRequest.file = file + + return mutableRequest } diff --git a/packages/next/src/utilities/addLocalesToRequest.ts b/packages/next/src/utilities/addLocalesToRequest.ts index c013ce6484..393ee0c843 100644 --- a/packages/next/src/utilities/addLocalesToRequest.ts +++ b/packages/next/src/utilities/addLocalesToRequest.ts @@ -1,33 +1,67 @@ -import type { PayloadRequest } from 'payload/types' - -type AddLocalesToRequestArgs = { - request: PayloadRequest -} +import type { + PayloadRequest, + PayloadRequestData, + PayloadRequestWithData, + SanitizedConfig, +} from 'payload/types' /** * Mutates the Request to contain 'locale' and 'fallbackLocale' based on data or searchParams */ -export function addLocalesToRequest({ request }: AddLocalesToRequestArgs): void { +type Args = { + request: PayloadRequest & PayloadRequestData +} +export function addLocalesToRequestFromData({ request }: Args): PayloadRequestWithData { const { data, payload: { config }, } = request - const { localization } = config - const urlProperties = new URL(request.url) - const { searchParams } = urlProperties - - let locale = searchParams.get('locale') - let fallbackLocale = searchParams.get('fallback-locale') if (data) { - if (data?.locale && typeof data.locale === 'string') { - locale = data.locale + let localeOnReq = request.locale + let fallbackLocaleOnReq = request.fallbackLocale + + if (!localeOnReq && data?.locale && typeof data.locale === 'string') { + localeOnReq = data.locale } - if (data?.['fallback-locale'] && typeof data?.['fallback-locale'] === 'string') { - fallbackLocale = data['fallback-locale'] + + if ( + !fallbackLocaleOnReq && + data?.['fallback-locale'] && + typeof data?.['fallback-locale'] === 'string' + ) { + fallbackLocaleOnReq = data['fallback-locale'] } + + const { fallbackLocale, locale } = sanitizeLocales({ + fallbackLocale: fallbackLocaleOnReq, + locale: localeOnReq, + localization: config.localization, + }) + + const mutableRequest = request + if (locale) mutableRequest.locale = locale + if (fallbackLocale) mutableRequest.fallbackLocale = fallbackLocale + return mutableRequest } + return request +} + +type SanitizeLocalesArgs = { + fallbackLocale: string + locale: string + localization: SanitizedConfig['localization'] +} +type SanitizeLocalesReturn = { + fallbackLocale?: string + locale?: string +} +export const sanitizeLocales = ({ + fallbackLocale, + locale, + localization, +}: SanitizeLocalesArgs): SanitizeLocalesReturn => { if (fallbackLocale === 'none') { fallbackLocale = 'null' } else if (localization && !localization.localeCodes.includes(fallbackLocale)) { @@ -40,6 +74,8 @@ export function addLocalesToRequest({ request }: AddLocalesToRequestArgs): void locale = localization.defaultLocale } - if (locale) request.locale = locale - if (fallbackLocale) request.fallbackLocale = fallbackLocale + return { + fallbackLocale, + locale, + } } diff --git a/packages/next/src/utilities/buildFieldSchemaMap/index.ts b/packages/next/src/utilities/buildFieldSchemaMap/index.ts index d539688db4..3659d24188 100644 --- a/packages/next/src/utilities/buildFieldSchemaMap/index.ts +++ b/packages/next/src/utilities/buildFieldSchemaMap/index.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { FieldSchemaMap } from './types.js' @@ -7,7 +7,7 @@ import { traverseFields } from './traverseFields.js' export const buildFieldSchemaMap = ({ i18n, payload: { config }, -}: PayloadRequest): FieldSchemaMap => { +}: PayloadRequestWithData): FieldSchemaMap => { const result: FieldSchemaMap = new Map() const validRelationships = config.collections.map((c) => c.slug) || [] diff --git a/packages/next/src/utilities/createPayloadRequest.ts b/packages/next/src/utilities/createPayloadRequest.ts index 4e97a345ed..949b51e9de 100644 --- a/packages/next/src/utilities/createPayloadRequest.ts +++ b/packages/next/src/utilities/createPayloadRequest.ts @@ -1,9 +1,4 @@ -import type { - Collection, - CustomPayloadRequest, - PayloadRequest, - SanitizedConfig, -} from 'payload/types' +import type { CustomPayloadRequestProperties, PayloadRequest, SanitizedConfig } from 'payload/types' import { initI18n } from '@payloadcms/translations' import { executeAuthStrategies } from 'payload/auth' @@ -12,6 +7,7 @@ import { getDataLoader } from 'payload/utilities' import qs from 'qs' import { URL } from 'url' +import { sanitizeLocales } from './addLocalesToRequest.js' import { getPayloadHMR } from './getPayloadHMR.js' import { getRequestLanguage } from './getRequestLanguage.js' @@ -31,15 +27,10 @@ export const createPayloadRequest = async ({ const cookies = parseCookies(request.headers) const payload = await getPayloadHMR({ config: configPromise }) - const { collections, config } = payload - - let collection: Collection = undefined - if (params?.collection && collections?.[params.collection]) { - collection = collections[params.collection] - } + const { config } = payload const urlProperties = new URL(request.url) - const { pathname } = urlProperties + const { pathname, searchParams } = urlProperties const isGraphQL = !config.graphQL.disable && pathname === `${config.routes.api}${config.routes.graphQL}` @@ -56,12 +47,26 @@ export const createPayloadRequest = async ({ language, }) - const customRequest: CustomPayloadRequest = { + let locale + let fallbackLocale + if (config.localization) { + const locales = sanitizeLocales({ + fallbackLocale: searchParams.get('fallback-locale'), + locale: searchParams.get('locale'), + localization: payload.config.localization, + }) + locale = locales.locale + fallbackLocale = locales.fallbackLocale + } + + const customRequest: CustomPayloadRequestProperties = { context: {}, + fallbackLocale, hash: urlProperties.hash, host: urlProperties.host, href: urlProperties.href, i18n, + locale, origin: urlProperties.origin, pathname: urlProperties.pathname, payload, diff --git a/packages/next/src/utilities/getDataAndFile.ts b/packages/next/src/utilities/getDataAndFile.ts index e81a1daadb..ecc8637cc8 100644 --- a/packages/next/src/utilities/getDataAndFile.ts +++ b/packages/next/src/utilities/getDataAndFile.ts @@ -1,4 +1,4 @@ -import type { Collection, CustomPayloadRequest, SanitizedConfig } from 'payload/types' +import type { Collection, PayloadRequestWithData, SanitizedConfig } from 'payload/types' import type { NextFileUploadOptions } from '../next-fileupload/index.js' @@ -10,7 +10,7 @@ type GetDataAndFile = (args: { request: Request }) => Promise<{ data: Record - file: CustomPayloadRequest['file'] + file: PayloadRequestWithData['file'] }> export const getDataAndFile: GetDataAndFile = async ({ collection, @@ -18,7 +18,7 @@ export const getDataAndFile: GetDataAndFile = async ({ request: incomingRequest, }) => { let data: Record = undefined - let file: CustomPayloadRequest['file'] = undefined + let file: PayloadRequestWithData['file'] = undefined if ( ['PATCH', 'POST', 'PUT'].includes(incomingRequest.method.toUpperCase()) && diff --git a/packages/next/src/utilities/headersWithCors.ts b/packages/next/src/utilities/headersWithCors.ts index f8f39b0014..7b2c40fb4d 100644 --- a/packages/next/src/utilities/headersWithCors.ts +++ b/packages/next/src/utilities/headersWithCors.ts @@ -1,8 +1,8 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' type CorsArgs = { headers: Headers - req: Partial + req: Partial } export const headersWithCors = ({ headers, req }: CorsArgs): Headers => { const cors = req?.payload.config.cors diff --git a/packages/next/src/utilities/initPage.ts b/packages/next/src/utilities/initPage.ts index 561675a281..c9fdd9de66 100644 --- a/packages/next/src/utilities/initPage.ts +++ b/packages/next/src/utilities/initPage.ts @@ -1,6 +1,6 @@ import type { InitPageResult, - PayloadRequest, + PayloadRequestWithData, SanitizedCollectionConfig, SanitizedConfig, SanitizedGlobalConfig, @@ -63,7 +63,7 @@ export const initPage = async ({ ignoreQueryPrefix: true, }), url: `${payload.config.serverURL}${route}${searchParams ? queryString : ''}`, - } as PayloadRequest, + } as PayloadRequestWithData, }, payload, ) diff --git a/packages/next/src/views/Edit/Default/Auth/APIKey.tsx b/packages/next/src/views/Edit/Default/Auth/APIKey.tsx index 805c928fd9..6e6483a4e4 100644 --- a/packages/next/src/views/Edit/Default/Auth/APIKey.tsx +++ b/packages/next/src/views/Edit/Default/Auth/APIKey.tsx @@ -1,5 +1,5 @@ 'use client' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { CopyToClipboard } from '@payloadcms/ui/elements/CopyToClipboard' import { GenerateConfirmation } from '@payloadcms/ui/elements/GenerateConfirmation' @@ -40,7 +40,7 @@ export const APIKey: React.FC<{ enabled: boolean; readOnly?: boolean }> = ({ config, }, t, - } as PayloadRequest, + } as PayloadRequestWithData, siblingData: {}, }) diff --git a/packages/next/src/views/ForgotPassword/ForgotPasswordForm/index.tsx b/packages/next/src/views/ForgotPassword/ForgotPasswordForm/index.tsx index a631322352..7345d6fad1 100644 --- a/packages/next/src/views/ForgotPassword/ForgotPasswordForm/index.tsx +++ b/packages/next/src/views/ForgotPassword/ForgotPasswordForm/index.tsx @@ -1,6 +1,6 @@ 'use client' -import type { FormState, PayloadRequest } from 'payload/types' +import type { FormState, PayloadRequestWithData } from 'payload/types' import { Email } from '@payloadcms/ui/fields/Email' import { Form } from '@payloadcms/ui/forms/Form' @@ -70,7 +70,7 @@ export const ForgotPasswordForm: React.FC = () => { type: 'email', data: {}, preferences: { fields: {} }, - req: { t } as PayloadRequest, + req: { t } as PayloadRequestWithData, required: true, siblingData: {}, }) diff --git a/packages/next/src/views/Login/LoginForm/index.tsx b/packages/next/src/views/Login/LoginForm/index.tsx index 63a3a9d24e..c29a570d00 100644 --- a/packages/next/src/views/Login/LoginForm/index.tsx +++ b/packages/next/src/views/Login/LoginForm/index.tsx @@ -6,7 +6,7 @@ import React from 'react' const baseClass = 'login__form' const Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default -import type { FormState, PayloadRequest } from 'payload/types' +import type { FormState, PayloadRequestWithData } from 'payload/types' import { FormLoadingOverlayToggle } from '@payloadcms/ui/elements/Loading' import { Email } from '@payloadcms/ui/fields/Email' @@ -69,7 +69,7 @@ export const LoginForm: React.FC<{ type: 'email', data: {}, preferences: { fields: {} }, - req: { t } as PayloadRequest, + req: { t } as PayloadRequestWithData, required: true, siblingData: {}, }) @@ -91,7 +91,7 @@ export const LoginForm: React.FC<{ config, }, t, - } as PayloadRequest, + } as PayloadRequestWithData, required: true, siblingData: {}, }) diff --git a/packages/payload/src/admin/RichText.ts b/packages/payload/src/admin/RichText.ts index 8ae9ce8c50..f15b25c1a7 100644 --- a/packages/payload/src/admin/RichText.ts +++ b/packages/payload/src/admin/RichText.ts @@ -3,7 +3,7 @@ import type { JSONSchema4 } from 'json-schema' import type { SanitizedConfig } from '../config/types.js' import type { Field, FieldBase, RichTextField, Validate } from '../fields/config/types.js' -import type { PayloadRequest, RequestContext } from '../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../types/index.js' import type { WithServerSideProps } from './elements/WithServerSideProps.js' export type RichTextFieldProps< @@ -64,7 +64,7 @@ type RichTextAdapterBase< flattenLocales: boolean overrideAccess?: boolean populationPromises: Promise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean siblingDoc: Record }) => void diff --git a/packages/payload/src/admin/views/types.ts b/packages/payload/src/admin/views/types.ts index 9405f7e370..220a87d861 100644 --- a/packages/payload/src/admin/views/types.ts +++ b/packages/payload/src/admin/views/types.ts @@ -4,7 +4,7 @@ import type { Permissions } from '../../auth/index.js' import type { SanitizedCollectionConfig } from '../../collections/config/types.js' import type { Locale } from '../../config/types.js' import type { SanitizedGlobalConfig } from '../../globals/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' export type AdminViewConfig = { Component: AdminViewComponent @@ -42,7 +42,7 @@ export type InitPageResult = { globalConfig?: SanitizedGlobalConfig locale: Locale permissions: Permissions - req: PayloadRequest + req: PayloadRequestWithData translations: SupportedLanguages visibleEntities: VisibleEntities } diff --git a/packages/payload/src/auth/defaultAccess.ts b/packages/payload/src/auth/defaultAccess.ts index 18f3276260..c94cc1e008 100644 --- a/packages/payload/src/auth/defaultAccess.ts +++ b/packages/payload/src/auth/defaultAccess.ts @@ -1,3 +1,3 @@ -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' -export default ({ req: { user } }: { req: PayloadRequest }): boolean => Boolean(user) +export default ({ req: { user } }: { req: PayloadRequestWithData }): boolean => Boolean(user) diff --git a/packages/payload/src/auth/executeAccess.ts b/packages/payload/src/auth/executeAccess.ts index 8ac52baee7..407683ad72 100644 --- a/packages/payload/src/auth/executeAccess.ts +++ b/packages/payload/src/auth/executeAccess.ts @@ -1,5 +1,5 @@ import type { Access, AccessResult } from '../config/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import { Forbidden } from '../errors/index.js' @@ -8,7 +8,7 @@ type OperationArgs = { disableErrors?: boolean id?: number | string isReadingStaticFile?: boolean - req: PayloadRequest + req: PayloadRequestWithData } const executeAccess = async ( { id, data, disableErrors, isReadingStaticFile = false, req }: OperationArgs, diff --git a/packages/payload/src/auth/getAccessResults.ts b/packages/payload/src/auth/getAccessResults.ts index 47e2724556..751b32ac3e 100644 --- a/packages/payload/src/auth/getAccessResults.ts +++ b/packages/payload/src/auth/getAccessResults.ts @@ -1,11 +1,11 @@ -import type { AllOperations, PayloadRequest } from '../types/index.js' +import type { AllOperations, PayloadRequestWithData } from '../types/index.js' import type { Permissions } from './types.js' import { getEntityPolicies } from '../utilities/getEntityPolicies.js' import isolateObjectProperty from '../utilities/isolateObjectProperty.js' type GetAccessResultsArgs = { - req: PayloadRequest + req: PayloadRequestWithData } export async function getAccessResults({ req }: GetAccessResultsArgs): Promise { const results = {} as Permissions diff --git a/packages/payload/src/auth/getFieldsToSign.ts b/packages/payload/src/auth/getFieldsToSign.ts index a9fa9646f0..b643f8d23c 100644 --- a/packages/payload/src/auth/getFieldsToSign.ts +++ b/packages/payload/src/auth/getFieldsToSign.ts @@ -1,7 +1,7 @@ /* eslint-disable no-param-reassign */ import type { CollectionConfig } from '../collections/config/types.js' import type { Field, TabAsField } from '../fields/config/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import { fieldAffectsData, tabHasName } from '../fields/config/types.js' @@ -105,7 +105,7 @@ const traverseFields = ({ export const getFieldsToSign = (args: { collectionConfig: CollectionConfig email: string - user: PayloadRequest['user'] + user: PayloadRequestWithData['user'] }): Record => { const { collectionConfig, email, user } = args diff --git a/packages/payload/src/auth/operations/access.ts b/packages/payload/src/auth/operations/access.ts index ebe30957f0..76bf7e1b28 100644 --- a/packages/payload/src/auth/operations/access.ts +++ b/packages/payload/src/auth/operations/access.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Permissions } from '../types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -8,7 +8,7 @@ import { adminInit as adminInitTelemetry } from '../../utilities/telemetry/event import { getAccessResults } from '../getAccessResults.js' type Arguments = { - req: PayloadRequest + req: PayloadRequestWithData } export const accessOperation = async (args: Arguments): Promise => { diff --git a/packages/payload/src/auth/operations/auth.ts b/packages/payload/src/auth/operations/auth.ts index 4c71b006ff..c4f5682d77 100644 --- a/packages/payload/src/auth/operations/auth.ts +++ b/packages/payload/src/auth/operations/auth.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Permissions, User } from '../types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -11,7 +11,7 @@ import { getAccessResults } from '../getAccessResults.js' export type AuthArgs = { headers: Request['headers'] - req?: Omit + req?: Omit } export type AuthResult = { @@ -22,7 +22,7 @@ export type AuthResult = { export const auth = async (args: Required): Promise => { const { headers } = args - const req = args.req as PayloadRequest + const req = args.req as PayloadRequestWithData const { payload } = req const cookies = parseCookies(headers) diff --git a/packages/payload/src/auth/operations/forgotPassword.ts b/packages/payload/src/auth/operations/forgotPassword.ts index 56f9380668..9d86f1c2d5 100644 --- a/packages/payload/src/auth/operations/forgotPassword.ts +++ b/packages/payload/src/auth/operations/forgotPassword.ts @@ -3,7 +3,7 @@ import httpStatus from 'http-status' import { URL } from 'url' import type { Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import { buildAfterOperation } from '../../collections/operations/utils.js' import { APIError } from '../../errors/index.js' @@ -19,7 +19,7 @@ export type Arguments = { } disableEmail?: boolean expiration?: number - req: PayloadRequest + req: PayloadRequestWithData } export type Result = string diff --git a/packages/payload/src/auth/operations/init.ts b/packages/payload/src/auth/operations/init.ts index 296e0d4623..b4382e2260 100644 --- a/packages/payload/src/auth/operations/init.ts +++ b/packages/payload/src/auth/operations/init.ts @@ -1,8 +1,8 @@ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' export const initOperation = async (args: { collection: string - req: PayloadRequest + req: PayloadRequestWithData }): Promise => { const { collection: slug, req } = args diff --git a/packages/payload/src/auth/operations/local/auth.ts b/packages/payload/src/auth/operations/local/auth.ts index b221d550f0..16e634a959 100644 --- a/packages/payload/src/auth/operations/local/auth.ts +++ b/packages/payload/src/auth/operations/local/auth.ts @@ -1,5 +1,5 @@ import type { Payload } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import type { AuthArgs, AuthResult } from '../auth.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -10,6 +10,6 @@ export const auth = async (payload: Payload, options: AuthArgs): Promise = { } disableEmail?: boolean expiration?: number - req?: PayloadRequest + req?: PayloadRequestWithData } async function localForgotPassword( diff --git a/packages/payload/src/auth/operations/local/login.ts b/packages/payload/src/auth/operations/local/login.ts index 16888fd0a4..a08ffe149d 100644 --- a/packages/payload/src/auth/operations/local/login.ts +++ b/packages/payload/src/auth/operations/local/login.ts @@ -1,6 +1,6 @@ import type { Payload, RequestContext } from '../../../index.js' import type { GeneratedTypes } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import type { Result } from '../login.js' import { APIError } from '../../../errors/index.js' @@ -18,7 +18,7 @@ export type Options = { fallbackLocale?: string locale?: string overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/auth/operations/local/resetPassword.ts b/packages/payload/src/auth/operations/local/resetPassword.ts index 8c69290390..efd0c6afc4 100644 --- a/packages/payload/src/auth/operations/local/resetPassword.ts +++ b/packages/payload/src/auth/operations/local/resetPassword.ts @@ -1,6 +1,6 @@ import type { Payload, RequestContext } from '../../../index.js' import type { GeneratedTypes } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import type { Result } from '../resetPassword.js' import { APIError } from '../../../errors/index.js' @@ -15,7 +15,7 @@ export type Options = { token: string } overrideAccess: boolean - req?: PayloadRequest + req?: PayloadRequestWithData } async function localResetPassword( diff --git a/packages/payload/src/auth/operations/local/unlock.ts b/packages/payload/src/auth/operations/local/unlock.ts index 4a4cb08a36..3b543b1ac7 100644 --- a/packages/payload/src/auth/operations/local/unlock.ts +++ b/packages/payload/src/auth/operations/local/unlock.ts @@ -1,6 +1,6 @@ import type { Payload, RequestContext } from '../../../index.js' import type { GeneratedTypes } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -13,7 +13,7 @@ export type Options = { email } overrideAccess: boolean - req?: PayloadRequest + req?: PayloadRequestWithData } async function localUnlock( diff --git a/packages/payload/src/auth/operations/local/verifyEmail.ts b/packages/payload/src/auth/operations/local/verifyEmail.ts index c933494515..345fc8d7af 100644 --- a/packages/payload/src/auth/operations/local/verifyEmail.ts +++ b/packages/payload/src/auth/operations/local/verifyEmail.ts @@ -1,6 +1,6 @@ import type { Payload, RequestContext } from '../../../index.js' import type { GeneratedTypes } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -9,7 +9,7 @@ import { verifyEmailOperation } from '../verifyEmail.js' export type Options = { collection: T context?: RequestContext - req?: PayloadRequest + req?: PayloadRequestWithData token: string } diff --git a/packages/payload/src/auth/operations/login.ts b/packages/payload/src/auth/operations/login.ts index 0804cd9a5a..9e37b3863f 100644 --- a/packages/payload/src/auth/operations/login.ts +++ b/packages/payload/src/auth/operations/login.ts @@ -2,7 +2,7 @@ import jwt from 'jsonwebtoken' import type { Collection } from '../../collections/config/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { User } from '../types.js' import { buildAfterOperation } from '../../collections/operations/utils.js' @@ -32,7 +32,7 @@ export type Arguments = { } depth?: number overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/auth/operations/logout.ts b/packages/payload/src/auth/operations/logout.ts index a84b4476a3..617a991c8f 100644 --- a/packages/payload/src/auth/operations/logout.ts +++ b/packages/payload/src/auth/operations/logout.ts @@ -1,13 +1,13 @@ import httpStatus from 'http-status' import type { Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import { APIError } from '../../errors/index.js' export type Arguments = { collection: Collection - req: PayloadRequest + req: PayloadRequestWithData } export const logoutOperation = async (incomingArgs: Arguments): Promise => { diff --git a/packages/payload/src/auth/operations/me.ts b/packages/payload/src/auth/operations/me.ts index 727cf80cb4..2be292b589 100644 --- a/packages/payload/src/auth/operations/me.ts +++ b/packages/payload/src/auth/operations/me.ts @@ -1,7 +1,7 @@ import jwt from 'jsonwebtoken' import type { Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { ClientUser, User } from '../types.js' export type MeOperationResult = { @@ -14,7 +14,7 @@ export type MeOperationResult = { export type Arguments = { collection: Collection currentToken?: string - req: PayloadRequest + req: PayloadRequestWithData } export const meOperation = async ({ diff --git a/packages/payload/src/auth/operations/refresh.ts b/packages/payload/src/auth/operations/refresh.ts index 79d79153a7..8ff6c50c89 100644 --- a/packages/payload/src/auth/operations/refresh.ts +++ b/packages/payload/src/auth/operations/refresh.ts @@ -2,7 +2,7 @@ import jwt from 'jsonwebtoken' import url from 'url' import type { BeforeOperationHook, Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Document } from '../../types/index.js' import { buildAfterOperation } from '../../collections/operations/utils.js' @@ -20,7 +20,7 @@ export type Result = { export type Arguments = { collection: Collection - req: PayloadRequest + req: PayloadRequestWithData token: string } diff --git a/packages/payload/src/auth/operations/registerFirstUser.ts b/packages/payload/src/auth/operations/registerFirstUser.ts index c3c40dd82f..363ae893cf 100644 --- a/packages/payload/src/auth/operations/registerFirstUser.ts +++ b/packages/payload/src/auth/operations/registerFirstUser.ts @@ -2,7 +2,7 @@ import type { MarkOptional } from 'ts-essentials' import type { Collection } from '../../collections/config/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import { Forbidden } from '../../errors/index.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -15,7 +15,7 @@ export type Arguments email: string password: string } - req: PayloadRequest + req: PayloadRequestWithData } export type Result = { diff --git a/packages/payload/src/auth/operations/resetPassword.ts b/packages/payload/src/auth/operations/resetPassword.ts index 7d263e2e8e..2c4df4b04a 100644 --- a/packages/payload/src/auth/operations/resetPassword.ts +++ b/packages/payload/src/auth/operations/resetPassword.ts @@ -2,7 +2,7 @@ import httpStatus from 'http-status' import jwt from 'jsonwebtoken' import type { Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import { APIError } from '../../errors/index.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -25,7 +25,7 @@ export type Arguments = { } depth?: number overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData } export const resetPasswordOperation = async (args: Arguments): Promise => { diff --git a/packages/payload/src/auth/operations/unlock.ts b/packages/payload/src/auth/operations/unlock.ts index 2d4d82a5ba..f49f1d1497 100644 --- a/packages/payload/src/auth/operations/unlock.ts +++ b/packages/payload/src/auth/operations/unlock.ts @@ -1,7 +1,7 @@ import httpStatus from 'http-status' import type { Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import { APIError } from '../../errors/index.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -16,7 +16,7 @@ export type Args = { email: string } overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData } export const unlockOperation = async (args: Args): Promise => { diff --git a/packages/payload/src/auth/operations/verifyEmail.ts b/packages/payload/src/auth/operations/verifyEmail.ts index ae4a157d2c..df3c971b0d 100644 --- a/packages/payload/src/auth/operations/verifyEmail.ts +++ b/packages/payload/src/auth/operations/verifyEmail.ts @@ -1,7 +1,7 @@ import httpStatus from 'http-status' import type { Collection } from '../../collections/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import { APIError } from '../../errors/index.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -10,7 +10,7 @@ import { killTransaction } from '../../utilities/killTransaction.js' export type Args = { collection: Collection - req: PayloadRequest + req: PayloadRequestWithData token: string } diff --git a/packages/payload/src/auth/sendVerificationEmail.ts b/packages/payload/src/auth/sendVerificationEmail.ts index 3d8bf91dbd..4ea6804a47 100644 --- a/packages/payload/src/auth/sendVerificationEmail.ts +++ b/packages/payload/src/auth/sendVerificationEmail.ts @@ -3,7 +3,7 @@ import { URL } from 'url' import type { Collection } from '../collections/config/types.js' import type { SanitizedConfig } from '../config/types.js' import type { InitializedEmailAdapter } from '../email/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import type { User, VerifyConfig } from './types.js' type Args = { @@ -11,7 +11,7 @@ type Args = { config: SanitizedConfig disableEmail: boolean email: InitializedEmailAdapter - req: PayloadRequest + req: PayloadRequestWithData token: string user: User } diff --git a/packages/payload/src/auth/strategies/local/incrementLoginAttempts.ts b/packages/payload/src/auth/strategies/local/incrementLoginAttempts.ts index 7538b79d45..5a71852f74 100644 --- a/packages/payload/src/auth/strategies/local/incrementLoginAttempts.ts +++ b/packages/payload/src/auth/strategies/local/incrementLoginAttempts.ts @@ -1,12 +1,12 @@ import type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js' import type { Payload } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' type Args = { collection: SanitizedCollectionConfig doc: TypeWithID & Record payload: Payload - req: PayloadRequest + req: PayloadRequestWithData } export const incrementLoginAttempts = async ({ diff --git a/packages/payload/src/auth/strategies/local/register.ts b/packages/payload/src/auth/strategies/local/register.ts index f81ca30afc..84e344a38b 100644 --- a/packages/payload/src/auth/strategies/local/register.ts +++ b/packages/payload/src/auth/strategies/local/register.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { Payload } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import { ValidationError } from '../../../errors/index.js' import { generatePasswordSaltHash } from './generatePasswordSaltHash.js' @@ -10,7 +10,7 @@ type Args = { doc: Record password: string payload: Payload - req: PayloadRequest + req: PayloadRequestWithData } export const registerLocalStrategy = async ({ diff --git a/packages/payload/src/auth/strategies/local/resetLoginAttempts.ts b/packages/payload/src/auth/strategies/local/resetLoginAttempts.ts index 142fa31a3f..d6448be4e3 100644 --- a/packages/payload/src/auth/strategies/local/resetLoginAttempts.ts +++ b/packages/payload/src/auth/strategies/local/resetLoginAttempts.ts @@ -1,12 +1,12 @@ import type { SanitizedCollectionConfig, TypeWithID } from '../../../collections/config/types.js' import type { Payload } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' type Args = { collection: SanitizedCollectionConfig doc: TypeWithID & Record payload: Payload - req: PayloadRequest + req: PayloadRequestWithData } export const resetLoginAttempts = async ({ diff --git a/packages/payload/src/auth/types.ts b/packages/payload/src/auth/types.ts index bb7f04c3ea..a5dd3df12e 100644 --- a/packages/payload/src/auth/types.ts +++ b/packages/payload/src/auth/types.ts @@ -1,7 +1,7 @@ import type { DeepRequired } from 'ts-essentials' import type { Payload } from '../index.js' -import type { PayloadRequest, Where } from '../types/index.js' +import type { PayloadRequestWithData, Where } from '../types/index.js' export type Permission = { permission: boolean @@ -75,23 +75,23 @@ export type User = { export type ClientUser = Omit type GenerateVerifyEmailHTML = (args: { - req: PayloadRequest + req: PayloadRequestWithData token: string user: any }) => Promise | string type GenerateVerifyEmailSubject = (args: { - req: PayloadRequest + req: PayloadRequestWithData token: string user: any }) => Promise | string type GenerateForgotPasswordEmailHTML = (args?: { - req?: PayloadRequest + req?: PayloadRequestWithData token?: string user?: unknown }) => Promise | string type GenerateForgotPasswordEmailSubject = (args?: { - req?: PayloadRequest + req?: PayloadRequestWithData token?: string user?: any }) => Promise | string diff --git a/packages/payload/src/collections/config/types.ts b/packages/payload/src/collections/config/types.ts index cdc5c696c1..4964bd7844 100644 --- a/packages/payload/src/collections/config/types.ts +++ b/packages/payload/src/collections/config/types.ts @@ -21,7 +21,7 @@ import type { import type { DBIdentifierName } from '../../database/types.js' import type { Field } from '../../fields/config/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest, RequestContext } from '../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../types/index.js' import type { SanitizedUploadConfig, UploadConfig } from '../../uploads/types.js' import type { IncomingCollectionVersions, @@ -51,7 +51,7 @@ export type BeforeOperationHook = (args: { * Hook operation being performed */ operation: HookOperationType - req: PayloadRequest + req: PayloadRequestWithData }) => any export type BeforeValidateHook = (args: { @@ -69,7 +69,7 @@ export type BeforeValidateHook = (args: { * `undefined` on 'create' operation */ originalDoc?: T - req: PayloadRequest + req: PayloadRequestWithData }) => any export type BeforeChangeHook = (args: { @@ -87,7 +87,7 @@ export type BeforeChangeHook = (args: { * `undefined` on 'create' operation */ originalDoc?: T - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterChangeHook = (args: { @@ -100,7 +100,7 @@ export type AfterChangeHook = (args: { */ operation: CreateOrUpdateOperation previousDoc: T - req: PayloadRequest + req: PayloadRequestWithData }) => any export type BeforeReadHook = (args: { @@ -109,7 +109,7 @@ export type BeforeReadHook = (args: { context: RequestContext doc: T query: { [key: string]: any } - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterReadHook = (args: { @@ -119,7 +119,7 @@ export type AfterReadHook = (args: { doc: T findMany?: boolean query?: { [key: string]: any } - req: PayloadRequest + req: PayloadRequestWithData }) => any export type BeforeDeleteHook = (args: { @@ -127,7 +127,7 @@ export type BeforeDeleteHook = (args: { collection: SanitizedCollectionConfig context: RequestContext id: number | string - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterDeleteHook = (args: { @@ -136,7 +136,7 @@ export type AfterDeleteHook = (args: { context: RequestContext doc: T id: number | string - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterOperationHook = ( @@ -155,7 +155,7 @@ export type BeforeLoginHook = (args: { /** The collection which this hook is being run on */ collection: SanitizedCollectionConfig context: RequestContext - req: PayloadRequest + req: PayloadRequestWithData user: T }) => any @@ -163,7 +163,7 @@ export type AfterLoginHook = (args: { /** The collection which this hook is being run on */ collection: SanitizedCollectionConfig context: RequestContext - req: PayloadRequest + req: PayloadRequestWithData token: string user: T }) => any @@ -172,14 +172,14 @@ export type AfterLogoutHook = (args: { /** The collection which this hook is being run on */ collection: SanitizedCollectionConfig context: RequestContext - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterMeHook = (args: { /** The collection which this hook is being run on */ collection: SanitizedCollectionConfig context: RequestContext - req: PayloadRequest + req: PayloadRequestWithData response: unknown }) => any @@ -188,7 +188,7 @@ export type AfterRefreshHook = (args: { collection: SanitizedCollectionConfig context: RequestContext exp: number - req: PayloadRequest + req: PayloadRequestWithData token: string }) => any @@ -299,7 +299,7 @@ export type CollectionConfig = { * Access control */ access?: { - admin?: ({ req }: { req: PayloadRequest }) => Promise | boolean + admin?: ({ req }: { req: PayloadRequestWithData }) => Promise | boolean create?: Access delete?: Access read?: Access diff --git a/packages/payload/src/collections/dataloader.ts b/packages/payload/src/collections/dataloader.ts index 1686ef2e6e..1b014b7ff8 100644 --- a/packages/payload/src/collections/dataloader.ts +++ b/packages/payload/src/collections/dataloader.ts @@ -2,7 +2,7 @@ import type { BatchLoadFn } from 'dataloader' import DataLoader from 'dataloader' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequest, PayloadRequestWithData } from '../types/index.js' import type { TypeWithID } from './config/types.js' import { isValidID } from '../utilities/isValidID.js' @@ -111,7 +111,7 @@ const batchAndLoadDocs = locale, overrideAccess: Boolean(overrideAccess), pagination: false, - req, + req: req as PayloadRequestWithData, showHiddenFields: Boolean(showHiddenFields), where: { id: { diff --git a/packages/payload/src/collections/operations/count.ts b/packages/payload/src/collections/operations/count.ts index 890bc22478..739ab1d089 100644 --- a/packages/payload/src/collections/operations/count.ts +++ b/packages/payload/src/collections/operations/count.ts @@ -1,5 +1,5 @@ import type { AccessResult } from '../../config/types.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { Collection, TypeWithID } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -14,7 +14,7 @@ export type Arguments = { collection: Collection disableErrors?: boolean overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData where?: Where } diff --git a/packages/payload/src/collections/operations/create.ts b/packages/payload/src/collections/operations/create.ts index 824086bcae..d2a36c0ee2 100644 --- a/packages/payload/src/collections/operations/create.ts +++ b/packages/payload/src/collections/operations/create.ts @@ -3,7 +3,7 @@ import type { MarkOptional } from 'ts-essentials' import crypto from 'crypto' import type { GeneratedTypes } from '../../index.js' -import type { Document, PayloadRequest } from '../../types/index.js' +import type { Document, PayloadRequestWithData } from '../../types/index.js' import type { AfterChangeHook, BeforeOperationHook, @@ -39,7 +39,7 @@ export type Arguments = { draft?: boolean overrideAccess?: boolean overwriteExistingFiles?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/collections/operations/delete.ts b/packages/payload/src/collections/operations/delete.ts index 5e33bc4236..7d727e40a9 100644 --- a/packages/payload/src/collections/operations/delete.ts +++ b/packages/payload/src/collections/operations/delete.ts @@ -2,7 +2,7 @@ import httpStatus from 'http-status' import type { AccessResult } from '../../config/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { BeforeOperationHook, Collection } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -22,7 +22,7 @@ export type Arguments = { collection: Collection depth?: number overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean where: Where } diff --git a/packages/payload/src/collections/operations/deleteByID.ts b/packages/payload/src/collections/operations/deleteByID.ts index 925955acaf..8d73f1f27f 100644 --- a/packages/payload/src/collections/operations/deleteByID.ts +++ b/packages/payload/src/collections/operations/deleteByID.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes } from '../../index.js' -import type { Document, PayloadRequest } from '../../types/index.js' +import type { Document, PayloadRequestWithData } from '../../types/index.js' import type { BeforeOperationHook, Collection } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -20,7 +20,7 @@ export type Arguments = { depth?: number id: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/collections/operations/docAccess.ts b/packages/payload/src/collections/operations/docAccess.ts index 0f39c293fb..6f9a87437d 100644 --- a/packages/payload/src/collections/operations/docAccess.ts +++ b/packages/payload/src/collections/operations/docAccess.ts @@ -1,5 +1,5 @@ import type { CollectionPermission } from '../../auth/index.js' -import type { AllOperations, PayloadRequest } from '../../types/index.js' +import type { AllOperations, PayloadRequestWithData } from '../../types/index.js' import type { Collection } from '../config/types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -12,7 +12,7 @@ const allOperations: AllOperations[] = ['create', 'read', 'update', 'delete'] type Arguments = { collection: Collection id: string - req: PayloadRequest + req: PayloadRequestWithData } export async function docAccessOperation(args: Arguments): Promise { diff --git a/packages/payload/src/collections/operations/duplicate.ts b/packages/payload/src/collections/operations/duplicate.ts index e680e0c250..8c544963e4 100644 --- a/packages/payload/src/collections/operations/duplicate.ts +++ b/packages/payload/src/collections/operations/duplicate.ts @@ -4,7 +4,7 @@ import httpStatus from 'http-status' import type { FindOneArgs } from '../../database/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Collection } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -28,7 +28,7 @@ export type Arguments = { draft?: boolean id: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/collections/operations/find.ts b/packages/payload/src/collections/operations/find.ts index 18d92afd1c..32cbcc3c2d 100644 --- a/packages/payload/src/collections/operations/find.ts +++ b/packages/payload/src/collections/operations/find.ts @@ -1,6 +1,6 @@ import type { AccessResult } from '../../config/types.js' import type { PaginatedDocs } from '../../database/types.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { Collection, TypeWithID } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -25,7 +25,7 @@ export type Arguments = { overrideAccess?: boolean page?: number pagination?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean sort?: string where?: Where diff --git a/packages/payload/src/collections/operations/findByID.ts b/packages/payload/src/collections/operations/findByID.ts index 005274c999..bc741ddf74 100644 --- a/packages/payload/src/collections/operations/findByID.ts +++ b/packages/payload/src/collections/operations/findByID.ts @@ -1,6 +1,6 @@ /* eslint-disable no-underscore-dangle */ import type { FindOneArgs } from '../../database/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Collection, TypeWithID } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -21,7 +21,7 @@ export type Arguments = { draft?: boolean id: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } @@ -79,7 +79,7 @@ export const findByIDOperation = async ( locale, req: { transactionID: req.transactionID, - } as PayloadRequest, + } as PayloadRequestWithData, where: combineQueries({ id: { equals: id } }, accessResult), } diff --git a/packages/payload/src/collections/operations/findVersionByID.ts b/packages/payload/src/collections/operations/findVersionByID.ts index a6149e369f..40023411bd 100644 --- a/packages/payload/src/collections/operations/findVersionByID.ts +++ b/packages/payload/src/collections/operations/findVersionByID.ts @@ -1,7 +1,7 @@ /* eslint-disable no-underscore-dangle */ import httpStatus from 'http-status' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { TypeWithVersion } from '../../versions/types.js' import type { Collection, TypeWithID } from '../config/types.js' @@ -20,7 +20,7 @@ export type Arguments = { disableErrors?: boolean id: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/collections/operations/findVersions.ts b/packages/payload/src/collections/operations/findVersions.ts index 1e69dcb60a..c8029d4c76 100644 --- a/packages/payload/src/collections/operations/findVersions.ts +++ b/packages/payload/src/collections/operations/findVersions.ts @@ -1,5 +1,5 @@ import type { PaginatedDocs } from '../../database/types.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { TypeWithVersion } from '../../versions/types.js' import type { Collection } from '../config/types.js' @@ -20,7 +20,7 @@ export type Arguments = { overrideAccess?: boolean page?: number pagination?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean sort?: string where?: Where diff --git a/packages/payload/src/collections/operations/local/count.ts b/packages/payload/src/collections/operations/local/count.ts index 81e4204447..6e1b50132e 100644 --- a/packages/payload/src/collections/operations/local/count.ts +++ b/packages/payload/src/collections/operations/local/count.ts @@ -1,5 +1,10 @@ import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js' +import type { + Document, + PayloadRequestWithData, + RequestContext, + Where, +} from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -15,7 +20,7 @@ export type Options = { disableErrors?: boolean locale?: GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData user?: Document where?: Where } diff --git a/packages/payload/src/collections/operations/local/create.ts b/packages/payload/src/collections/operations/local/create.ts index 68d4a07c9c..1101fba1b7 100644 --- a/packages/payload/src/collections/operations/local/create.ts +++ b/packages/payload/src/collections/operations/local/create.ts @@ -2,7 +2,7 @@ import type { MarkOptional } from 'ts-essentials' import type { GeneratedTypes } from '../../../index.js' import type { Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Document, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { File } from '../../../uploads/types.js' import { APIError } from '../../../errors/index.js' @@ -29,7 +29,7 @@ export type Options = { locale?: GeneratedTypes['locale'] overrideAccess?: boolean overwriteExistingFiles?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/local/delete.ts b/packages/payload/src/collections/operations/local/delete.ts index 64505b2a1d..19e8c429d3 100644 --- a/packages/payload/src/collections/operations/local/delete.ts +++ b/packages/payload/src/collections/operations/local/delete.ts @@ -1,6 +1,6 @@ import type { Payload } from '../../../index.js' import type { GeneratedTypes } from '../../../index.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Document, Where } from '../../../types/index.js' import type { BulkOperationResult } from '../../config/types.js' @@ -19,7 +19,7 @@ export type BaseOptions = { fallbackLocale?: GeneratedTypes['locale'] locale?: GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/local/duplicate.ts b/packages/payload/src/collections/operations/local/duplicate.ts index c267b73c4d..34de2db1b8 100644 --- a/packages/payload/src/collections/operations/local/duplicate.ts +++ b/packages/payload/src/collections/operations/local/duplicate.ts @@ -1,6 +1,6 @@ import type { GeneratedTypes } from '../../..//index.js' import type { Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Document, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -18,7 +18,7 @@ export type Options = { id: number | string locale?: GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/local/find.ts b/packages/payload/src/collections/operations/local/find.ts index 287610d651..67a7b40eed 100644 --- a/packages/payload/src/collections/operations/local/find.ts +++ b/packages/payload/src/collections/operations/local/find.ts @@ -1,6 +1,11 @@ import type { PaginatedDocs } from '../../../database/types.js' import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js' +import type { + Document, + PayloadRequestWithData, + RequestContext, + Where, +} from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -22,7 +27,7 @@ export type Options = { overrideAccess?: boolean page?: number pagination?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean sort?: string user?: Document diff --git a/packages/payload/src/collections/operations/local/findByID.ts b/packages/payload/src/collections/operations/local/findByID.ts index ac09f75a43..eac1b58018 100644 --- a/packages/payload/src/collections/operations/local/findByID.ts +++ b/packages/payload/src/collections/operations/local/findByID.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Document, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -19,7 +19,7 @@ export type Options = { id: number | string locale?: 'all' | GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/local/findVersionByID.ts b/packages/payload/src/collections/operations/local/findVersionByID.ts index 200e3ac993..d0b7588535 100644 --- a/packages/payload/src/collections/operations/local/findVersionByID.ts +++ b/packages/payload/src/collections/operations/local/findVersionByID.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Document, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { TypeWithVersion } from '../../../versions/types.js' import { APIError } from '../../../errors/index.js' @@ -19,7 +19,7 @@ export type Options = { id: string locale?: 'all' | GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/local/findVersions.ts b/packages/payload/src/collections/operations/local/findVersions.ts index da6fb63946..f8371689dc 100644 --- a/packages/payload/src/collections/operations/local/findVersions.ts +++ b/packages/payload/src/collections/operations/local/findVersions.ts @@ -1,6 +1,11 @@ import type { PaginatedDocs } from '../../../database/types.js' import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js' +import type { + Document, + PayloadRequestWithData, + RequestContext, + Where, +} from '../../../types/index.js' import type { TypeWithVersion } from '../../../versions/types.js' import { APIError } from '../../../errors/index.js' @@ -20,7 +25,7 @@ export type Options = { locale?: 'all' | GeneratedTypes['locale'] overrideAccess?: boolean page?: number - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean sort?: string user?: Document diff --git a/packages/payload/src/collections/operations/local/restoreVersion.ts b/packages/payload/src/collections/operations/local/restoreVersion.ts index d1cdefa5e5..3a6d884ade 100644 --- a/packages/payload/src/collections/operations/local/restoreVersion.ts +++ b/packages/payload/src/collections/operations/local/restoreVersion.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Document, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -17,7 +17,7 @@ export type Options = { id: string locale?: GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/local/update.ts b/packages/payload/src/collections/operations/local/update.ts index 1f1248bedc..514b7bfe47 100644 --- a/packages/payload/src/collections/operations/local/update.ts +++ b/packages/payload/src/collections/operations/local/update.ts @@ -1,7 +1,12 @@ import type { DeepPartial } from 'ts-essentials' import type { GeneratedTypes, Payload } from '../../../index.js' -import type { Document, PayloadRequest, RequestContext, Where } from '../../../types/index.js' +import type { + Document, + PayloadRequestWithData, + RequestContext, + Where, +} from '../../../types/index.js' import type { File } from '../../../uploads/types.js' import type { BulkOperationResult } from '../../config/types.js' @@ -27,7 +32,7 @@ export type BaseOptions = { locale?: GeneratedTypes['locale'] overrideAccess?: boolean overwriteExistingFiles?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean user?: Document } diff --git a/packages/payload/src/collections/operations/restoreVersion.ts b/packages/payload/src/collections/operations/restoreVersion.ts index de8f357d89..bcb05004f2 100644 --- a/packages/payload/src/collections/operations/restoreVersion.ts +++ b/packages/payload/src/collections/operations/restoreVersion.ts @@ -2,7 +2,7 @@ import httpStatus from 'http-status' import type { FindOneArgs } from '../../database/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Collection, TypeWithID } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -23,7 +23,7 @@ export type Arguments = { disableErrors?: boolean id: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/collections/operations/update.ts b/packages/payload/src/collections/operations/update.ts index c73d0c673d..0a2ec8f55b 100644 --- a/packages/payload/src/collections/operations/update.ts +++ b/packages/payload/src/collections/operations/update.ts @@ -4,7 +4,7 @@ import httpStatus from 'http-status' import type { AccessResult } from '../../config/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { BulkOperationResult, Collection } from '../config/types.js' import type { CreateUpdateType } from './create.js' @@ -36,7 +36,7 @@ export type Arguments = { draft?: boolean overrideAccess?: boolean overwriteExistingFiles?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean where: Where } diff --git a/packages/payload/src/collections/operations/updateByID.ts b/packages/payload/src/collections/operations/updateByID.ts index c57bd47ac7..5fbe725ced 100644 --- a/packages/payload/src/collections/operations/updateByID.ts +++ b/packages/payload/src/collections/operations/updateByID.ts @@ -4,7 +4,7 @@ import httpStatus from 'http-status' import type { FindOneArgs } from '../../database/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { Collection } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -37,7 +37,7 @@ export type Arguments id: number | string overrideAccess?: boolean overwriteExistingFiles?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/collections/operations/utils.ts b/packages/payload/src/collections/operations/utils.ts index a4e1853565..1804a1e2d8 100644 --- a/packages/payload/src/collections/operations/utils.ts +++ b/packages/payload/src/collections/operations/utils.ts @@ -1,7 +1,7 @@ import type { forgotPasswordOperation } from '../../auth/operations/forgotPassword.js' import type { loginOperation } from '../../auth/operations/login.js' import type { refreshOperation } from '../../auth/operations/refresh.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { AfterOperationHook, SanitizedCollectionConfig, TypeWithID } from '../config/types.js' import type { countOperation } from './count.js' import type { createOperation } from './create.js' @@ -28,7 +28,7 @@ export type AfterOperationMap = { export type AfterOperationArg = { /** The collection which this hook is being run on */ collection: SanitizedCollectionConfig - req: PayloadRequest + req: PayloadRequestWithData } & ( | { args: Parameters['count']>[0] diff --git a/packages/payload/src/config/types.ts b/packages/payload/src/config/types.ts index 62050605fd..3fe41e05c8 100644 --- a/packages/payload/src/config/types.ts +++ b/packages/payload/src/config/types.ts @@ -19,7 +19,7 @@ import type { DatabaseAdapterResult } from '../database/types.js' import type { EmailAdapter, SendEmailOptions } from '../email/types.js' import type { GlobalConfig, Globals, SanitizedGlobalConfig } from '../globals/config/types.js' import type { Payload } from '../index.js' -import type { PayloadRequest, Where } from '../types/index.js' +import type { PayloadRequest, PayloadRequestWithData, Where } from '../types/index.js' import type { PayloadLogger } from '../utilities/logger.js' export type BinScriptConfig = { @@ -69,7 +69,7 @@ export type ServerOnlyLivePreviewProperties = keyof Pick = { /** If true, the request is for a static file */ isReadingStaticFile?: boolean /** The original request that requires an access check */ - req: PayloadRequest + req: PayloadRequestWithData } /** diff --git a/packages/payload/src/database/migrations/migrate.ts b/packages/payload/src/database/migrations/migrate.ts index 505345b6a8..a4ef0ccb3d 100644 --- a/packages/payload/src/database/migrations/migrate.ts +++ b/packages/payload/src/database/migrations/migrate.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { BaseDatabaseAdapter } from '../types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -27,7 +27,7 @@ export async function migrate(this: BaseDatabaseAdapter): Promise { } const start = Date.now() - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData payload.logger.info({ msg: `Migrating: ${migration.name}` }) diff --git a/packages/payload/src/database/migrations/migrateDown.ts b/packages/payload/src/database/migrations/migrateDown.ts index d7f1210256..e3c34a17fd 100644 --- a/packages/payload/src/database/migrations/migrateDown.ts +++ b/packages/payload/src/database/migrations/migrateDown.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { BaseDatabaseAdapter } from '../types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -34,7 +34,7 @@ export async function migrateDown(this: BaseDatabaseAdapter): Promise { } const start = Date.now() - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData try { payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` }) diff --git a/packages/payload/src/database/migrations/migrateRefresh.ts b/packages/payload/src/database/migrations/migrateRefresh.ts index 363b31fdea..10b986ab21 100644 --- a/packages/payload/src/database/migrations/migrateRefresh.ts +++ b/packages/payload/src/database/migrations/migrateRefresh.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { BaseDatabaseAdapter } from '../types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -28,7 +28,7 @@ export async function migrateRefresh(this: BaseDatabaseAdapter) { msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`, }) - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData // Reverse order of migrations to rollback existingMigrations.reverse() diff --git a/packages/payload/src/database/migrations/migrateReset.ts b/packages/payload/src/database/migrations/migrateReset.ts index 6a40bb1d02..a2949bd56f 100644 --- a/packages/payload/src/database/migrations/migrateReset.ts +++ b/packages/payload/src/database/migrations/migrateReset.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-syntax, no-await-in-loop */ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { BaseDatabaseAdapter } from '../types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -19,7 +19,7 @@ export async function migrateReset(this: BaseDatabaseAdapter): Promise { return } - const req = { payload } as PayloadRequest + const req = { payload } as PayloadRequestWithData // Rollback all migrations in order for (const migration of migrationFiles) { diff --git a/packages/payload/src/database/queryValidation/validateQueryPaths.ts b/packages/payload/src/database/queryValidation/validateQueryPaths.ts index 67de3d4f22..148fa967a2 100644 --- a/packages/payload/src/database/queryValidation/validateQueryPaths.ts +++ b/packages/payload/src/database/queryValidation/validateQueryPaths.ts @@ -3,7 +3,7 @@ import type { SanitizedCollectionConfig } from '../../collections/config/types.j import type { Field, FieldAffectingData } from '../../fields/config/types.js' import type { SanitizedGlobalConfig } from '../../globals/config/types.js' /* eslint-disable no-await-in-loop */ -import type { Operator, PayloadRequest, Where, WhereField } from '../../types/index.js' +import type { Operator, PayloadRequestWithData, Where, WhereField } from '../../types/index.js' import type { EntityPolicies } from './types.js' import QueryError from '../../errors/QueryError.js' @@ -16,7 +16,7 @@ type Args = { errors?: { path: string }[] overrideAccess: boolean policies?: EntityPolicies - req: PayloadRequest + req: PayloadRequestWithData versionFields?: Field[] where: Where } & ( diff --git a/packages/payload/src/database/queryValidation/validateSearchParams.ts b/packages/payload/src/database/queryValidation/validateSearchParams.ts index 6709a6a915..f7ffa529b4 100644 --- a/packages/payload/src/database/queryValidation/validateSearchParams.ts +++ b/packages/payload/src/database/queryValidation/validateSearchParams.ts @@ -1,7 +1,7 @@ import type { SanitizedCollectionConfig } from '../../collections/config/types.js' import type { Field } from '../../fields/config/types.js' import type { SanitizedGlobalConfig } from '../../globals/config/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { EntityPolicies, PathToQuery } from './types.js' import { fieldAffectsData } from '../../fields/config/types.js' @@ -19,7 +19,7 @@ type Args = { overrideAccess: boolean path: string policies: EntityPolicies - req: PayloadRequest + req: PayloadRequestWithData val: unknown versionFields?: Field[] } diff --git a/packages/payload/src/database/types.ts b/packages/payload/src/database/types.ts index 3a5bce4a83..5c1f68c6d6 100644 --- a/packages/payload/src/database/types.ts +++ b/packages/payload/src/database/types.ts @@ -1,6 +1,6 @@ import type { TypeWithID } from '../collections/config/types.js' import type { TypeWithID as GlobalsTypeWithID } from '../globals/config/types.js' -import type { Document, Payload, PayloadRequest, Where } from '../types/index.js' +import type { Document, Payload, PayloadRequestWithData, Where } from '../types/index.js' import type { TypeWithVersion } from '../versions/types.js' export type { TypeWithVersion } @@ -170,7 +170,7 @@ export type QueryDraftsArgs = { locale?: string page?: number pagination?: boolean - req: PayloadRequest + req: PayloadRequestWithData sort?: string where?: Where } @@ -180,7 +180,7 @@ export type QueryDrafts = (args: QueryDraftsArgs) => Promise(args: FindArgs) => Promise> export type CountArgs = { collection: string locale?: string - req: PayloadRequest + req: PayloadRequestWithData where?: Where } @@ -216,7 +216,7 @@ type BaseVersionArgs = { locale?: string page?: number pagination?: boolean - req: PayloadRequest + req: PayloadRequestWithData skip?: number sort?: string versions?: boolean @@ -237,7 +237,7 @@ export type FindGlobalVersionsArgs = BaseVersionArgs & { export type FindGlobalArgs = { locale?: string - req: PayloadRequest + req: PayloadRequestWithData slug: string where?: Where } @@ -245,7 +245,7 @@ export type FindGlobalArgs = { export type UpdateGlobalVersionArgs = { global: string locale?: string - req: PayloadRequest + req: PayloadRequestWithData versionData: T } & ( | { @@ -266,7 +266,7 @@ export type FindGlobal = (args: FindGlobalArg export type CreateGlobalArgs = { data: T - req: PayloadRequest + req: PayloadRequestWithData slug: string } export type CreateGlobal = ( @@ -275,7 +275,7 @@ export type CreateGlobal = ( export type UpdateGlobalArgs = { data: T - req: PayloadRequest + req: PayloadRequestWithData slug: string } export type UpdateGlobal = ( @@ -290,7 +290,7 @@ export type FindGlobalVersions = ( export type DeleteVersionsArgs = { collection: string locale?: string - req: PayloadRequest + req: PayloadRequestWithData sort?: { [key: string]: string } @@ -303,7 +303,7 @@ export type CreateVersionArgs = { createdAt: string /** ID of the parent document for which the version should be created for */ parent: number | string - req: PayloadRequest + req: PayloadRequestWithData updatedAt: string versionData: T } @@ -318,7 +318,7 @@ export type CreateGlobalVersionArgs = { globalSlug: string /** ID of the parent document for which the version should be created for */ parent: number | string - req: PayloadRequest + req: PayloadRequestWithData updatedAt: string versionData: T } @@ -332,7 +332,7 @@ export type DeleteVersions = (args: DeleteVersionsArgs) => Promise export type UpdateVersionArgs = { collection: string locale?: string - req: PayloadRequest + req: PayloadRequestWithData versionData: T } & ( | { @@ -354,7 +354,7 @@ export type CreateArgs = { data: Record draft?: boolean locale?: string - req: PayloadRequest + req: PayloadRequestWithData } export type Create = (args: CreateArgs) => Promise @@ -364,7 +364,7 @@ export type UpdateOneArgs = { data: Record draft?: boolean locale?: string - req: PayloadRequest + req: PayloadRequestWithData } & ( | { id: number | string @@ -380,7 +380,7 @@ export type UpdateOne = (args: UpdateOneArgs) => Promise export type DeleteOneArgs = { collection: string - req: PayloadRequest + req: PayloadRequestWithData where: Where } @@ -388,15 +388,15 @@ export type DeleteOne = (args: DeleteOneArgs) => Promise export type DeleteManyArgs = { collection: string - req: PayloadRequest + req: PayloadRequestWithData where: Where } export type DeleteMany = (args: DeleteManyArgs) => Promise export type Migration = MigrationData & { - down: ({ payload, req }: { payload: Payload; req: PayloadRequest }) => Promise - up: ({ payload, req }: { payload: Payload; req: PayloadRequest }) => Promise + down: ({ payload, req }: { payload: Payload; req: PayloadRequestWithData }) => Promise + up: ({ payload, req }: { payload: Payload; req: PayloadRequestWithData }) => Promise } export type MigrationData = { diff --git a/packages/payload/src/fields/config/types.ts b/packages/payload/src/fields/config/types.ts index 4d2680e826..c1ef6ee82f 100644 --- a/packages/payload/src/fields/config/types.ts +++ b/packages/payload/src/fields/config/types.ts @@ -20,7 +20,7 @@ import type { CustomComponent, LabelFunction } from '../../config/types.js' import type { DBIdentifierName } from '../../database/types.js' import type { SanitizedGlobalConfig } from '../../globals/config/types.js' import type { DocumentPreferences } from '../../preferences/types.js' -import type { Operation, PayloadRequest, RequestContext, Where } from '../../types/index.js' +import type { Operation, PayloadRequestWithData, RequestContext, Where } from '../../types/index.js' import type { ClientFieldConfig } from './client.js' export type FieldHookArgs = { @@ -47,7 +47,7 @@ export type FieldHookArgs = { /** The previous value of the field, before changes, only in `beforeChange`, `afterChange` and `beforeValidate` hooks. */ previousValue?: P /** The Express request object. It is mocked for Local API operations. */ - req: PayloadRequest + req: PayloadRequestWithData /** The sibling data passed to a field that the hook is running against. */ siblingData: Partial /** The value of the field. */ @@ -72,7 +72,7 @@ export type FieldAccess = (args: { */ id?: number | string /** The `payload` object to interface with the payload API */ - req: PayloadRequest + req: PayloadRequestWithData /** * Immediately adjacent data to this field. For example, if this is a `group` field, then `siblingData` will be the other fields within the group. */ @@ -82,7 +82,7 @@ export type FieldAccess = (args: { export type Condition = ( data: Partial, siblingData: Partial

, - { user }: { user: PayloadRequest['user'] }, + { user }: { user: PayloadRequestWithData['user'] }, ) => boolean export type FilterOptionsProps = { @@ -105,7 +105,7 @@ export type FilterOptionsProps = { /** * An object containing the currently authenticated user. */ - user: Partial + user: Partial } export type FilterOptions = @@ -147,7 +147,7 @@ export type BaseValidateOptions = { id?: number | string operation?: Operation preferences: DocumentPreferences - req: PayloadRequest + req: PayloadRequestWithData siblingData: Partial } diff --git a/packages/payload/src/fields/getDefaultValue.ts b/packages/payload/src/fields/getDefaultValue.ts index c33c6e07c5..b11539f7a6 100644 --- a/packages/payload/src/fields/getDefaultValue.ts +++ b/packages/payload/src/fields/getDefaultValue.ts @@ -1,12 +1,12 @@ import type { User } from '../auth/index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import { deepCopyObject } from '../utilities/deepCopyObject.js' type Args = { defaultValue: unknown locale: string | undefined - user: PayloadRequest['user'] + user: PayloadRequestWithData['user'] value?: unknown } diff --git a/packages/payload/src/fields/hooks/afterChange/index.ts b/packages/payload/src/fields/hooks/afterChange/index.ts index 86b7153f5a..4e49f5ee02 100644 --- a/packages/payload/src/fields/hooks/afterChange/index.ts +++ b/packages/payload/src/fields/hooks/afterChange/index.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { deepCopyObject } from '../../../utilities/deepCopyObject.js' import { traverseFields } from './traverseFields.js' @@ -13,7 +13,7 @@ type Args = { global: SanitizedGlobalConfig | null operation: 'create' | 'update' previousDoc: Record | T - req: PayloadRequest + req: PayloadRequestWithData } /** diff --git a/packages/payload/src/fields/hooks/afterChange/promise.ts b/packages/payload/src/fields/hooks/afterChange/promise.ts index c1bb43970f..a329842449 100644 --- a/packages/payload/src/fields/hooks/afterChange/promise.ts +++ b/packages/payload/src/fields/hooks/afterChange/promise.ts @@ -1,7 +1,7 @@ /* eslint-disable no-param-reassign */ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { fieldAffectsData, tabHasName } from '../../config/types.js' @@ -17,7 +17,7 @@ type Args = { operation: 'create' | 'update' previousDoc: Record previousSiblingDoc: Record - req: PayloadRequest + req: PayloadRequestWithData siblingData: Record siblingDoc: Record } diff --git a/packages/payload/src/fields/hooks/afterChange/traverseFields.ts b/packages/payload/src/fields/hooks/afterChange/traverseFields.ts index a17eef87d9..30b5c94025 100644 --- a/packages/payload/src/fields/hooks/afterChange/traverseFields.ts +++ b/packages/payload/src/fields/hooks/afterChange/traverseFields.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { promise } from './promise.js' @@ -15,7 +15,7 @@ type Args = { operation: 'create' | 'update' previousDoc: Record previousSiblingDoc: Record - req: PayloadRequest + req: PayloadRequestWithData siblingData: Record siblingDoc: Record } diff --git a/packages/payload/src/fields/hooks/afterRead/index.ts b/packages/payload/src/fields/hooks/afterRead/index.ts index e21464567b..e55544f0f4 100644 --- a/packages/payload/src/fields/hooks/afterRead/index.ts +++ b/packages/payload/src/fields/hooks/afterRead/index.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { deepCopyObject } from '../../../utilities/deepCopyObject.js' import { traverseFields } from './traverseFields.js' @@ -17,7 +17,7 @@ type Args = { global: SanitizedGlobalConfig | null locale: string overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean } diff --git a/packages/payload/src/fields/hooks/afterRead/promise.ts b/packages/payload/src/fields/hooks/afterRead/promise.ts index 6979b3c64e..581eb72240 100644 --- a/packages/payload/src/fields/hooks/afterRead/promise.ts +++ b/packages/payload/src/fields/hooks/afterRead/promise.ts @@ -2,7 +2,7 @@ import type { RichTextAdapter } from '../../../admin/types.js' import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { fieldAffectsData, tabHasName } from '../../config/types.js' @@ -28,7 +28,7 @@ type Args = { locale: null | string overrideAccess: boolean populationPromises: Promise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean siblingDoc: Record triggerAccessControl?: boolean diff --git a/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts b/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts index 4fa8237f0d..3004b251a6 100644 --- a/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts +++ b/packages/payload/src/fields/hooks/afterRead/relationshipPopulationPromise.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import type { RelationshipField, UploadField } from '../../config/types.js' import { fieldHasMaxDepth, fieldSupportsMany } from '../../config/types.js' @@ -14,7 +14,7 @@ type PopulateArgs = { key?: string locale: null | string overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean } @@ -98,7 +98,7 @@ type PromiseArgs = { field: RelationshipField | UploadField locale: null | string overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean siblingDoc: Record } diff --git a/packages/payload/src/fields/hooks/afterRead/traverseFields.ts b/packages/payload/src/fields/hooks/afterRead/traverseFields.ts index a83ea131ca..0cae86486a 100644 --- a/packages/payload/src/fields/hooks/afterRead/traverseFields.ts +++ b/packages/payload/src/fields/hooks/afterRead/traverseFields.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { promise } from './promise.js' @@ -23,7 +23,7 @@ type Args = { locale: null | string overrideAccess: boolean populationPromises: Promise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean siblingDoc: Record triggerAccessControl?: boolean diff --git a/packages/payload/src/fields/hooks/beforeChange/index.ts b/packages/payload/src/fields/hooks/beforeChange/index.ts index a825c58141..8975b2f321 100644 --- a/packages/payload/src/fields/hooks/beforeChange/index.ts +++ b/packages/payload/src/fields/hooks/beforeChange/index.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Operation, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { ValidationError } from '../../../errors/index.js' import { deepCopyObject } from '../../../utilities/deepCopyObject.js' @@ -16,7 +16,7 @@ type Args = { global: SanitizedGlobalConfig | null id?: number | string operation: Operation - req: PayloadRequest + req: PayloadRequestWithData skipValidation?: boolean } diff --git a/packages/payload/src/fields/hooks/beforeChange/promise.ts b/packages/payload/src/fields/hooks/beforeChange/promise.ts index 540d5e028e..ea74799888 100644 --- a/packages/payload/src/fields/hooks/beforeChange/promise.ts +++ b/packages/payload/src/fields/hooks/beforeChange/promise.ts @@ -2,7 +2,7 @@ import merge from 'deepmerge' import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Operation, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, FieldHookArgs, TabAsField, ValidateOptions } from '../../config/types.js' import { fieldAffectsData, tabHasName } from '../../config/types.js' @@ -24,7 +24,7 @@ type Args = { mergeLocaleActions: (() => Promise)[] operation: Operation path: string - req: PayloadRequest + req: PayloadRequestWithData siblingData: Record siblingDoc: Record siblingDocWithLocales?: Record diff --git a/packages/payload/src/fields/hooks/beforeChange/traverseFields.ts b/packages/payload/src/fields/hooks/beforeChange/traverseFields.ts index 90bb576ce8..41944b59f3 100644 --- a/packages/payload/src/fields/hooks/beforeChange/traverseFields.ts +++ b/packages/payload/src/fields/hooks/beforeChange/traverseFields.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js' +import type { Operation, PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { promise } from './promise.js' @@ -25,7 +25,7 @@ type Args = { mergeLocaleActions: (() => Promise)[] operation: Operation path: string - req: PayloadRequest + req: PayloadRequestWithData siblingData: Record /** * The original siblingData (not modified by any hooks) diff --git a/packages/payload/src/fields/hooks/beforeValidate/index.ts b/packages/payload/src/fields/hooks/beforeValidate/index.ts index 0b2877682b..df9c0be6b4 100644 --- a/packages/payload/src/fields/hooks/beforeValidate/index.ts +++ b/packages/payload/src/fields/hooks/beforeValidate/index.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import { deepCopyObject } from '../../../utilities/deepCopyObject.js' import { traverseFields } from './traverseFields.js' @@ -15,7 +15,7 @@ type Args = { id?: number | string operation: 'create' | 'update' overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData } /** diff --git a/packages/payload/src/fields/hooks/beforeValidate/promise.ts b/packages/payload/src/fields/hooks/beforeValidate/promise.ts index 00419c66c1..d8a8433f95 100644 --- a/packages/payload/src/fields/hooks/beforeValidate/promise.ts +++ b/packages/payload/src/fields/hooks/beforeValidate/promise.ts @@ -1,7 +1,7 @@ /* eslint-disable no-param-reassign */ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { fieldAffectsData, tabHasName, valueIsValueWithRelation } from '../../config/types.js' @@ -23,7 +23,7 @@ type Args = { id?: number | string operation: 'create' | 'update' overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData siblingData: Record /** * The original siblingData (not modified by any hooks) diff --git a/packages/payload/src/fields/hooks/beforeValidate/traverseFields.ts b/packages/payload/src/fields/hooks/beforeValidate/traverseFields.ts index 9601a10162..a25e4c35f3 100644 --- a/packages/payload/src/fields/hooks/beforeValidate/traverseFields.ts +++ b/packages/payload/src/fields/hooks/beforeValidate/traverseFields.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../../../collections/config/types.js' import type { SanitizedGlobalConfig } from '../../../globals/config/types.js' -import type { PayloadRequest, RequestContext } from '../../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../../types/index.js' import type { Field, TabAsField } from '../../config/types.js' import { promise } from './promise.js' @@ -18,7 +18,7 @@ type Args = { id?: number | string operation: 'create' | 'update' overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData siblingData: Record /** * The original siblingData (not modified by any hooks) diff --git a/packages/payload/src/globals/config/types.ts b/packages/payload/src/globals/config/types.ts index 78fc9ce558..b501694f7f 100644 --- a/packages/payload/src/globals/config/types.ts +++ b/packages/payload/src/globals/config/types.ts @@ -18,7 +18,7 @@ import type { } from '../../config/types.js' import type { DBIdentifierName } from '../../database/types.js' import type { Field } from '../../fields/config/types.js' -import type { PayloadRequest, RequestContext } from '../../types/index.js' +import type { PayloadRequestWithData, RequestContext } from '../../types/index.js' import type { Where } from '../../types/index.js' import type { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types.js' @@ -32,7 +32,7 @@ export type BeforeValidateHook = (args: { /** The global which this hook is being run on */ global: SanitizedGlobalConfig originalDoc?: any - req: PayloadRequest + req: PayloadRequestWithData }) => any export type BeforeChangeHook = (args: { @@ -41,7 +41,7 @@ export type BeforeChangeHook = (args: { /** The global which this hook is being run on */ global: SanitizedGlobalConfig originalDoc?: any - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterChangeHook = (args: { @@ -50,7 +50,7 @@ export type AfterChangeHook = (args: { /** The global which this hook is being run on */ global: SanitizedGlobalConfig previousDoc: any - req: PayloadRequest + req: PayloadRequestWithData }) => any export type BeforeReadHook = (args: { @@ -58,7 +58,7 @@ export type BeforeReadHook = (args: { doc: any /** The global which this hook is being run on */ global: SanitizedGlobalConfig - req: PayloadRequest + req: PayloadRequestWithData }) => any export type AfterReadHook = (args: { @@ -68,7 +68,7 @@ export type AfterReadHook = (args: { /** The global which this hook is being run on */ global: SanitizedGlobalConfig query?: Where - req: PayloadRequest + req: PayloadRequestWithData }) => any export type GlobalAdminOptions = { @@ -119,7 +119,7 @@ export type GlobalAdminOptions = { /** * Exclude the global from the admin nav and routes */ - hidden?: ((args: { user: PayloadRequest['user'] }) => boolean) | boolean + hidden?: ((args: { user: PayloadRequestWithData['user'] }) => boolean) | boolean /** * Hide the API URL within the Edit view */ diff --git a/packages/payload/src/globals/operations/docAccess.ts b/packages/payload/src/globals/operations/docAccess.ts index 7d603ae536..bf58c12bac 100644 --- a/packages/payload/src/globals/operations/docAccess.ts +++ b/packages/payload/src/globals/operations/docAccess.ts @@ -1,5 +1,5 @@ import type { GlobalPermission } from '../../auth/index.js' -import type { AllOperations, PayloadRequest } from '../../types/index.js' +import type { AllOperations, PayloadRequestWithData } from '../../types/index.js' import type { SanitizedGlobalConfig } from '../config/types.js' import { commitTransaction } from '../../utilities/commitTransaction.js' @@ -9,7 +9,7 @@ import { killTransaction } from '../../utilities/killTransaction.js' type Arguments = { globalConfig: SanitizedGlobalConfig - req: PayloadRequest + req: PayloadRequestWithData } export const docAccessOperation = async (args: Arguments): Promise => { diff --git a/packages/payload/src/globals/operations/findOne.ts b/packages/payload/src/globals/operations/findOne.ts index c18b6ab345..a9da608ed2 100644 --- a/packages/payload/src/globals/operations/findOne.ts +++ b/packages/payload/src/globals/operations/findOne.ts @@ -1,6 +1,6 @@ import type { AccessResult } from '../../config/types.js' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { SanitizedGlobalConfig } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -15,7 +15,7 @@ type Args = { draft?: boolean globalConfig: SanitizedGlobalConfig overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean slug: string } diff --git a/packages/payload/src/globals/operations/findVersionByID.ts b/packages/payload/src/globals/operations/findVersionByID.ts index 0ccc756cf8..050d359613 100644 --- a/packages/payload/src/globals/operations/findVersionByID.ts +++ b/packages/payload/src/globals/operations/findVersionByID.ts @@ -1,6 +1,6 @@ /* eslint-disable no-underscore-dangle */ import type { FindGlobalVersionsArgs } from '../../database/types.js' -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { TypeWithVersion } from '../../versions/types.js' import type { SanitizedGlobalConfig } from '../config/types.js' @@ -19,7 +19,7 @@ export type Arguments = { globalConfig: SanitizedGlobalConfig id: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/globals/operations/findVersions.ts b/packages/payload/src/globals/operations/findVersions.ts index b776e6a704..1c75f9032d 100644 --- a/packages/payload/src/globals/operations/findVersions.ts +++ b/packages/payload/src/globals/operations/findVersions.ts @@ -1,5 +1,5 @@ import type { PaginatedDocs } from '../../database/types.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { TypeWithVersion } from '../../versions/types.js' import type { SanitizedGlobalConfig } from '../config/types.js' @@ -19,7 +19,7 @@ export type Arguments = { limit?: number overrideAccess?: boolean page?: number - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean sort?: string where?: Where diff --git a/packages/payload/src/globals/operations/local/findOne.ts b/packages/payload/src/globals/operations/local/findOne.ts index 9c86d5cad2..3dfc1275e1 100644 --- a/packages/payload/src/globals/operations/local/findOne.ts +++ b/packages/payload/src/globals/operations/local/findOne.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js' -import type { Document, PayloadRequest } from '../../../types/index.js' +import type { Document, PayloadRequestWithData } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -12,7 +12,7 @@ export type Options = { fallbackLocale?: GeneratedTypes['locale'] locale?: 'all' | GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean slug: T user?: Document diff --git a/packages/payload/src/globals/operations/local/findVersionByID.ts b/packages/payload/src/globals/operations/local/findVersionByID.ts index 5944e2de15..10d8224169 100644 --- a/packages/payload/src/globals/operations/local/findVersionByID.ts +++ b/packages/payload/src/globals/operations/local/findVersionByID.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js' -import type { Document, PayloadRequest } from '../../../types/index.js' +import type { Document, PayloadRequestWithData } from '../../../types/index.js' import type { TypeWithVersion } from '../../../versions/types.js' import { APIError } from '../../../errors/index.js' @@ -14,7 +14,7 @@ export type Options = { id: string locale?: 'all' | GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean slug: T user?: Document diff --git a/packages/payload/src/globals/operations/local/findVersions.ts b/packages/payload/src/globals/operations/local/findVersions.ts index 30dbdbdc5a..c2d75858cc 100644 --- a/packages/payload/src/globals/operations/local/findVersions.ts +++ b/packages/payload/src/globals/operations/local/findVersions.ts @@ -1,6 +1,6 @@ import type { PaginatedDocs } from '../../../database/types.js' import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js' -import type { Document, PayloadRequest, Where } from '../../../types/index.js' +import type { Document, PayloadRequestWithData, Where } from '../../../types/index.js' import type { TypeWithVersion } from '../../../versions/types.js' import { APIError } from '../../../errors/index.js' @@ -15,7 +15,7 @@ export type Options = { locale?: 'all' | GeneratedTypes['locale'] overrideAccess?: boolean page?: number - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean slug: T sort?: string diff --git a/packages/payload/src/globals/operations/local/restoreVersion.ts b/packages/payload/src/globals/operations/local/restoreVersion.ts index 29d933065e..189d156d19 100644 --- a/packages/payload/src/globals/operations/local/restoreVersion.ts +++ b/packages/payload/src/globals/operations/local/restoreVersion.ts @@ -1,5 +1,5 @@ import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js' -import type { Document, PayloadRequest } from '../../../types/index.js' +import type { Document, PayloadRequestWithData } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -12,7 +12,7 @@ export type Options = { id: string locale?: GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean slug: string user?: Document diff --git a/packages/payload/src/globals/operations/local/update.ts b/packages/payload/src/globals/operations/local/update.ts index 0cc8df0a20..d23bac769e 100644 --- a/packages/payload/src/globals/operations/local/update.ts +++ b/packages/payload/src/globals/operations/local/update.ts @@ -1,7 +1,7 @@ import type { DeepPartial } from 'ts-essentials' import type { GeneratedTypes, Payload, RequestContext } from '../../../index.js' -import type { Document, PayloadRequest } from '../../../types/index.js' +import type { Document, PayloadRequestWithData } from '../../../types/index.js' import { APIError } from '../../../errors/index.js' import { createLocalReq } from '../../../utilities/createLocalReq.js' @@ -15,7 +15,7 @@ export type Options = { fallbackLocale?: GeneratedTypes['locale'] locale?: GeneratedTypes['locale'] overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean slug: TSlug user?: Document diff --git a/packages/payload/src/globals/operations/restoreVersion.ts b/packages/payload/src/globals/operations/restoreVersion.ts index f36076395c..24bfd5b71b 100644 --- a/packages/payload/src/globals/operations/restoreVersion.ts +++ b/packages/payload/src/globals/operations/restoreVersion.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from '../../types/index.js' +import type { PayloadRequestWithData } from '../../types/index.js' import type { TypeWithVersion } from '../../versions/types.js' import type { SanitizedGlobalConfig } from '../config/types.js' @@ -15,7 +15,7 @@ export type Arguments = { globalConfig: SanitizedGlobalConfig id: number | string overrideAccess?: boolean - req?: PayloadRequest + req?: PayloadRequestWithData showHiddenFields?: boolean } diff --git a/packages/payload/src/globals/operations/update.ts b/packages/payload/src/globals/operations/update.ts index 9f0e1dd226..15c6ca3a50 100644 --- a/packages/payload/src/globals/operations/update.ts +++ b/packages/payload/src/globals/operations/update.ts @@ -1,7 +1,7 @@ import type { DeepPartial } from 'ts-essentials' import type { GeneratedTypes } from '../../index.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import type { SanitizedGlobalConfig } from '../config/types.js' import executeAccess from '../../auth/executeAccess.js' @@ -22,7 +22,7 @@ type Args = { draft?: boolean globalConfig: SanitizedGlobalConfig overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields?: boolean slug: string } diff --git a/packages/payload/src/preferences/deleteUserPreferences.ts b/packages/payload/src/preferences/deleteUserPreferences.ts index 1bf2ee3a9e..b77081edfd 100644 --- a/packages/payload/src/preferences/deleteUserPreferences.ts +++ b/packages/payload/src/preferences/deleteUserPreferences.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { Payload } from '../index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' type Args = { collectionConfig: SanitizedCollectionConfig @@ -9,7 +9,7 @@ type Args = { */ ids: (number | string)[] payload: Payload - req: PayloadRequest + req: PayloadRequestWithData } export const deleteUserPreferences = async ({ collectionConfig, ids, payload, req }: Args) => { if (collectionConfig.auth) { diff --git a/packages/payload/src/preferences/requestHandlers/delete.ts b/packages/payload/src/preferences/requestHandlers/delete.ts index 9733fe4acf..b90c11ae6b 100644 --- a/packages/payload/src/preferences/requestHandlers/delete.ts +++ b/packages/payload/src/preferences/requestHandlers/delete.ts @@ -1,35 +1,38 @@ import httpStatus from 'http-status' import type { PayloadHandler } from '../../config/types.js' +import type { PayloadRequestWithData } from '../../types/index.js' import deleteOperation from '../operations/delete.js' -export const deleteHandler: PayloadHandler = async (req): Promise => { +export const deleteHandler: PayloadHandler = async (incomingReq): Promise => { // We cannot import the addDataAndFileToRequest utility here from the 'next' package because of dependency issues // However that utility should be used where possible instead of manually appending the data let data try { - data = await req.json() + data = await incomingReq.json() } catch (error) { data = {} } + const reqWithData: PayloadRequestWithData = incomingReq + if (data) { - req.data = data - req.json = () => Promise.resolve(data) + reqWithData.data = data + reqWithData.json = () => Promise.resolve(data) } const result = await deleteOperation({ - key: req.routeParams?.key as string, - req, - user: req.user, + key: reqWithData.routeParams?.key as string, + req: reqWithData, + user: reqWithData.user, }) return Response.json( { ...result, - message: req.t('general:deletedSuccessfully'), + message: reqWithData.t('general:deletedSuccessfully'), }, { status: httpStatus.OK, diff --git a/packages/payload/src/preferences/requestHandlers/findOne.ts b/packages/payload/src/preferences/requestHandlers/findOne.ts index 39cde36a5e..887fa519f7 100644 --- a/packages/payload/src/preferences/requestHandlers/findOne.ts +++ b/packages/payload/src/preferences/requestHandlers/findOne.ts @@ -1,29 +1,32 @@ import httpStatus from 'http-status' import type { PayloadHandler } from '../../config/types.js' +import type { PayloadRequestWithData } from '../../types/index.js' import findOne from '../operations/findOne.js' -export const findByIDHandler: PayloadHandler = async (req): Promise => { +export const findByIDHandler: PayloadHandler = async (incomingReq): Promise => { // We cannot import the addDataAndFileToRequest utility here from the 'next' package because of dependency issues // However that utility should be used where possible instead of manually appending the data let data try { - data = await req.json() + data = await incomingReq.json() } catch (error) { data = {} } + const reqWithData: PayloadRequestWithData = incomingReq + if (data) { - req.data = data - req.json = () => Promise.resolve(data) + reqWithData.data = data + reqWithData.json = () => Promise.resolve(data) } const result = await findOne({ - key: req.routeParams?.key as string, - req, - user: req.user, + key: reqWithData.routeParams?.key as string, + req: reqWithData, + user: reqWithData.user, }) return Response.json( @@ -31,7 +34,7 @@ export const findByIDHandler: PayloadHandler = async (req): Promise => ...(result ? result : { - message: req.t('general:notFound'), + message: reqWithData.t('general:notFound'), value: null, }), }, diff --git a/packages/payload/src/preferences/requestHandlers/update.ts b/packages/payload/src/preferences/requestHandlers/update.ts index 8e08dbe451..6ee3388e43 100644 --- a/packages/payload/src/preferences/requestHandlers/update.ts +++ b/packages/payload/src/preferences/requestHandlers/update.ts @@ -1,38 +1,39 @@ import httpStatus from 'http-status' import type { PayloadHandler } from '../../config/types.js' +import type { PayloadRequestWithData } from '../../types/index.js' import update from '../operations/update.js' -export const updateHandler: PayloadHandler = async (req) => { +export const updateHandler: PayloadHandler = async (incomingReq) => { // We cannot import the addDataAndFileToRequest utility here from the 'next' package because of dependency issues // However that utility should be used where possible instead of manually appending the data let data try { - data = await req.json() + data = await incomingReq.json() } catch (error) { data = {} } + const reqWithData: PayloadRequestWithData = incomingReq + if (data) { - req.data = data - req.json = () => Promise.resolve(data) + reqWithData.data = data + reqWithData.json = () => Promise.resolve(data) } - const payloadRequest = req - const doc = await update({ - key: req.routeParams?.key as string, - req: payloadRequest, - user: payloadRequest?.user, - value: payloadRequest.data.value || payloadRequest.data, + key: reqWithData.routeParams?.key as string, + req: reqWithData, + user: reqWithData?.user, + value: reqWithData.data.value || reqWithData.data, }) return Response.json( { doc, - message: payloadRequest.t('general:updatedSuccessfully'), + message: reqWithData.t('general:updatedSuccessfully'), }, { status: httpStatus.OK, diff --git a/packages/payload/src/preferences/types.ts b/packages/payload/src/preferences/types.ts index b1819b961e..6e0c890a04 100644 --- a/packages/payload/src/preferences/types.ts +++ b/packages/payload/src/preferences/types.ts @@ -1,11 +1,11 @@ import type { User } from '../auth/index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' export type PreferenceRequest = { key: string overrideAccess?: boolean - req: PayloadRequest - user: PayloadRequest['user'] + req: PayloadRequestWithData + user: PayloadRequestWithData['user'] } export type PreferenceUpdateRequest = PreferenceRequest & { value: unknown } diff --git a/packages/payload/src/types/index.ts b/packages/payload/src/types/index.ts index a4740aef8e..285bb62e64 100644 --- a/packages/payload/src/types/index.ts +++ b/packages/payload/src/types/index.ts @@ -1,7 +1,6 @@ import type { I18n, TFunction } from '@payloadcms/translations' import type DataLoader from 'dataloader' -import type { User } from '../auth/types.js' import type { TypeWithID, TypeWithTimestamps } from '../collections/config/types.js' import type payload from '../index.js' import type { GeneratedTypes } from '../index.js' @@ -21,22 +20,10 @@ export type UploadEdits = { } } -export type CustomPayloadRequest = { +export type CustomPayloadRequestProperties = { context: RequestContext - /** Data from the request body */ - data?: Record /** The locale that should be used for a field when it is not translated to the requested locale */ fallbackLocale?: string - /** - * The files that were uploaded during this request - */ - file?: { - data: Buffer - mimetype: string - name: string - size: number - tempFilePath?: string - } i18n: I18n /** * The requested locale if specified @@ -79,9 +66,22 @@ export type CustomPayloadRequest = { URL, 'hash' | 'host' | 'href' | 'origin' | 'pathname' | 'port' | 'protocol' | 'search' | 'searchParams' > +export type PayloadRequestData = { + /** Data from the request body */ + data?: Record + /** The locale that should be used for a field when it is not translated to the requested locale */ + file?: { + data: Buffer + mimetype: string + name: string + size: number + tempFilePath?: string + } +} export type PayloadRequest = Partial & Required> & - CustomPayloadRequest + CustomPayloadRequestProperties +export type PayloadRequestWithData = PayloadRequest & PayloadRequestData export interface RequestContext { [key: string]: unknown } diff --git a/packages/payload/src/uploads/deleteAssociatedFiles.ts b/packages/payload/src/uploads/deleteAssociatedFiles.ts index 0cb8dbd58c..4363e51acb 100644 --- a/packages/payload/src/uploads/deleteAssociatedFiles.ts +++ b/packages/payload/src/uploads/deleteAssociatedFiles.ts @@ -2,7 +2,7 @@ import fs from 'fs' import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { SanitizedConfig } from '../config/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import type { FileData, FileToSave } from './types.js' import { ErrorDeletingFile } from '../errors/index.js' @@ -14,7 +14,7 @@ type Args = { doc: Record files?: FileToSave[] overrideDelete: boolean - req: PayloadRequest + req: PayloadRequestWithData } export const deleteAssociatedFiles: (args: Args) => Promise = async ({ diff --git a/packages/payload/src/uploads/docWithFilenameExists.ts b/packages/payload/src/uploads/docWithFilenameExists.ts index f7bff3cd0e..9755403057 100644 --- a/packages/payload/src/uploads/docWithFilenameExists.ts +++ b/packages/payload/src/uploads/docWithFilenameExists.ts @@ -1,10 +1,10 @@ -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' type Args = { collectionSlug: string filename: string path: string - req: PayloadRequest + req: PayloadRequestWithData } const docWithFilenameExists = async ({ collectionSlug, filename, req }: Args): Promise => { diff --git a/packages/payload/src/uploads/generateFileData.ts b/packages/payload/src/uploads/generateFileData.ts index e629440495..572eb87e0f 100644 --- a/packages/payload/src/uploads/generateFileData.ts +++ b/packages/payload/src/uploads/generateFileData.ts @@ -8,7 +8,7 @@ import sanitize from 'sanitize-filename' import type { Collection } from '../collections/config/types.js' import type { SanitizedConfig } from '../config/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import type { FileData, FileToSave, ProbedImageSize } from './types.js' import { FileUploadError, MissingFile } from '../errors/index.js' @@ -26,7 +26,7 @@ type Args = { config: SanitizedConfig data: T overwriteExistingFiles?: boolean - req: PayloadRequest + req: PayloadRequestWithData throwOnMissingFile?: boolean } diff --git a/packages/payload/src/uploads/getExternalFile.ts b/packages/payload/src/uploads/getExternalFile.ts index bb01d6e8b3..ea29de9bf9 100644 --- a/packages/payload/src/uploads/getExternalFile.ts +++ b/packages/payload/src/uploads/getExternalFile.ts @@ -1,11 +1,11 @@ -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import type { File, FileData, UploadConfig } from './types.js' import { APIError } from '../errors/index.js' type Args = { data: FileData - req: PayloadRequest + req: PayloadRequestWithData uploadConfig: UploadConfig } export const getExternalFile = async ({ data, req, uploadConfig }: Args): Promise => { diff --git a/packages/payload/src/uploads/getFileByPath.ts b/packages/payload/src/uploads/getFileByPath.ts index e28340365a..5a7c044d14 100644 --- a/packages/payload/src/uploads/getFileByPath.ts +++ b/packages/payload/src/uploads/getFileByPath.ts @@ -3,13 +3,13 @@ import fs from 'fs' import path from 'path' const { fromFile } = fileType -import type { CustomPayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' const mimeTypeEstimate = { svg: 'image/svg+xml', } -export const getFileByPath = async (filePath: string): Promise => { +export const getFileByPath = async (filePath: string): Promise => { if (typeof filePath === 'string') { const data = fs.readFileSync(filePath) const mimetype = fromFile(filePath) diff --git a/packages/payload/src/uploads/getImageSize.ts b/packages/payload/src/uploads/getImageSize.ts index 2313f54689..2545b8f0bc 100644 --- a/packages/payload/src/uploads/getImageSize.ts +++ b/packages/payload/src/uploads/getImageSize.ts @@ -2,7 +2,7 @@ import fs from 'fs' import sizeOfImport from 'image-size' import { promisify } from 'util' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import type { ProbedImageSize } from './types.js' import { temporaryFileTask } from './tempFile.js' @@ -10,7 +10,7 @@ import { temporaryFileTask } from './tempFile.js' const { imageSize } = sizeOfImport const imageSizePromise = promisify(imageSize) -export async function getImageSize(file: PayloadRequest['file']): Promise { +export async function getImageSize(file: PayloadRequestWithData['file']): Promise { if (file.tempFilePath) { return imageSizePromise(file.tempFilePath) } diff --git a/packages/payload/src/uploads/getSafeFilename.ts b/packages/payload/src/uploads/getSafeFilename.ts index f6b594646b..720c23abe8 100644 --- a/packages/payload/src/uploads/getSafeFilename.ts +++ b/packages/payload/src/uploads/getSafeFilename.ts @@ -1,6 +1,6 @@ import sanitize from 'sanitize-filename' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import docWithFilenameExists from './docWithFilenameExists.js' import fileExists from './fileExists.js' @@ -25,7 +25,7 @@ const incrementName = (name: string) => { type Args = { collectionSlug: string desiredFilename: string - req: PayloadRequest + req: PayloadRequestWithData staticPath: string } diff --git a/packages/payload/src/uploads/imageResizer.ts b/packages/payload/src/uploads/imageResizer.ts index ccf4a4ff3b..a057bd7bac 100644 --- a/packages/payload/src/uploads/imageResizer.ts +++ b/packages/payload/src/uploads/imageResizer.ts @@ -8,7 +8,7 @@ import sanitize from 'sanitize-filename' import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { SharpDependency } from '../config/types.js' -import type { CustomPayloadRequest, PayloadRequest, UploadEdits } from '../types/index.js' +import type { PayloadRequestWithData, UploadEdits } from '../types/index.js' import type { FileSize, FileSizes, FileToSave, ImageSize, ProbedImageSize } from './types.js' import { isNumber } from '../utilities/isNumber.js' @@ -17,9 +17,9 @@ import fileExists from './fileExists.js' type ResizeArgs = { config: SanitizedCollectionConfig dimensions: ProbedImageSize - file: CustomPayloadRequest['file'] + file: PayloadRequestWithData['file'] mimeType: string - req: PayloadRequest & { + req: PayloadRequestWithData & { query?: { uploadEdits?: UploadEdits } diff --git a/packages/payload/src/uploads/types.ts b/packages/payload/src/uploads/types.ts index 12062db406..56a5736af5 100644 --- a/packages/payload/src/uploads/types.ts +++ b/packages/payload/src/uploads/types.ts @@ -2,7 +2,7 @@ import type express from 'express' import type serveStatic from 'serve-static' import type { ResizeOptions, Sharp } from 'sharp' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' export type FileSize = { filename: null | string @@ -89,7 +89,7 @@ export type UploadConfig = { /** Options for original upload file only. For sizes, set each formatOptions individually. */ formatOptions?: ImageUploadFormatOptions handlers?: (( - req: PayloadRequest, + req: PayloadRequestWithData, args: { params: { collection: string; filename: string } }, ) => Promise | Response)[] imageSizes?: ImageSize[] diff --git a/packages/payload/src/uploads/unlinkTempFiles.ts b/packages/payload/src/uploads/unlinkTempFiles.ts index d3be514a51..aae466eb58 100644 --- a/packages/payload/src/uploads/unlinkTempFiles.ts +++ b/packages/payload/src/uploads/unlinkTempFiles.ts @@ -3,7 +3,7 @@ import { promisify } from 'util' import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { SanitizedConfig } from '../config/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import { mapAsync } from '../utilities/mapAsync.js' @@ -12,7 +12,7 @@ const unlinkFile = promisify(fs.unlink) type Args = { collectionConfig: SanitizedCollectionConfig config: SanitizedConfig - req: PayloadRequest + req: PayloadRequestWithData } /** * Cleanup temp files after operation lifecycle diff --git a/packages/payload/src/uploads/uploadFiles.ts b/packages/payload/src/uploads/uploadFiles.ts index b3f772f3d5..7c5093bdba 100644 --- a/packages/payload/src/uploads/uploadFiles.ts +++ b/packages/payload/src/uploads/uploadFiles.ts @@ -1,5 +1,5 @@ import type { Payload } from '../index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import type { FileToSave } from './types.js' import { FileUploadError } from '../errors/index.js' @@ -8,7 +8,7 @@ import saveBufferToFile from './saveBufferToFile.js' export const uploadFiles = async ( payload: Payload, files: FileToSave[], - req: PayloadRequest, + req: PayloadRequestWithData, ): Promise => { try { await Promise.all( diff --git a/packages/payload/src/utilities/commitTransaction.ts b/packages/payload/src/utilities/commitTransaction.ts index 45384e3115..7c2975a5ce 100644 --- a/packages/payload/src/utilities/commitTransaction.ts +++ b/packages/payload/src/utilities/commitTransaction.ts @@ -1,9 +1,9 @@ -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' /** * complete a transaction calling adapter db.commitTransaction and delete the transactionID from req */ -export async function commitTransaction(req: PayloadRequest): Promise { +export async function commitTransaction(req: PayloadRequestWithData): Promise { const { payload, transactionID } = req await payload.db.commitTransaction(transactionID) diff --git a/packages/payload/src/utilities/createLocalReq.ts b/packages/payload/src/utilities/createLocalReq.ts index 31689b0121..2aefa38c3f 100644 --- a/packages/payload/src/utilities/createLocalReq.ts +++ b/packages/payload/src/utilities/createLocalReq.ts @@ -1,12 +1,12 @@ import type { User } from '../auth/types.js' import type { Payload, RequestContext } from '../index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import { getDataLoader } from '../collections/dataloader.js' import { getLocalI18n } from '../translations/getLocalI18n.js' function getRequestContext( - req: PayloadRequest = { context: null } as PayloadRequest, + req: PayloadRequestWithData = { context: null } as PayloadRequestWithData, context: RequestContext = {}, ): RequestContext { if (req.context) { @@ -21,7 +21,7 @@ function getRequestContext( } } -const attachFakeURLProperties = (req: PayloadRequest) => { +const attachFakeURLProperties = (req: PayloadRequestWithData) => { /** * *NOTE* * If no URL is provided, the local API was called directly outside @@ -59,13 +59,13 @@ type CreateLocalReq = ( context?: RequestContext fallbackLocale?: string locale?: string - req?: PayloadRequest + req?: PayloadRequestWithData user?: User }, payload: Payload, -) => Promise +) => Promise export const createLocalReq: CreateLocalReq = async ( - { context, fallbackLocale, locale: localeArg, req = {} as PayloadRequest, user }, + { context, fallbackLocale, locale: localeArg, req = {} as PayloadRequestWithData, user }, payload, ) => { const i18n = req?.i18n || (await getLocalI18n({ config: payload.config })) diff --git a/packages/payload/src/utilities/getEntityPolicies.ts b/packages/payload/src/utilities/getEntityPolicies.ts index f5452cc537..62108301a1 100644 --- a/packages/payload/src/utilities/getEntityPolicies.ts +++ b/packages/payload/src/utilities/getEntityPolicies.ts @@ -3,7 +3,7 @@ import type { SanitizedCollectionConfig, TypeWithID } from '../collections/confi import type { Access } from '../config/types.js' import type { FieldAccess } from '../fields/config/types.js' import type { SanitizedGlobalConfig } from '../globals/config/types.js' -import type { AllOperations, Document, PayloadRequest, Where } from '../types/index.js' +import type { AllOperations, Document, PayloadRequestWithData, Where } from '../types/index.js' import { tabHasName } from '../fields/config/types.js' @@ -11,7 +11,7 @@ type Args = { entity: SanitizedCollectionConfig | SanitizedGlobalConfig id?: number | string operations: AllOperations[] - req: PayloadRequest + req: PayloadRequestWithData type: 'collection' | 'global' } diff --git a/packages/payload/src/utilities/initTransaction.ts b/packages/payload/src/utilities/initTransaction.ts index f4aa57056d..b332c517f1 100644 --- a/packages/payload/src/utilities/initTransaction.ts +++ b/packages/payload/src/utilities/initTransaction.ts @@ -1,10 +1,10 @@ -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' /** * Starts a new transaction using the db adapter with a random id and then assigns it to the req.transaction * @returns true if beginning a transaction and false when req already has a transaction to use */ -export async function initTransaction(req: PayloadRequest): Promise { +export async function initTransaction(req: PayloadRequestWithData): Promise { const { payload, transactionID, transactionIDPromise } = req if (transactionID) { // we already have a transaction, we're not in charge of committing it diff --git a/packages/payload/src/utilities/isEntityHidden.ts b/packages/payload/src/utilities/isEntityHidden.ts index 72ec9078ed..5157d52256 100644 --- a/packages/payload/src/utilities/isEntityHidden.ts +++ b/packages/payload/src/utilities/isEntityHidden.ts @@ -1,13 +1,13 @@ import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { SanitizedGlobalConfig } from '../globals/config/types.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' export const isEntityHidden = ({ hidden, user, }: { hidden: SanitizedCollectionConfig['admin']['hidden'] | SanitizedGlobalConfig['admin']['hidden'] - user: PayloadRequest['user'] + user: PayloadRequestWithData['user'] }) => { return typeof hidden === 'function' ? hidden({ user }) : hidden === true } diff --git a/packages/payload/src/utilities/killTransaction.ts b/packages/payload/src/utilities/killTransaction.ts index 3c8fc2dd82..27189b5fdb 100644 --- a/packages/payload/src/utilities/killTransaction.ts +++ b/packages/payload/src/utilities/killTransaction.ts @@ -1,9 +1,9 @@ -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' /** * Rollback the transaction from the req using the db adapter and removes it from the req */ -export async function killTransaction(req: PayloadRequest): Promise { +export async function killTransaction(req: PayloadRequestWithData): Promise { const { payload, transactionID } = req if (transactionID) { await payload.db.rollbackTransaction(req.transactionID) diff --git a/packages/payload/src/utilities/telemetry/events/adminInit.ts b/packages/payload/src/utilities/telemetry/events/adminInit.ts index a9b0f8c376..7c98ee029c 100644 --- a/packages/payload/src/utilities/telemetry/events/adminInit.ts +++ b/packages/payload/src/utilities/telemetry/events/adminInit.ts @@ -1,6 +1,6 @@ import type { User } from '../../../auth/types.js' import type { Payload } from '../../../index.js' -import type { PayloadRequest } from '../../../types/index.js' +import type { PayloadRequestWithData } from '../../../types/index.js' import { sendEvent } from '../index.js' import { oneWayHash } from '../oneWayHash.js' @@ -14,7 +14,7 @@ export type AdminInitEvent = { type Args = { headers: Request['headers'] payload: Payload - user: PayloadRequest['user'] + user: PayloadRequestWithData['user'] } export const adminInit = ({ headers, payload, user }: Args): void => { const host = headers.get('host') diff --git a/packages/payload/src/versions/deleteCollectionVersions.ts b/packages/payload/src/versions/deleteCollectionVersions.ts index 6cfa715338..602b4fe9d1 100644 --- a/packages/payload/src/versions/deleteCollectionVersions.ts +++ b/packages/payload/src/versions/deleteCollectionVersions.ts @@ -1,10 +1,10 @@ import type { Payload } from '../index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' type Args = { id?: number | string payload: Payload - req?: PayloadRequest + req?: PayloadRequestWithData slug: string } diff --git a/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts b/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts index 01eea49a23..918ddc1a78 100644 --- a/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts +++ b/packages/payload/src/versions/drafts/replaceWithDraftIfAvailable.ts @@ -2,7 +2,7 @@ import type { SanitizedCollectionConfig, TypeWithID } from '../../collections/co import type { AccessResult } from '../../config/types.js' import type { FindGlobalVersionsArgs, FindVersionsArgs } from '../../database/types.js' import type { SanitizedGlobalConfig } from '../../globals/config/types.js' -import type { PayloadRequest, Where } from '../../types/index.js' +import type { PayloadRequestWithData, Where } from '../../types/index.js' import { hasWhereAccessResult } from '../../auth/index.js' import { combineQueries } from '../../database/combineQueries.js' @@ -16,7 +16,7 @@ type Arguments = { entity: SanitizedCollectionConfig | SanitizedGlobalConfig entityType: 'collection' | 'global' overrideAccess: boolean - req: PayloadRequest + req: PayloadRequestWithData } const replaceWithDraftIfAvailable = async ({ diff --git a/packages/payload/src/versions/enforceMaxVersions.ts b/packages/payload/src/versions/enforceMaxVersions.ts index 8c511b8719..bb3980114a 100644 --- a/packages/payload/src/versions/enforceMaxVersions.ts +++ b/packages/payload/src/versions/enforceMaxVersions.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig } from '../collections/config/types.js' import type { SanitizedGlobalConfig } from '../globals/config/types.js' -import type { Payload, PayloadRequest, Where } from '../types/index.js' +import type { Payload, PayloadRequestWithData, Where } from '../types/index.js' type Args = { collection?: SanitizedCollectionConfig @@ -8,7 +8,7 @@ type Args = { id?: number | string max: number payload: Payload - req?: PayloadRequest + req?: PayloadRequestWithData } export const enforceMaxVersions = async ({ diff --git a/packages/payload/src/versions/getLatestCollectionVersion.ts b/packages/payload/src/versions/getLatestCollectionVersion.ts index c68017a481..32a836153b 100644 --- a/packages/payload/src/versions/getLatestCollectionVersion.ts +++ b/packages/payload/src/versions/getLatestCollectionVersion.ts @@ -1,6 +1,6 @@ import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js' import type { FindOneArgs } from '../database/types.js' -import type { Payload, PayloadRequest } from '../types/index.js' +import type { Payload, PayloadRequestWithData } from '../types/index.js' import type { TypeWithVersion } from './types.js' import { docHasTimestamps } from '../types/index.js' @@ -10,7 +10,7 @@ type Args = { id: number | string payload: Payload query: FindOneArgs - req?: PayloadRequest + req?: PayloadRequestWithData } export const getLatestCollectionVersion = async ({ diff --git a/packages/payload/src/versions/getLatestGlobalVersion.ts b/packages/payload/src/versions/getLatestGlobalVersion.ts index 534fb98d66..77bafcf083 100644 --- a/packages/payload/src/versions/getLatestGlobalVersion.ts +++ b/packages/payload/src/versions/getLatestGlobalVersion.ts @@ -1,5 +1,5 @@ import type { SanitizedGlobalConfig } from '../globals/config/types.js' -import type { Document, Payload, PayloadRequest, Where } from '../types/index.js' +import type { Document, Payload, PayloadRequestWithData, Where } from '../types/index.js' import { docHasTimestamps } from '../types/index.js' @@ -7,7 +7,7 @@ type Args = { config: SanitizedGlobalConfig locale?: string payload: Payload - req?: PayloadRequest + req?: PayloadRequestWithData slug: string where: Where } diff --git a/packages/payload/src/versions/saveVersion.ts b/packages/payload/src/versions/saveVersion.ts index cae3e58657..08189d6105 100644 --- a/packages/payload/src/versions/saveVersion.ts +++ b/packages/payload/src/versions/saveVersion.ts @@ -1,7 +1,7 @@ import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js' import type { SanitizedGlobalConfig } from '../globals/config/types.js' import type { Payload } from '../index.js' -import type { PayloadRequest } from '../types/index.js' +import type { PayloadRequestWithData } from '../types/index.js' import { deepCopyObject } from '../utilities/deepCopyObject.js' import sanitizeInternalFields from '../utilities/sanitizeInternalFields.js' @@ -15,7 +15,7 @@ type Args = { global?: SanitizedGlobalConfig id?: number | string payload: Payload - req?: PayloadRequest + req?: PayloadRequestWithData } export const saveVersion = async ({ diff --git a/packages/plugin-cloud-storage/src/adapters/vercelBlob/staticHandler.ts b/packages/plugin-cloud-storage/src/adapters/vercelBlob/staticHandler.ts index 66f87873b7..5c42f2e479 100644 --- a/packages/plugin-cloud-storage/src/adapters/vercelBlob/staticHandler.ts +++ b/packages/plugin-cloud-storage/src/adapters/vercelBlob/staticHandler.ts @@ -1,5 +1,5 @@ import type { StaticHandler } from '@payloadcms/plugin-cloud-storage/types' -import type { CollectionConfig, PayloadRequest, UploadConfig } from 'payload/types' +import type { CollectionConfig, PayloadRequestWithData, UploadConfig } from 'payload/types' import { head } from '@vercel/blob' import path from 'path' diff --git a/packages/plugin-cloud-storage/src/types.ts b/packages/plugin-cloud-storage/src/types.ts index 38b73248aa..6729ff75a3 100644 --- a/packages/plugin-cloud-storage/src/types.ts +++ b/packages/plugin-cloud-storage/src/types.ts @@ -1,6 +1,6 @@ import type { FileData, ImageSize } from 'payload/types' import type { TypeWithID } from 'payload/types' -import type { CollectionConfig, PayloadRequest } from 'payload/types' +import type { CollectionConfig, PayloadRequestWithData } from 'payload/types' export interface File { buffer: Buffer @@ -14,7 +14,7 @@ export type HandleUpload = (args: { collection: CollectionConfig data: any file: File - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | void export interface TypeWithPrefix { @@ -25,7 +25,7 @@ export type HandleDelete = (args: { collection: CollectionConfig doc: TypeWithID & FileData & TypeWithPrefix filename: string - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | void export type GenerateURL = (args: { @@ -35,7 +35,7 @@ export type GenerateURL = (args: { }) => Promise | string export type StaticHandler = ( - req: PayloadRequest, + req: PayloadRequestWithData, args: { params: { collection: string; filename: string } }, ) => Promise | Response diff --git a/packages/plugin-cloud-storage/src/utilities/getFilePrefix.ts b/packages/plugin-cloud-storage/src/utilities/getFilePrefix.ts index 593c6fbb5f..feabc3f3f7 100644 --- a/packages/plugin-cloud-storage/src/utilities/getFilePrefix.ts +++ b/packages/plugin-cloud-storage/src/utilities/getFilePrefix.ts @@ -1,4 +1,4 @@ -import type { CollectionConfig, PayloadRequest, UploadConfig } from 'payload/types' +import type { CollectionConfig, PayloadRequestWithData, UploadConfig } from 'payload/types' export async function getFilePrefix({ collection, @@ -6,7 +6,7 @@ export async function getFilePrefix({ filename, }: { collection: CollectionConfig - req: PayloadRequest + req: PayloadRequestWithData filename: string }): Promise { const imageSizes = (collection?.upload as UploadConfig)?.imageSizes || [] diff --git a/packages/plugin-cloud-storage/src/utilities/getIncomingFiles.ts b/packages/plugin-cloud-storage/src/utilities/getIncomingFiles.ts index 8adaba4e3c..b04ff1e3b1 100644 --- a/packages/plugin-cloud-storage/src/utilities/getIncomingFiles.ts +++ b/packages/plugin-cloud-storage/src/utilities/getIncomingFiles.ts @@ -1,4 +1,4 @@ -import type { FileData, PayloadRequest } from 'payload/types' +import type { FileData, PayloadRequestWithData } from 'payload/types' import type { File } from '../types.js' @@ -7,7 +7,7 @@ export function getIncomingFiles({ req, }: { data: Partial - req: PayloadRequest + req: PayloadRequestWithData }): File[] { const file = req.file diff --git a/packages/plugin-cloud/src/hooks/uploadCache.ts b/packages/plugin-cloud/src/hooks/uploadCache.ts index 208e204ec8..1e8a884a4c 100644 --- a/packages/plugin-cloud/src/hooks/uploadCache.ts +++ b/packages/plugin-cloud/src/hooks/uploadCache.ts @@ -1,7 +1,7 @@ import type { CollectionAfterChangeHook, CollectionAfterDeleteHook, - PayloadRequest, + PayloadRequestWithData, } from 'payload/types' interface Args { @@ -45,7 +45,7 @@ type PurgeRequest = { doc: any endpoint: string operation: string - req: PayloadRequest + req: PayloadRequestWithData } async function purge({ doc, endpoint, operation, req }: PurgeRequest) { diff --git a/packages/plugin-cloud/src/types.ts b/packages/plugin-cloud/src/types.ts index 2f91094799..3540f92c17 100644 --- a/packages/plugin-cloud/src/types.ts +++ b/packages/plugin-cloud/src/types.ts @@ -1,5 +1,5 @@ import type { Config } from 'payload/config' -import type { CollectionConfig, FileData, PayloadRequest, TypeWithID } from 'payload/types' +import type { CollectionConfig, FileData, PayloadRequestWithData, TypeWithID } from 'payload/types' export interface File { buffer: Buffer @@ -13,7 +13,7 @@ export type HandleUpload = (args: { collection: CollectionConfig data: any file: File - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | void export interface TypeWithPrefix { @@ -24,7 +24,7 @@ export type HandleDelete = (args: { collection: CollectionConfig doc: TypeWithID & FileData & TypeWithPrefix filename: string - req: PayloadRequest + req: PayloadRequestWithData }) => Promise | void export type GenerateURL = (args: { @@ -34,7 +34,7 @@ export type GenerateURL = (args: { }) => Promise | string export type StaticHandler = ( - req: PayloadRequest, + req: PayloadRequestWithData, args: { params: { collection: string; filename: string } }, ) => Promise | Response diff --git a/packages/plugin-cloud/src/utilities/getIncomingFiles.ts b/packages/plugin-cloud/src/utilities/getIncomingFiles.ts index 8adaba4e3c..b04ff1e3b1 100644 --- a/packages/plugin-cloud/src/utilities/getIncomingFiles.ts +++ b/packages/plugin-cloud/src/utilities/getIncomingFiles.ts @@ -1,4 +1,4 @@ -import type { FileData, PayloadRequest } from 'payload/types' +import type { FileData, PayloadRequestWithData } from 'payload/types' import type { File } from '../types.js' @@ -7,7 +7,7 @@ export function getIncomingFiles({ req, }: { data: Partial - req: PayloadRequest + req: PayloadRequestWithData }): File[] { const file = req.file diff --git a/packages/plugin-nested-docs/src/hooks/resaveChildren.ts b/packages/plugin-nested-docs/src/hooks/resaveChildren.ts index 4361f8e818..54a1630af0 100644 --- a/packages/plugin-nested-docs/src/hooks/resaveChildren.ts +++ b/packages/plugin-nested-docs/src/hooks/resaveChildren.ts @@ -1,4 +1,8 @@ -import type { CollectionAfterChangeHook, CollectionConfig, PayloadRequest } from 'payload/types' +import type { + CollectionAfterChangeHook, + CollectionConfig, + PayloadRequestWithData, +} from 'payload/types' import type { PluginConfig } from '../types.js' @@ -9,7 +13,7 @@ type ResaveArgs = { doc: Record draft: boolean pluginConfig: PluginConfig - req: PayloadRequest + req: PayloadRequestWithData } const resave = async ({ collection, doc, draft, pluginConfig, req }: ResaveArgs) => { diff --git a/packages/plugin-search/src/types.ts b/packages/plugin-search/src/types.ts index e1a3fe23b3..dac348e13f 100644 --- a/packages/plugin-search/src/types.ts +++ b/packages/plugin-search/src/types.ts @@ -1,5 +1,9 @@ import type { Payload } from 'payload' -import type { CollectionAfterChangeHook, CollectionConfig, PayloadRequest } from 'payload/types' +import type { + CollectionAfterChangeHook, + CollectionConfig, + PayloadRequestWithData, +} from 'payload/types' export interface DocToSync { [key: string]: any @@ -15,7 +19,7 @@ export type BeforeSync = (args: { [key: string]: any } payload: Payload - req: PayloadRequest + req: PayloadRequestWithData searchDoc: DocToSync }) => DocToSync | Promise diff --git a/packages/plugin-seo/src/index.tsx b/packages/plugin-seo/src/index.tsx index 3b5ebcbd5e..6d9d06a4cb 100644 --- a/packages/plugin-seo/src/index.tsx +++ b/packages/plugin-seo/src/index.tsx @@ -198,9 +198,9 @@ const seo = ...(config.endpoints ?? []), { handler: async (req) => { - await addDataAndFileToRequest({ request: req }) + const reqWithData = await addDataAndFileToRequest({ request: req }) const args: Parameters[0] = - req.data as unknown as Parameters[0] + reqWithData.data as unknown as Parameters[0] const result = pluginConfig.generateTitle ? await pluginConfig.generateTitle(args) : '' return new Response(JSON.stringify({ result }), { status: 200 }) }, @@ -209,9 +209,9 @@ const seo = }, { handler: async (req) => { - await addDataAndFileToRequest({ request: req }) + const reqWithData = await addDataAndFileToRequest({ request: req }) const args: Parameters[0] = - req.data as unknown as Parameters[0] + reqWithData.data as unknown as Parameters[0] const result = pluginConfig.generateDescription ? await pluginConfig.generateDescription(args) : '' @@ -222,9 +222,9 @@ const seo = }, { handler: async (req) => { - await addDataAndFileToRequest({ request: req }) + const reqWithData = await addDataAndFileToRequest({ request: req }) const args: Parameters[0] = - req.data as unknown as Parameters[0] + reqWithData.data as unknown as Parameters[0] const result = pluginConfig.generateURL ? await pluginConfig.generateURL(args) : '' return new Response(JSON.stringify({ result }), { status: 200 }) }, @@ -233,9 +233,9 @@ const seo = }, { handler: async (req) => { - await addDataAndFileToRequest({ request: req }) + const reqWithData = await addDataAndFileToRequest({ request: req }) const args: Parameters[0] = - req.data as unknown as Parameters[0] + reqWithData.data as unknown as Parameters[0] const result = pluginConfig.generateImage ? await pluginConfig.generateImage(args) : '' return new Response(result, { status: 200 }) }, diff --git a/packages/plugin-stripe/src/routes/rest.ts b/packages/plugin-stripe/src/routes/rest.ts index 270fc97b58..7503d3dc84 100644 --- a/packages/plugin-stripe/src/routes/rest.ts +++ b/packages/plugin-stripe/src/routes/rest.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { Forbidden } from 'payload/errors' @@ -7,7 +7,7 @@ import type { StripeConfig } from '../types.js' import { stripeProxy } from '../utilities/stripeProxy.js' export const stripeREST = async (args: { - req: PayloadRequest + req: PayloadRequestWithData stripeConfig: StripeConfig }): Promise => { let responseStatus = 200 diff --git a/packages/plugin-stripe/src/routes/webhooks.ts b/packages/plugin-stripe/src/routes/webhooks.ts index c80c9cd562..f706391ae4 100644 --- a/packages/plugin-stripe/src/routes/webhooks.ts +++ b/packages/plugin-stripe/src/routes/webhooks.ts @@ -1,5 +1,5 @@ import type { Config as PayloadConfig } from 'payload/config' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import Stripe from 'stripe' @@ -9,7 +9,7 @@ import { handleWebhooks } from '../webhooks/index.js' export const stripeWebhooks = async (args: { config: PayloadConfig - req: PayloadRequest + req: PayloadRequestWithData stripeConfig: StripeConfig }): Promise => { const { config, req, stripeConfig } = args diff --git a/packages/richtext-lexical/src/field/features/types.ts b/packages/richtext-lexical/src/field/features/types.ts index 8a2a35a78a..e223de8eb2 100644 --- a/packages/richtext-lexical/src/field/features/types.ts +++ b/packages/richtext-lexical/src/field/features/types.ts @@ -8,7 +8,7 @@ import type { RequestContext } from 'payload' import type { SanitizedConfig } from 'payload/config' import type { Field, - PayloadRequest, + PayloadRequestWithData, ReplaceAny, RichTextField, ValidateOptions, @@ -54,7 +54,7 @@ export type PopulationPromise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean siblingDoc: Record }) => void @@ -192,7 +192,7 @@ export type FieldNodeHookArgs = { operation?: 'create' | 'delete' | 'read' | 'update' overrideAccess?: boolean /** The Express request object. It is mocked for Local API operations. */ - req: PayloadRequest + req: PayloadRequestWithData } export type FieldNodeHook = ( diff --git a/packages/richtext-lexical/src/populate/populate.ts b/packages/richtext-lexical/src/populate/populate.ts index 33bec5c149..d2042daea0 100644 --- a/packages/richtext-lexical/src/populate/populate.ts +++ b/packages/richtext-lexical/src/populate/populate.ts @@ -1,5 +1,5 @@ import type { SerializedEditorState } from 'lexical' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection, Field, RichTextField } from 'payload/types' import type { AdapterProps } from '../types.js' @@ -11,7 +11,7 @@ type Arguments = { field: RichTextField key: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean } diff --git a/packages/richtext-lexical/src/populate/recurseNestedFields.ts b/packages/richtext-lexical/src/populate/recurseNestedFields.ts index 6e957773d9..ececec19f5 100644 --- a/packages/richtext-lexical/src/populate/recurseNestedFields.ts +++ b/packages/richtext-lexical/src/populate/recurseNestedFields.ts @@ -1,5 +1,5 @@ import type { RequestContext } from 'payload' -import type { Field, PayloadRequest } from 'payload/types' +import type { Field, PayloadRequestWithData } from 'payload/types' import { afterReadTraverseFields } from 'payload/utilities' @@ -23,7 +23,7 @@ type NestedRichTextFieldsArgs = { flattenLocales: boolean overrideAccess: boolean populationPromises: Promise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean siblingDoc: Record } diff --git a/packages/richtext-slate/src/data/populate.ts b/packages/richtext-slate/src/data/populate.ts index aa27c26889..684936a93c 100644 --- a/packages/richtext-slate/src/data/populate.ts +++ b/packages/richtext-slate/src/data/populate.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import type { Collection, Field, RichTextField } from 'payload/types' import type { AdapterArguments } from '../types.js' @@ -10,7 +10,7 @@ type Arguments = { field: RichTextField key: number | string overrideAccess?: boolean - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean } diff --git a/packages/richtext-slate/src/data/recurseNestedFields.ts b/packages/richtext-slate/src/data/recurseNestedFields.ts index 78a68fba28..95b01525c2 100644 --- a/packages/richtext-slate/src/data/recurseNestedFields.ts +++ b/packages/richtext-slate/src/data/recurseNestedFields.ts @@ -1,4 +1,4 @@ -import type { Field, PayloadRequest } from 'payload/types' +import type { Field, PayloadRequestWithData } from 'payload/types' import { fieldAffectsData, fieldHasSubFields, fieldIsArrayType } from 'payload/types' @@ -12,7 +12,7 @@ type NestedRichTextFieldsArgs = { fields: Field[] overrideAccess: boolean populationPromises: Promise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean } diff --git a/packages/richtext-slate/src/data/richTextRelationshipPromise.ts b/packages/richtext-slate/src/data/richTextRelationshipPromise.ts index 80ed8f0e9a..9b5d6f2716 100644 --- a/packages/richtext-slate/src/data/richTextRelationshipPromise.ts +++ b/packages/richtext-slate/src/data/richTextRelationshipPromise.ts @@ -1,4 +1,4 @@ -import type { PayloadRequest, RichTextAdapter, RichTextField } from 'payload/types' +import type { PayloadRequestWithData, RichTextAdapter, RichTextField } from 'payload/types' import type { AdapterArguments } from '../types.js' @@ -14,7 +14,7 @@ type RecurseRichTextArgs = { field: RichTextField overrideAccess: boolean populationPromises: Promise[] - req: PayloadRequest + req: PayloadRequestWithData showHiddenFields: boolean } diff --git a/packages/ui/src/elements/HydrateClientUser/index.tsx b/packages/ui/src/elements/HydrateClientUser/index.tsx index dc58b561d7..fe534101ac 100644 --- a/packages/ui/src/elements/HydrateClientUser/index.tsx +++ b/packages/ui/src/elements/HydrateClientUser/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { Permissions } from 'payload/auth' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { useEffect } from 'react' @@ -9,7 +9,7 @@ import { useAuth } from '../../providers/Auth/index.js' export const HydrateClientUser: React.FC<{ permissions: Permissions - user: PayloadRequest['user'] + user: PayloadRequestWithData['user'] }> = ({ permissions, user }) => { const { setPermissions, setUser } = useAuth() diff --git a/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts b/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts index f106e517de..28af6e2ee4 100644 --- a/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts +++ b/packages/ui/src/forms/buildStateFromSchema/addFieldStatePromise.ts @@ -5,7 +5,7 @@ import type { Field, FormField, FormState, - PayloadRequest, + PayloadRequestWithData, } from 'payload/types' import ObjectIdImport from 'bson-objectid' @@ -53,7 +53,7 @@ export type AddFieldStatePromiseArgs = { * Req is used for validation and defaultValue calculation. If you don't need validation, * just create your own req and pass in the locale and the user */ - req: PayloadRequest + req: PayloadRequestWithData /** * Whether to skip checking the field's condition. @default false */ diff --git a/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/index.ts b/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/index.ts index 7aadf79b64..2283611990 100644 --- a/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/index.ts +++ b/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/index.ts @@ -1,4 +1,4 @@ -import type { Data, Field as FieldSchema, PayloadRequest } from 'payload/types' +import type { Data, Field as FieldSchema, PayloadRequestWithData } from 'payload/types' import { iterateFields } from './iterateFields.js' @@ -6,7 +6,7 @@ type Args = { data: Data fields: FieldSchema[] id?: number | string - req: PayloadRequest + req: PayloadRequestWithData siblingData: Data } diff --git a/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.ts b/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.ts index dfa0675126..8294c4b8a2 100644 --- a/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.ts +++ b/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.ts @@ -1,4 +1,4 @@ -import type { Data, Field, PayloadRequest, TabAsField } from 'payload/types' +import type { Data, Field, PayloadRequestWithData, TabAsField } from 'payload/types' import { defaultValuePromise } from './promise.js' @@ -6,7 +6,7 @@ type Args = { data: T fields: (Field | TabAsField)[] id?: number | string - req: PayloadRequest + req: PayloadRequestWithData siblingData: Data } diff --git a/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/promise.ts b/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/promise.ts index d776e9a2bc..fbae14a396 100644 --- a/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/promise.ts +++ b/packages/ui/src/forms/buildStateFromSchema/calculateDefaultValues/promise.ts @@ -2,7 +2,7 @@ import type { Data } from 'payload/types' import { type Field, - type PayloadRequest, + type PayloadRequestWithData, type TabAsField, fieldAffectsData, tabHasName, @@ -15,7 +15,7 @@ type Args = { data: T field: Field | TabAsField id?: number | string - req: PayloadRequest + req: PayloadRequestWithData siblingData: Data } diff --git a/packages/ui/src/forms/buildStateFromSchema/index.tsx b/packages/ui/src/forms/buildStateFromSchema/index.tsx index ff3bfeb207..62e4b9204b 100644 --- a/packages/ui/src/forms/buildStateFromSchema/index.tsx +++ b/packages/ui/src/forms/buildStateFromSchema/index.tsx @@ -3,7 +3,7 @@ import type { DocumentPreferences, Field as FieldSchema, FormState, - PayloadRequest, + PayloadRequestWithData, } from 'payload/types' import { calculateDefaultValues } from './calculateDefaultValues/index.js' @@ -15,7 +15,7 @@ type Args = { id?: number | string operation?: 'create' | 'update' preferences: DocumentPreferences - req: PayloadRequest + req: PayloadRequestWithData siblingData?: Data } diff --git a/packages/ui/src/forms/buildStateFromSchema/iterateFields.ts b/packages/ui/src/forms/buildStateFromSchema/iterateFields.ts index 3cb85df4a3..0e268940a4 100644 --- a/packages/ui/src/forms/buildStateFromSchema/iterateFields.ts +++ b/packages/ui/src/forms/buildStateFromSchema/iterateFields.ts @@ -3,7 +3,7 @@ import type { DocumentPreferences, Field as FieldSchema, FormState, - PayloadRequest, + PayloadRequestWithData, } from 'payload/types' import { fieldIsPresentationalOnly } from 'payload/types' @@ -45,7 +45,7 @@ type Args = { */ path?: string preferences?: DocumentPreferences - req: PayloadRequest + req: PayloadRequestWithData /** * Whether to skip checking the field's condition. @default false */ diff --git a/test/_community/collections/Media/index.ts b/test/_community/collections/Media/index.ts index 3c523e01ef..cd576a17cf 100644 --- a/test/_community/collections/Media/index.ts +++ b/test/_community/collections/Media/index.ts @@ -1,7 +1,5 @@ import type { CollectionConfig } from 'payload/types' -import { getPayload } from 'payload' - export const mediaSlug = 'media' export const MediaCollection: CollectionConfig = { diff --git a/test/access-control/config.ts b/test/access-control/config.ts index 464ec05cbf..2f921cda0a 100644 --- a/test/access-control/config.ts +++ b/test/access-control/config.ts @@ -35,9 +35,9 @@ const PublicReadabilityAccess: FieldAccess = ({ req: { user }, siblingData }) => return false } -export const requestHeaders = { authorization: 'Bearer testBearerToken' } +export const requestHeaders = new Headers({ authorization: 'Bearer testBearerToken' }) const UseRequestHeadersAccess: FieldAccess = ({ req: { headers } }) => { - return !!headers && headers.authorization === requestHeaders.authorization + return !!headers && headers.get('authorization') === requestHeaders.get('authorization') } export default buildConfigWithDefaults({ diff --git a/test/access-control/int.spec.ts b/test/access-control/int.spec.ts index a4f1ec88ed..612f993103 100644 --- a/test/access-control/int.spec.ts +++ b/test/access-control/int.spec.ts @@ -1,4 +1,4 @@ -import type { Payload, PayloadRequest } from 'payload/types' +import type { Payload, PayloadRequestWithData } from 'payload/types' import { Forbidden } from 'payload/errors' @@ -184,10 +184,9 @@ describe('Access Control', () => { }) describe('non-enumerated request properties passed to access control', () => { it('access control ok when passing request headers', async () => { - const req = Object.defineProperty({}, 'headers', { - value: requestHeaders, - enumerable: false, - }) as PayloadRequest + const req = { + headers: requestHeaders, + } as PayloadRequestWithData const name = 'name' const overrideAccess = false @@ -248,7 +247,7 @@ describe('Access Control', () => { describe('Fields', () => { it('should allow overrideAccess: false', async () => { const req = async () => - payload.update({ + await payload.update({ collection: slug, id: post1.id, data: { restrictedField: restricted.id }, @@ -281,7 +280,7 @@ describe('Access Control', () => { it('should allow overrideAccess: false - update many', async () => { const req = async () => - payload.update({ + await payload.update({ collection: slug, where: { id: { equals: post1.id }, @@ -324,7 +323,7 @@ describe('Access Control', () => { it('should allow overrideAccess: false', async () => { const req = async () => - payload.update({ + await payload.update({ collection: restrictedSlug, id: restricted.id, data: { name: updatedName }, @@ -357,7 +356,7 @@ describe('Access Control', () => { it('should allow overrideAccess: false - update many', async () => { const req = async () => - payload.update({ + await payload.update({ collection: restrictedSlug, where: { id: { equals: restricted.id }, @@ -477,9 +476,9 @@ describe('Access Control', () => { async function createDoc( data: Partial, overrideSlug = slug, - options?: Partial, -): Promise { - return payload.create({ + options?: Partial[0]>, +) { + return await payload.create({ ...options, collection: overrideSlug, data: data ?? {}, diff --git a/test/database/int.spec.ts b/test/database/int.spec.ts index 3867708a64..990b58b94d 100644 --- a/test/database/int.spec.ts +++ b/test/database/int.spec.ts @@ -1,7 +1,7 @@ import type { PostgresAdapter } from '@payloadcms/db-postgres/types' import type { NextRESTClient } from 'helpers/NextRESTClient.js' import type { Payload } from 'payload' -import type { PayloadRequest, TypeWithID } from 'payload/types' +import type { PayloadRequestWithData, TypeWithID } from 'payload/types' import { sql } from 'drizzle-orm' import fs from 'fs' @@ -270,7 +270,7 @@ describe('database', () => { const req = { payload, user, - } as PayloadRequest + } as PayloadRequestWithData await initTransaction(req) @@ -320,7 +320,7 @@ describe('database', () => { const req = { payload, user, - } as PayloadRequest + } as PayloadRequestWithData let first let second @@ -373,7 +373,7 @@ describe('database', () => { const req = { payload, user, - } as PayloadRequest + } as PayloadRequestWithData await initTransaction(req) diff --git a/test/helpers/reInit.ts b/test/helpers/reInit.ts index 9912556120..88a1202445 100644 --- a/test/helpers/reInit.ts +++ b/test/helpers/reInit.ts @@ -1,17 +1,15 @@ -import type { Endpoint } from 'payload/config' -import type { PayloadRequest } from 'payload/types' +import type { Endpoint, PayloadHandler } from 'payload/config' -import { addDataAndFileToRequest, addLocalesToRequest } from '@payloadcms/next/utilities' +import { addDataAndFileToRequest } from '@payloadcms/next/utilities' import httpStatus from 'http-status' import { path } from './reInitializeDB.js' import { seedDB } from './seed.js' -const handler = async (req: PayloadRequest) => { +const handler: PayloadHandler = async (req) => { process.env.SEED_IN_CONFIG_ONINIT = 'true' - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) - const { data, payload } = req + const reqWithData = await addDataAndFileToRequest({ request: req }) + const { data, payload } = reqWithData try { await seedDB({ diff --git a/test/helpers/sdk/endpoint.ts b/test/helpers/sdk/endpoint.ts index f0259941df..c4cae17ce1 100644 --- a/test/helpers/sdk/endpoint.ts +++ b/test/helpers/sdk/endpoint.ts @@ -1,16 +1,15 @@ import type { Endpoint, PayloadHandler } from 'payload/config' -import { addDataAndFileToRequest, addLocalesToRequest } from '@payloadcms/next/utilities' +import { addDataAndFileToRequest } from '@payloadcms/next/utilities' import httpStatus from 'http-status' -export const handler: PayloadHandler = async (req) => { - await addDataAndFileToRequest({ request: req }) - addLocalesToRequest({ request: req }) +export const handler: PayloadHandler = async (incomingRequest) => { + const reqWithData = await addDataAndFileToRequest({ request: incomingRequest }) - const { data, payload, user } = req - const operation = String(data.operation) + const { data, payload, user } = reqWithData + const operation = data?.operation ? String(data.operation) : undefined - if (typeof payload[operation] === 'function') { + if (data?.operation && typeof payload[operation] === 'function') { try { const result = await payload[operation]({ ...(typeof data.args === 'object' ? data.args : {}), diff --git a/test/hooks/collections/ContextHooks/index.ts b/test/hooks/collections/ContextHooks/index.ts index fcfb05c9e8..0444dfe631 100644 --- a/test/hooks/collections/ContextHooks/index.ts +++ b/test/hooks/collections/ContextHooks/index.ts @@ -1,6 +1,6 @@ /* eslint-disable no-param-reassign */ import type { CollectionConfig } from 'payload/types' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' export const contextHooksSlug = 'context-hooks' const ContextHooks: CollectionConfig = { @@ -15,7 +15,7 @@ const ContextHooks: CollectionConfig = { beforeOperation: [ ({ context, args }) => { // eslint-disable-next-line prefer-destructuring - const req: PayloadRequest = args.req + const req: PayloadRequestWithData = args.req if (req.searchParams.size === 0) { return args diff --git a/test/plugin-form-builder/seed/index.ts b/test/plugin-form-builder/seed/index.ts index c15d309c47..f90f33dba4 100644 --- a/test/plugin-form-builder/seed/index.ts +++ b/test/plugin-form-builder/seed/index.ts @@ -1,11 +1,11 @@ import type { Payload } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { formSubmissionsSlug, formsSlug, pagesSlug } from '../shared.js' export const seed = async (payload: Payload): Promise => { payload.logger.info('Seeding data...') - const req = {} as PayloadRequest + const req = {} as PayloadRequestWithData try { await payload.create({ diff --git a/test/plugin-search/seed/index.ts b/test/plugin-search/seed/index.ts index 5868b6b750..744f4f8e9e 100644 --- a/test/plugin-search/seed/index.ts +++ b/test/plugin-search/seed/index.ts @@ -1,8 +1,8 @@ -import type { Payload, PayloadRequest } from 'payload/types' +import type { Payload, PayloadRequestWithData } from 'payload/types' export const seed = async (payload: Payload): Promise => { payload.logger.info('Seeding data...') - const req = {} as PayloadRequest + const req = {} as PayloadRequestWithData try { await payload.create({ diff --git a/test/plugin-seo/seed/index.ts b/test/plugin-seo/seed/index.ts index 66ca30edfe..9cb2f62c33 100644 --- a/test/plugin-seo/seed/index.ts +++ b/test/plugin-seo/seed/index.ts @@ -1,5 +1,5 @@ import type { Payload } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import path from 'path' import { getFileByPath } from 'payload/uploads' @@ -8,7 +8,7 @@ import { mediaSlug } from '../shared.js' export const seed = async (payload: Payload): Promise => { payload.logger.info('Seeding data...') - const req = {} as PayloadRequest + const req = {} as PayloadRequestWithData try { // Create image diff --git a/test/plugin-stripe/seed/index.ts b/test/plugin-stripe/seed/index.ts index 5868b6b750..744f4f8e9e 100644 --- a/test/plugin-stripe/seed/index.ts +++ b/test/plugin-stripe/seed/index.ts @@ -1,8 +1,8 @@ -import type { Payload, PayloadRequest } from 'payload/types' +import type { Payload, PayloadRequestWithData } from 'payload/types' export const seed = async (payload: Payload): Promise => { payload.logger.info('Seeding data...') - const req = {} as PayloadRequest + const req = {} as PayloadRequestWithData try { await payload.create({ diff --git a/test/relationships/int.spec.ts b/test/relationships/int.spec.ts index 571b5d3fab..fc73f5995a 100644 --- a/test/relationships/int.spec.ts +++ b/test/relationships/int.spec.ts @@ -1,5 +1,5 @@ import type { Payload } from 'payload' -import type { PayloadRequest } from 'payload/types' +import type { PayloadRequestWithData } from 'payload/types' import { randomBytes } from 'crypto' @@ -896,7 +896,7 @@ describe('Relationships', () => { describe('Creating', () => { describe('With transactions', () => { it('should be able to create filtered relations within a transaction', async () => { - const req = {} as PayloadRequest + const req = {} as PayloadRequestWithData req.transactionID = await payload.db.beginTransaction?.() const related = await payload.create({ collection: relationSlug,