diff --git a/src/admin/components/forms/field-types/Code/index.tsx b/src/admin/components/forms/field-types/Code/index.tsx index 7dfc51a7c8..ad9281fd83 100644 --- a/src/admin/components/forms/field-types/Code/index.tsx +++ b/src/admin/components/forms/field-types/Code/index.tsx @@ -1,9 +1,10 @@ import React, { Suspense, lazy } from 'react'; import Loading from '../../../elements/Loading'; +import { Props } from './types'; const Code = lazy(() => import('./Code')); -const CodeField: React.FC = (props) => ( +const CodeField: React.FC = (props) => ( }> diff --git a/src/admin/components/forms/withCondition/index.tsx b/src/admin/components/forms/withCondition/index.tsx index 235c79cc60..f9472992fe 100644 --- a/src/admin/components/forms/withCondition/index.tsx +++ b/src/admin/components/forms/withCondition/index.tsx @@ -8,7 +8,7 @@ const withCondition =

>(Field: React.Component admin: { condition, } = {}, - } = props as FieldBase; + } = props as Partial; if (condition) { return ; @@ -24,7 +24,7 @@ const withCondition =

>(Field: React.Component admin: { condition, } = {}, - } = props as FieldBase & { + } = props as Partial & { path?: string }; diff --git a/src/admin/components/views/collections/List/Cell/cellTypes.spec.tsx b/src/admin/components/views/collections/List/Cell/cellTypes.spec.tsx index 9b30d2d9c4..29a9809d20 100644 --- a/src/admin/components/views/collections/List/Cell/cellTypes.spec.tsx +++ b/src/admin/components/views/collections/List/Cell/cellTypes.spec.tsx @@ -119,6 +119,7 @@ describe('Cell Types', () => { describe('Select', () => { const fieldWithOptionsObject: SelectField = { type: 'select', + name: 'selectObject', options: [{ value: 'one', label: 'One', @@ -129,6 +130,7 @@ describe('Cell Types', () => { }; const fieldWithStringsOptions: SelectField = { type: 'select', + name: 'selectString', options: ['blue', 'green', 'yellow'], }; it('renders options objects', () => { diff --git a/src/collections/init.ts b/src/collections/init.ts index b792fb75fe..61b8d67175 100644 --- a/src/collections/init.ts +++ b/src/collections/init.ts @@ -35,7 +35,7 @@ export default function registerCollections(ctx: Payload): void { }; // eslint-disable-next-line func-names - schema.methods.incLoginAttempts = function (this: mongoose.Document & LoginSchema, cb) { + schema.methods.incLoginAttempts = function (this: mongoose.Document & LoginSchema, cb) { // Expired lock, restart count at 1 if (this.lockUntil && this.lockUntil < Date.now()) { return this.updateOne({ @@ -49,7 +49,7 @@ export default function registerCollections(ctx: Payload): void { if (this.loginAttempts + 1 >= maxLoginAttempts && !this.isLocked) { updates.$set = { lockUntil: Date.now() + lockTime }; } - return this.updateOne(updates, cb); + return this.updateOne(updates as mongoose.Document, cb); }; // eslint-disable-next-line func-names diff --git a/src/fields/config/types.ts b/src/fields/config/types.ts index 439b72a390..b027d2ab7b 100644 --- a/src/fields/config/types.ts +++ b/src/fields/config/types.ts @@ -57,7 +57,7 @@ export type OptionObject = { export type Option = OptionObject | string export interface FieldBase { - name?: string; + name: string; label?: string | false; required?: boolean; unique?: boolean; @@ -146,6 +146,7 @@ export type RowAdmin = Omit & { }; export type RowField = Omit & { + name?: string; admin?: RowAdmin; type: 'row'; fields: Field[]; diff --git a/src/index.ts b/src/index.ts index 27474499f3..a7ed922f3a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ import express, { Express, Router } from 'express'; import crypto from 'crypto'; -import { Document, Model } from 'mongoose'; +import { Document } from 'mongoose'; import { SanitizedConfig, EmailOptions, @@ -36,13 +36,13 @@ import { encrypt, decrypt } from './auth/crypto'; import { BuildEmailResult, Message } from './email/types'; import { PayloadRequest } from './express/types'; import sendEmail from './email/sendEmail'; +import { Preferences } from './preferences/types'; import { Options as CreateOptions } from './collections/operations/local/create'; import { Options as FindOptions } from './collections/operations/local/find'; import { Options as FindByIDOptions } from './collections/operations/local/findByID'; import { Options as UpdateOptions } from './collections/operations/local/update'; import { Options as DeleteOptions } from './collections/operations/local/delete'; -import { Preference } from './preferences/types'; require('isomorphic-fetch'); @@ -58,7 +58,7 @@ export class Payload { resolvers: GraphQLResolvers }; - preferences: { Model: Model> }; + preferences: Preferences; globals: Globals; diff --git a/src/preferences/model.ts b/src/preferences/model.ts index b174e9fdb9..a9b2280099 100644 --- a/src/preferences/model.ts +++ b/src/preferences/model.ts @@ -1,6 +1,7 @@ import mongoose, { Schema } from 'mongoose'; +import { Preference } from './types'; -const Model = mongoose.model('_preferences', new Schema({ +const Model = mongoose.model('_preferences', new Schema({ user: { type: Schema.Types.ObjectId, refPath: 'userCollection', diff --git a/src/preferences/types.ts b/src/preferences/types.ts index 8a9ea4bdef..2cecba5597 100644 --- a/src/preferences/types.ts +++ b/src/preferences/types.ts @@ -1,4 +1,5 @@ import { Request } from 'express'; +import { Model } from 'mongoose'; import { User } from '../auth'; export type Preference = { @@ -10,6 +11,10 @@ export type Preference = { updatedAt?: Date; }; +export type Preferences = { + Model: Model +} + export type PreferenceRequest = { overrideAccess?: boolean; req: Request;