From 30ec146298fca3e6ea45ee67a0bc1016e0037137 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 22 Dec 2021 15:32:05 -0500 Subject: [PATCH] chore: typescript version compatibilities and improvements --- src/auth/operations/local/login.ts | 3 ++- src/auth/operations/login.ts | 5 ++-- src/auth/operations/registerFirstUser.ts | 28 +++++++++++++++----- src/collections/operations/findByID.ts | 5 ++-- src/collections/operations/findRevisions.ts | 4 +-- src/collections/operations/local/create.ts | 4 +++ src/collections/operations/local/findByID.ts | 3 +++ src/collections/operations/local/update.ts | 2 +- src/collections/operations/update.ts | 2 +- src/fields/relationshipPopulationPromise.ts | 8 +++--- src/fields/richTextRelationshipPromise.ts | 11 ++++---- src/index.ts | 3 ++- 12 files changed, 51 insertions(+), 27 deletions(-) diff --git a/src/auth/operations/local/login.ts b/src/auth/operations/local/login.ts index 37cea37b8c..6b39451224 100644 --- a/src/auth/operations/local/login.ts +++ b/src/auth/operations/local/login.ts @@ -1,6 +1,7 @@ import { Response } from 'express'; import { Result } from '../login'; import { PayloadRequest } from '../../../express/types'; +import { TypeWithID } from '../../../collections/config/types'; export type Options = { collection: string @@ -17,7 +18,7 @@ export type Options = { showHiddenFields?: boolean } -async function login(options: Options): Promise { +async function login(options: Options): Promise { const { collection: collectionSlug, req = {}, diff --git a/src/auth/operations/login.ts b/src/auth/operations/login.ts index 4660228eb3..3cfc7cbe92 100644 --- a/src/auth/operations/login.ts +++ b/src/auth/operations/login.ts @@ -8,6 +8,7 @@ import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; import { Field, fieldHasSubFields, fieldAffectsData } from '../../fields/config/types'; import { User } from '../types'; import { Collection } from '../../collections/config/types'; +import { Payload } from '../..'; export type Result = { user?: User, @@ -28,7 +29,7 @@ export type Arguments = { showHiddenFields?: boolean } -async function login(incomingArgs: Arguments): Promise { +async function login(this: Payload, incomingArgs: Arguments): Promise { const { config, operations, secret } = this; let args = incomingArgs; @@ -176,7 +177,7 @@ async function login(incomingArgs: Arguments): Promise { id: user.id, data: user, hook: 'afterRead', - operation: 'login', + operation: 'read', overrideAccess, flattenLocales: true, showHiddenFields, diff --git a/src/auth/operations/registerFirstUser.ts b/src/auth/operations/registerFirstUser.ts index 125dd9af1b..25369f619b 100644 --- a/src/auth/operations/registerFirstUser.ts +++ b/src/auth/operations/registerFirstUser.ts @@ -1,10 +1,16 @@ import { Document } from '../../types'; import { Forbidden } from '../../errors'; import { Payload } from '../..'; -import { Collection } from '../../collections/config/types'; +import { PayloadRequest } from '../../express/types'; +import { Collection, TypeWithID } from '../../collections/config/types'; export type Arguments = { collection: Collection + data: { + email: string + password: string + } + req: PayloadRequest } export type Result = { @@ -23,6 +29,11 @@ async function registerFirstUser(this: Payload, args: Arguments): Promise({ + req, + collection: slug, + data, overrideAccess: true, }); // auto-verify (if applicable) if (verify) { - await this.update({ + await payload.update({ id: result.id, collection: slug, data: { @@ -53,18 +66,19 @@ async function registerFirstUser(this: Payload, args: Arguments): Promise(incomingArgs: Arguments): Promise { +async function findByID(this: Payload, incomingArgs: Arguments): Promise { let args = incomingArgs; // ///////////////////////////////////// @@ -48,7 +49,7 @@ async function findByID(incomingArgs: Arguments): Pr }, disableErrors, currentDepth, - overrideAccess, + overrideAccess = false, showHiddenFields, } = args; diff --git a/src/collections/operations/findRevisions.ts b/src/collections/operations/findRevisions.ts index 554101e482..74a5075a72 100644 --- a/src/collections/operations/findRevisions.ts +++ b/src/collections/operations/findRevisions.ts @@ -2,7 +2,7 @@ import { Where } from '../../types'; import { PayloadRequest } from '../../express/types'; import executeAccess from '../../auth/executeAccess'; import sanitizeInternalFields from '../../utilities/sanitizeInternalFields'; -import { Collection } from '../config/types'; +import { Collection, CollectionModel } from '../config/types'; import { hasWhereAccessResult } from '../../auth/types'; import flattenWhereConstraints from '../../utilities/flattenWhereConstraints'; import { buildSortParam } from '../../mongoose/buildSortParam'; @@ -39,7 +39,7 @@ async function findRevisions = any>(this: Payload, showHiddenFields, } = args; - const RevisionsModel = this.revisions[collectionConfig.slug]; + const RevisionsModel = this.revisions[collectionConfig.slug] as CollectionModel; // ///////////////////////////////////// // Access diff --git a/src/collections/operations/local/create.ts b/src/collections/operations/local/create.ts index c96638daea..eec1bdc12d 100644 --- a/src/collections/operations/local/create.ts +++ b/src/collections/operations/local/create.ts @@ -1,3 +1,4 @@ +import { PayloadRequest } from '../../../express/types'; import { Document } from '../../../types'; import getFileByPath from '../../../uploads/getFileByPath'; @@ -13,6 +14,7 @@ export type Options = { showHiddenFields?: boolean filePath?: string overwriteExistingFiles?: boolean + req: PayloadRequest } export default async function create(options: Options): Promise { const { @@ -27,6 +29,7 @@ export default async function create(options: Options): Promise { showHiddenFields, filePath, overwriteExistingFiles = false, + req, } = options; const collection = this.collections[collectionSlug]; @@ -40,6 +43,7 @@ export default async function create(options: Options): Promise { showHiddenFields, overwriteExistingFiles, req: { + ...req, user, payloadAPI: 'local', locale, diff --git a/src/collections/operations/local/findByID.ts b/src/collections/operations/local/findByID.ts index 897d18170f..997a780dbf 100644 --- a/src/collections/operations/local/findByID.ts +++ b/src/collections/operations/local/findByID.ts @@ -6,6 +6,7 @@ export type Options = { collection: string id: string depth?: number + currentDepth?: number locale?: string fallbackLocale?: string user?: Document @@ -19,6 +20,7 @@ export default async function findByID(options: Opti const { collection: collectionSlug, depth, + currentDepth, id, locale = this?.config?.localization?.defaultLocale, fallbackLocale = null, @@ -33,6 +35,7 @@ export default async function findByID(options: Opti return this.operations.collections.findByID({ depth, + currentDepth, id, collection, overrideAccess, diff --git a/src/collections/operations/local/update.ts b/src/collections/operations/local/update.ts index a445fd1c6c..54fd3f97cd 100644 --- a/src/collections/operations/local/update.ts +++ b/src/collections/operations/local/update.ts @@ -4,7 +4,7 @@ import getFileByPath from '../../../uploads/getFileByPath'; export type Options = { collection: string - id: string + id: string | number data: Record depth?: number locale?: string diff --git a/src/collections/operations/update.ts b/src/collections/operations/update.ts index f0b6acb520..ab73278989 100644 --- a/src/collections/operations/update.ts +++ b/src/collections/operations/update.ts @@ -23,7 +23,7 @@ import { saveCollectionRevision } from '../../revisions/saveCollectionRevision'; export type Arguments = { collection: Collection req: PayloadRequest - id: string + id: string | number data: Record depth?: number disableVerificationEmail?: boolean diff --git a/src/fields/relationshipPopulationPromise.ts b/src/fields/relationshipPopulationPromise.ts index 359a462618..ad565c45eb 100644 --- a/src/fields/relationshipPopulationPromise.ts +++ b/src/fields/relationshipPopulationPromise.ts @@ -40,14 +40,14 @@ const populate = async ({ let populatedRelationship; if (depth && currentDepth <= depth) { - populatedRelationship = await payload.operations.collections.findByID({ + populatedRelationship = await payload.findByID({ req, - collection: relatedCollection, - id: idString, + collection: relatedCollection.config.slug, + id: idString as string, + depth, currentDepth: currentDepth + 1, overrideAccess, disableErrors: true, - depth, }); } diff --git a/src/fields/richTextRelationshipPromise.ts b/src/fields/richTextRelationshipPromise.ts index b6c816554a..883b9a7c1b 100644 --- a/src/fields/richTextRelationshipPromise.ts +++ b/src/fields/richTextRelationshipPromise.ts @@ -39,12 +39,11 @@ const populate = async ({ }) => { const dataRef = data as Record; - const doc = await payload.operations.collections.findByID({ - req: { - ...req, - payloadAPI: 'local', - }, - collection, + const newReq = { ...req, payloadAPI: 'local' } as PayloadRequest; + + const doc = await payload.findByID({ + req: newReq, + collection: collection.config.slug, id, currentDepth: currentDepth + 1, overrideAccess, diff --git a/src/index.ts b/src/index.ts index e7a4d42708..17a8759206 100644 --- a/src/index.ts +++ b/src/index.ts @@ -49,6 +49,7 @@ import { Options as DeleteOptions } from './collections/operations/local/delete' import { Options as FindRevisionsOptions } from './collections/operations/local/findRevisions'; import { Options as FindRevisionByIDOptions } from './collections/operations/local/findRevisionByID'; import { Options as RestoreRevisionOptions } from './collections/operations/local/restoreRevision'; +import { Result } from './auth/operations/login'; require('isomorphic-fetch'); @@ -314,7 +315,7 @@ export class Payload { // graphql operations & request handlers, where // tests - login = async (options): Promise => { + login = async (options): Promise => { let { login } = localOperations.auth; login = login.bind(this); return login(options);