diff --git a/packages/payload/src/bin/generateTypes.ts b/packages/payload/src/bin/generateTypes.ts index cc9d25d2a7..484f99e6d4 100644 --- a/packages/payload/src/bin/generateTypes.ts +++ b/packages/payload/src/bin/generateTypes.ts @@ -13,20 +13,25 @@ import Logger from '../utilities/logger' const generateEntityDeclarations = ( entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[], key: 'collections' | 'globals', -): string => - entities.reduce((dec, entity, i) => { - const title = entity.typescript?.interface - ? entity.typescript.interface - : singular(toWords(entity.slug, true)) +): string => { + if (entities.length) { + return entities.reduce((dec, entity, i) => { + const title = entity.typescript?.interface + ? entity.typescript.interface + : singular(toWords(entity.slug, true)) - return `${dec} + return `${dec} '${entity.slug}': ${title}${ i + 1 === entities.length ? ` - }` + }` : '' }` - }, ` ${key}: {`) + }, ` ${key}: {`) + } + + return '' +} export async function generateTypes(): Promise { const logger = Logger() diff --git a/packages/payload/src/collections/operations/local/delete.ts b/packages/payload/src/collections/operations/local/delete.ts index f6cf6eb119..5f225ac284 100644 --- a/packages/payload/src/collections/operations/local/delete.ts +++ b/packages/payload/src/collections/operations/local/delete.ts @@ -1,5 +1,5 @@ +import type { GeneratedTypes } from '../../../' import type { PayloadRequest, RequestContext } from '../../../express/types' -import type { Config as GeneratedTypes } from '../../../generated-types' import type { Payload } from '../../../payload' import type { Document, Where } from '../../../types' import type { BulkOperationResult } from '../../config/types' @@ -40,19 +40,19 @@ export type Options = | ByIDOptions | ManyOptions -async function deleteLocal ( +async function deleteLocal( payload: Payload, options: ByIDOptions, ): Promise -async function deleteLocal ( +async function deleteLocal( payload: Payload, options: ManyOptions, ): Promise> -async function deleteLocal ( +async function deleteLocal( payload: Payload, options: Options, ): Promise | GeneratedTypes['collections'][TSlug]> -async function deleteLocal ( +async function deleteLocal( payload: Payload, options: Options, ): Promise | GeneratedTypes['collections'][TSlug]> { diff --git a/packages/payload/src/collections/operations/local/find.ts b/packages/payload/src/collections/operations/local/find.ts index f263d8cc64..d36548aa10 100644 --- a/packages/payload/src/collections/operations/local/find.ts +++ b/packages/payload/src/collections/operations/local/find.ts @@ -1,3 +1,4 @@ +import type { GeneratedTypes } from '../../../' import type { PaginatedDocs } from '../../../database/types' import type { PayloadRequest, RequestContext } from '../../../express/types' import type { Payload } from '../../../payload' @@ -32,7 +33,7 @@ export type Options = { where?: Where } -export default async function findLocal ( +export default async function findLocal( payload: Payload, options: Options, ): Promise> { diff --git a/packages/payload/src/index.ts b/packages/payload/src/index.ts index 47a80eb8f4..ad9d1c5198 100644 --- a/packages/payload/src/index.ts +++ b/packages/payload/src/index.ts @@ -12,7 +12,7 @@ export { getPayload } from './payload' require('isomorphic-fetch') -export class Payload extends BasePayload { +export class Payload extends BasePayload { async init(options: InitOptions): Promise { const payload = await initHTTP(options) Object.assign(this, payload) diff --git a/packages/payload/src/payload.ts b/packages/payload/src/payload.ts index 142a765a43..aa2c93df41 100644 --- a/packages/payload/src/payload.ts +++ b/packages/payload/src/payload.ts @@ -61,7 +61,7 @@ import { serverInit as serverInitTelemetry } from './utilities/telemetry/events/ /** * @description Payload */ -export class BasePayload { +export class BasePayload { Mutation: { fields: { [key: string]: any }; name: string } = { name: 'Mutation', fields: {} } Query: { fields: { [key: string]: any }; name: string } = { name: 'Query', fields: {} } @@ -79,9 +79,9 @@ export class BasePayload { * @param options * @returns created document */ - create = async ( + create = async ( options: CreateOptions, - ): Promise => { + ): Promise => { const { create } = localOperations return create(this, options) } @@ -111,23 +111,23 @@ export class BasePayload { * @param options * @returns documents satisfying query */ - find = async ( + find = async ( options: FindOptions, - ): Promise> => { + ): Promise> => { const { find } = localOperations return find(this, options) } - findByID = async ( + findByID = async ( options: FindByIDOptions, - ): Promise => { + ): Promise => { const { findByID } = localOperations return findByID(this, options) } - findGlobal = async ( + findGlobal = async ( options: FindGlobalOptions, - ): Promise => { + ): Promise => { const { findOne } = localGlobalOperations return findOne(this, options) } @@ -137,9 +137,9 @@ export class BasePayload { * @param options * @returns global version with specified ID */ - findGlobalVersionByID = async ( + findGlobalVersionByID = async ( options: FindGlobalVersionByIDOptions, - ): Promise> => { + ): Promise> => { const { findVersionByID } = localGlobalOperations return findVersionByID(this, options) } @@ -149,9 +149,9 @@ export class BasePayload { * @param options * @returns versions satisfying query */ - findGlobalVersions = async ( + findGlobalVersions = async ( options: FindGlobalVersionsOptions, - ): Promise>> => { + ): Promise>> => { const { findVersions } = localGlobalOperations return findVersions(this, options) } @@ -161,9 +161,9 @@ export class BasePayload { * @param options * @returns version with specified ID */ - findVersionByID = async ( + findVersionByID = async ( options: FindVersionByIDOptions, - ): Promise> => { + ): Promise> => { const { findVersionByID } = localOperations return findVersionByID(this, options) } @@ -173,14 +173,14 @@ export class BasePayload { * @param options * @returns versions satisfying query */ - findVersions = async ( + findVersions = async ( options: FindVersionsOptions, - ): Promise>> => { + ): Promise>> => { const { findVersions } = localOperations return findVersions(this, options) } - forgotPassword = async ( + forgotPassword = async ( options: ForgotPasswordOptions, ): Promise => { const { forgotPassword } = localOperations.auth @@ -197,9 +197,9 @@ export class BasePayload { logger: pino.Logger - login = async ( + login = async ( options: LoginOptions, - ): Promise => { + ): Promise => { const { login } = localOperations.auth return login(this, options) } @@ -210,7 +210,7 @@ export class BasePayload { * @returns document with specified ID */ - resetPassword = async ( + resetPassword = async ( options: ResetPasswordOptions, ): Promise => { const { resetPassword } = localOperations.auth @@ -222,9 +222,9 @@ export class BasePayload { * @param options * @returns version with specified ID */ - restoreGlobalVersion = async ( + restoreGlobalVersion = async ( options: RestoreGlobalVersionOptions, - ): Promise => { + ): Promise => { const { restoreVersion } = localGlobalOperations return restoreVersion(this, options) } @@ -234,9 +234,9 @@ export class BasePayload { * @param options * @returns version with specified ID */ - restoreVersion = async ( + restoreVersion = async ( options: RestoreVersionOptions, - ): Promise => { + ): Promise => { const { restoreVersion } = localOperations return restoreVersion(this, options) } @@ -259,23 +259,23 @@ export class BasePayload { tabTypes: any } - unlock = async ( + unlock = async ( options: UnlockOptions, ): Promise => { const { unlock } = localOperations.auth return unlock(this, options) } - updateGlobal = async ( + updateGlobal = async ( options: UpdateGlobalOptions, - ): Promise => { + ): Promise => { const { update } = localGlobalOperations return update(this, options) } validationRules: (args: OperationArgs) => ValidationRule[] - verifyEmail = async ( + verifyEmail = async ( options: VerifyEmailOptions, ): Promise => { const { verifyEmail } = localOperations.auth @@ -286,9 +286,9 @@ export class BasePayload { [slug: string]: any // TODO: Type this } = {} - delete( + delete( options: DeleteOptions, - ): Promise | GeneratedTypes['collections'][T]> { + ): Promise | TGeneratedTypes['collections'][T]> { const { deleteLocal } = localOperations return deleteLocal(this, options) } @@ -298,11 +298,11 @@ export class BasePayload { * @param options * @returns Updated document(s) */ - delete( + delete( options: DeleteByIDOptions, - ): Promise + ): Promise - delete( + delete( options: DeleteManyOptions, ): Promise> @@ -387,7 +387,7 @@ export class BasePayload { return this } - update( + update( options: UpdateManyOptions, ): Promise> @@ -396,19 +396,19 @@ export class BasePayload { * @param options * @returns Updated document(s) */ - update( + update( options: UpdateByIDOptions, - ): Promise + ): Promise - update( + update( options: UpdateOptions, - ): Promise | GeneratedTypes['collections'][T]> { + ): Promise | TGeneratedTypes['collections'][T]> { const { update } = localOperations return update(this, options) } } -export type Payload = BasePayload +export type Payload = BasePayload let cached = global._payload @@ -423,7 +423,7 @@ export const getPayload = async (options: InitOptions): Promise => { } if (!cached.promise) { - cached.promise = new BasePayload().init(options) + cached.promise = new BasePayload().init(options) } try { diff --git a/test/_community/tsconfig.json b/test/_community/tsconfig.json new file mode 100644 index 0000000000..ee91b3ad8d --- /dev/null +++ b/test/_community/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "paths": { + "payload/generated-types": ["./payload-types.ts"] + } + } +}