diff --git a/packages/payload/src/collections/operations/local/find.ts b/packages/payload/src/collections/operations/local/find.ts index 65807c41b76..042ab64f033 100644 --- a/packages/payload/src/collections/operations/local/find.ts +++ b/packages/payload/src/collections/operations/local/find.ts @@ -8,6 +8,7 @@ import type { } from '../../../index.js' import type { Document, + DraftTransformCollectionWithSelect, PayloadRequest, PopulateType, SelectType, @@ -136,10 +137,17 @@ export type Options = export async function findLocal< TSlug extends CollectionSlug, TSelect extends SelectFromCollectionSlug, + TDraft extends boolean = false, >( payload: Payload, - options: Options, -): Promise>> { + options: { draft?: TDraft } & Options, +): Promise< + PaginatedDocs< + TDraft extends true + ? DraftTransformCollectionWithSelect + : TransformCollectionWithSelect + > +> { const { collection: collectionSlug, currentDepth, diff --git a/packages/payload/src/index.ts b/packages/payload/src/index.ts index e8aa343cd9d..e71b14e511c 100644 --- a/packages/payload/src/index.ts +++ b/packages/payload/src/index.ts @@ -45,6 +45,7 @@ import type { InitializedEmailAdapter } from './email/types.js' import type { DataFromGlobalSlug, Globals, SelectFromGlobalSlug } from './globals/config/types.js' import type { ApplyDisableErrors, + DraftTransformCollectionWithSelect, JsonObject, SelectType, TransformCollectionWithSelect, @@ -448,10 +449,20 @@ export class BasePayload { * @param options * @returns documents satisfying query */ - find = async >( - options: FindOptions, - ): Promise>> => { - return findLocal(this, options) + find = async < + TSlug extends CollectionSlug, + TSelect extends SelectFromCollectionSlug, + TDraft extends boolean = false, + >( + options: { draft?: TDraft } & FindOptions, + ): Promise< + PaginatedDocs< + TDraft extends true + ? DraftTransformCollectionWithSelect + : TransformCollectionWithSelect + > + > => { + return findLocal(this, options) } /** diff --git a/packages/payload/src/types/index.ts b/packages/payload/src/types/index.ts index 253d6a890c7..443f52b8447 100644 --- a/packages/payload/src/types/index.ts +++ b/packages/payload/src/types/index.ts @@ -5,6 +5,7 @@ import type { URL } from 'url' import type { DataFromCollectionSlug, + DraftDataFromCollectionSlug, TypeWithID, TypeWithTimestamps, } from '../collections/config/types.js' @@ -253,6 +254,13 @@ export type TransformCollectionWithSelect< ? TransformDataWithSelect, TSelect> : DataFromCollectionSlug +export type DraftTransformCollectionWithSelect< + TSlug extends CollectionSlug, + TSelect extends SelectType, +> = TSelect extends SelectType + ? TransformDataWithSelect, TSelect> + : DraftDataFromCollectionSlug + export type TransformGlobalWithSelect< TSlug extends GlobalSlug, TSelect extends SelectType,