From cc56da11d635d11ebbee67e6d0919c7275ede36e Mon Sep 17 00:00:00 2001 From: Alessio Gravili Date: Thu, 12 Oct 2023 17:53:35 +0200 Subject: [PATCH] fix: database adapter types --- .../components/forms/field-types/RichText/types.ts | 14 +++++++------- packages/payload/src/config/types.ts | 2 +- packages/payload/src/fields/config/types.ts | 8 +++++--- packages/richtext-lexical/src/cell/index.tsx | 3 ++- .../richtext-lexical/src/field/features/types.ts | 2 +- packages/richtext-lexical/src/index.ts | 7 +++++-- packages/richtext-lexical/src/populate/populate.ts | 3 ++- .../src/populate/richTextRelationshipPromise.ts | 6 ++++-- packages/richtext-lexical/src/types.ts | 3 ++- packages/richtext-slate/src/cell/index.tsx | 2 +- packages/richtext-slate/src/data/populate.ts | 2 +- .../src/data/richTextRelationshipPromise.ts | 4 ++-- packages/richtext-slate/src/data/validation.ts | 4 ++-- packages/richtext-slate/src/index.ts | 2 +- packages/richtext-slate/src/types.ts | 2 +- 15 files changed, 37 insertions(+), 27 deletions(-) diff --git a/packages/payload/src/admin/components/forms/field-types/RichText/types.ts b/packages/payload/src/admin/components/forms/field-types/RichText/types.ts index 41c81a181..87e1b8635 100644 --- a/packages/payload/src/admin/components/forms/field-types/RichText/types.ts +++ b/packages/payload/src/admin/components/forms/field-types/RichText/types.ts @@ -2,24 +2,24 @@ import type { PayloadRequest } from '../../../../../express/types' import type { RichTextField, Validate } from '../../../../../fields/config/types' import type { CellComponentProps } from '../../../views/collections/List/Cell/types' -export type RichTextFieldProps = Omit< - RichTextField, +export type RichTextFieldProps = Omit< + RichTextField, 'type' > & { path?: string } -export type RichTextAdapter = { - CellComponent: React.FC>> - FieldComponent: React.FC> +export type RichTextAdapter = { + CellComponent: React.FC>> + FieldComponent: React.FC> afterReadPromise?: (data: { currentDepth?: number depth: number - field: RichTextField + field: RichTextField overrideAccess?: boolean req: PayloadRequest showHiddenFields: boolean siblingDoc: Record }) => Promise | null - validate: Validate> + validate: Validate> } diff --git a/packages/payload/src/config/types.ts b/packages/payload/src/config/types.ts index 106451dc2..65003877f 100644 --- a/packages/payload/src/config/types.ts +++ b/packages/payload/src/config/types.ts @@ -517,7 +517,7 @@ export type Config = { */ defaultMaxTextLength?: number /** Default richtext editor to use for richText fields */ - editor: RichTextAdapter + editor: RichTextAdapter /** * Email configuration options. This value is overridden by `email` in Payload.init if passed. * diff --git a/packages/payload/src/fields/config/types.ts b/packages/payload/src/fields/config/types.ts index 120464d75..b75923873 100644 --- a/packages/payload/src/fields/config/types.ts +++ b/packages/payload/src/fields/config/types.ts @@ -398,11 +398,13 @@ export type RelationshipValue = | ValueWithRelation[] | (number | string) -export type RichTextField = FieldBase & { +type IsAny = 0 extends 1 & T ? true : false + +export type RichTextField = FieldBase & { admin?: Admin - editor?: RichTextAdapter + editor?: RichTextAdapter type: 'richText' -} & AdapterProps +} & (IsAny extends true ? {} : AdapterProps) export type ArrayField = FieldBase & { admin?: Admin & { diff --git a/packages/richtext-lexical/src/cell/index.tsx b/packages/richtext-lexical/src/cell/index.tsx index 2289b9c93..0227e6d3e 100644 --- a/packages/richtext-lexical/src/cell/index.tsx +++ b/packages/richtext-lexical/src/cell/index.tsx @@ -10,7 +10,8 @@ import type { AdapterProps } from '../types' import { getEnabledNodes } from '../field/lexical/nodes' export const RichTextCell: React.FC< - CellComponentProps, SerializedEditorState> & AdapterProps + CellComponentProps, SerializedEditorState> & + AdapterProps > = ({ data, editorConfig }) => { const [preview, setPreview] = React.useState('Loading...') diff --git a/packages/richtext-lexical/src/field/features/types.ts b/packages/richtext-lexical/src/field/features/types.ts index cfbaccd0d..e711e18ea 100644 --- a/packages/richtext-lexical/src/field/features/types.ts +++ b/packages/richtext-lexical/src/field/features/types.ts @@ -24,7 +24,7 @@ export type AfterReadPromise> currentDepth: number depth: number - field: RichTextField + field: RichTextField node: T overrideAccess: boolean req: PayloadRequest diff --git a/packages/richtext-lexical/src/index.ts b/packages/richtext-lexical/src/index.ts index 36d03005e..b62664629 100644 --- a/packages/richtext-lexical/src/index.ts +++ b/packages/richtext-lexical/src/index.ts @@ -1,3 +1,4 @@ +import type { SerializedEditorState } from 'lexical' import type { EditorConfig as LexicalEditorConfig } from 'lexical/LexicalEditor' import type { RichTextAdapter } from 'payload/types' @@ -26,8 +27,10 @@ export type LexicalEditorProps = { lexical?: LexicalEditorConfig } -export function lexicalEditor(props?: LexicalEditorProps): RichTextAdapter { - let finalSanitizedEditorConfig: SanitizedEditorConfig = null +export function lexicalEditor( + props?: LexicalEditorProps, +): RichTextAdapter { + let finalSanitizedEditorConfig: SanitizedEditorConfig if (!props || (!props.features && !props.lexical)) { finalSanitizedEditorConfig = cloneDeep(defaultSanitizedEditorConfig) } else { diff --git a/packages/richtext-lexical/src/populate/populate.ts b/packages/richtext-lexical/src/populate/populate.ts index 2ec6e4dd0..5c0ab42bd 100644 --- a/packages/richtext-lexical/src/populate/populate.ts +++ b/packages/richtext-lexical/src/populate/populate.ts @@ -1,3 +1,4 @@ +import type { SerializedEditorState } from 'lexical' import type { PayloadRequest } from 'payload/types' import type { Collection, Field, RichTextField } from 'payload/types' @@ -7,7 +8,7 @@ type Arguments = { currentDepth?: number data: unknown depth: number - field: RichTextField + field: RichTextField key: number | string overrideAccess?: boolean req: PayloadRequest diff --git a/packages/richtext-lexical/src/populate/richTextRelationshipPromise.ts b/packages/richtext-lexical/src/populate/richTextRelationshipPromise.ts index d4ce2d5d8..7f8071531 100644 --- a/packages/richtext-lexical/src/populate/richTextRelationshipPromise.ts +++ b/packages/richtext-lexical/src/populate/richTextRelationshipPromise.ts @@ -4,7 +4,9 @@ import type { PayloadRequest, RichTextAdapter, RichTextField } from 'payload/typ import type { AfterReadPromise } from '../field/features/types' import type { AdapterProps } from '../types' -export type Args = Parameters['afterReadPromise']>[0] & { +export type Args = Parameters< + RichTextAdapter['afterReadPromise'] +>[0] & { afterReadPromises: Map> } @@ -13,7 +15,7 @@ type RecurseRichTextArgs = { children: SerializedLexicalNode[] currentDepth: number depth: number - field: RichTextField + field: RichTextField overrideAccess: boolean promises: Promise[] req: PayloadRequest diff --git a/packages/richtext-lexical/src/types.ts b/packages/richtext-lexical/src/types.ts index 2730385bb..cb2ca57f0 100644 --- a/packages/richtext-lexical/src/types.ts +++ b/packages/richtext-lexical/src/types.ts @@ -1,10 +1,11 @@ +import type { SerializedEditorState } from 'lexical' import type { FieldPermissions } from 'payload/auth' import type { FieldTypes } from 'payload/config' import type { RichTextFieldProps } from 'payload/types' import type { SanitizedEditorConfig } from './field/lexical/config/types' -export type FieldProps = RichTextFieldProps & { +export type FieldProps = RichTextFieldProps & { fieldTypes: FieldTypes indexPath: string path?: string diff --git a/packages/richtext-slate/src/cell/index.tsx b/packages/richtext-slate/src/cell/index.tsx index 2f8019a57..52d6f8fa1 100644 --- a/packages/richtext-slate/src/cell/index.tsx +++ b/packages/richtext-slate/src/cell/index.tsx @@ -4,7 +4,7 @@ import React from 'react' import type { AdapterArguments } from '../types' -const RichTextCell: React.FC, any>> = ({ +const RichTextCell: React.FC, any>> = ({ data, }) => { const flattenedText = data?.map((i) => i?.children?.map((c) => c.text)).join(' ') diff --git a/packages/richtext-slate/src/data/populate.ts b/packages/richtext-slate/src/data/populate.ts index e1a39961e..16eb7acf5 100644 --- a/packages/richtext-slate/src/data/populate.ts +++ b/packages/richtext-slate/src/data/populate.ts @@ -7,7 +7,7 @@ type Arguments = { currentDepth?: number data: unknown depth: number - field: RichTextField + field: RichTextField key: number | string overrideAccess?: boolean req: PayloadRequest diff --git a/packages/richtext-slate/src/data/richTextRelationshipPromise.ts b/packages/richtext-slate/src/data/richTextRelationshipPromise.ts index 25a01325a..dbc3f8dab 100644 --- a/packages/richtext-slate/src/data/richTextRelationshipPromise.ts +++ b/packages/richtext-slate/src/data/richTextRelationshipPromise.ts @@ -5,13 +5,13 @@ import type { AdapterArguments } from '../types' import { populate } from './populate' import { recurseNestedFields } from './recurseNestedFields' -export type Args = Parameters['afterReadPromise']>[0] +export type Args = Parameters['afterReadPromise']>[0] type RecurseRichTextArgs = { children: unknown[] currentDepth: number depth: number - field: RichTextField + field: RichTextField overrideAccess: boolean promises: Promise[] req: PayloadRequest diff --git a/packages/richtext-slate/src/data/validation.ts b/packages/richtext-slate/src/data/validation.ts index e319851e0..f0483dc1f 100644 --- a/packages/richtext-slate/src/data/validation.ts +++ b/packages/richtext-slate/src/data/validation.ts @@ -7,8 +7,8 @@ import { defaultRichTextValue } from './defaultValue' export const richTextValidate: Validate< unknown, unknown, - RichTextField, - RichTextField + RichTextField, + RichTextField > = (value, { required, t }) => { if (required) { const stringifiedDefaultValue = JSON.stringify(defaultRichTextValue) diff --git a/packages/richtext-slate/src/index.ts b/packages/richtext-slate/src/index.ts index a8fa8bb86..4adfb9cd2 100644 --- a/packages/richtext-slate/src/index.ts +++ b/packages/richtext-slate/src/index.ts @@ -9,7 +9,7 @@ import { richTextRelationshipPromise } from './data/richTextRelationshipPromise' import { richTextValidate } from './data/validation' import RichTextField from './field' -export function slateEditor(args: AdapterArguments): RichTextAdapter { +export function slateEditor(args: AdapterArguments): RichTextAdapter { return { CellComponent: withMergedProps({ Component: RichTextCell, diff --git a/packages/richtext-slate/src/types.ts b/packages/richtext-slate/src/types.ts index 87969f42a..f64f2842e 100644 --- a/packages/richtext-slate/src/types.ts +++ b/packages/richtext-slate/src/types.ts @@ -73,4 +73,4 @@ export type AdapterArguments = { } } -export type FieldProps = RichTextFieldProps +export type FieldProps = RichTextFieldProps