Fixes this: https://github.com/user-attachments/assets/cf78082d-9054-4324-90cd-c81219a4f26d
177 lines
4.3 KiB
TypeScript
177 lines
4.3 KiB
TypeScript
import type { Config, SanitizedConfig } from 'payload'
|
|
|
|
import {
|
|
AlignFeature,
|
|
BlockquoteFeature,
|
|
BlocksFeature,
|
|
BoldFeature,
|
|
ChecklistFeature,
|
|
HeadingFeature,
|
|
IndentFeature,
|
|
InlineCodeFeature,
|
|
InlineToolbarFeature,
|
|
ItalicFeature,
|
|
lexicalEditor,
|
|
LinkFeature,
|
|
OrderedListFeature,
|
|
ParagraphFeature,
|
|
RelationshipFeature,
|
|
StrikethroughFeature,
|
|
SubscriptFeature,
|
|
SuperscriptFeature,
|
|
TreeViewFeature,
|
|
UnderlineFeature,
|
|
UnorderedListFeature,
|
|
UploadFeature,
|
|
} from '@payloadcms/richtext-lexical'
|
|
// import { slateEditor } from '@payloadcms/richtext-slate'
|
|
import { buildConfig } from 'payload'
|
|
import { de } from 'payload/i18n/de'
|
|
import { en } from 'payload/i18n/en'
|
|
import { es } from 'payload/i18n/es'
|
|
import sharp from 'sharp'
|
|
|
|
import { databaseAdapter } from './databaseAdapter.js'
|
|
import { reInitEndpoint } from './helpers/reInit.js'
|
|
import { localAPIEndpoint } from './helpers/sdk/endpoint.js'
|
|
import { testEmailAdapter } from './testEmailAdapter.js'
|
|
|
|
// process.env.POSTGRES_URL = 'postgres://postgres:postgres@127.0.0.1:5432/payloadtests'
|
|
// process.env.PAYLOAD_DATABASE = 'postgres'
|
|
// process.env.PAYLOAD_DATABASE = 'sqlite'
|
|
|
|
export async function buildConfigWithDefaults(
|
|
testConfig?: Partial<Config>,
|
|
options?: {
|
|
disableAutoLogin?: boolean
|
|
},
|
|
): Promise<SanitizedConfig> {
|
|
const config: Config = {
|
|
db: databaseAdapter,
|
|
editor: lexicalEditor({
|
|
features: [
|
|
ParagraphFeature(),
|
|
RelationshipFeature(),
|
|
LinkFeature({
|
|
fields: ({ defaultFields }) => [
|
|
...defaultFields,
|
|
{
|
|
name: 'description',
|
|
type: 'text',
|
|
},
|
|
],
|
|
}),
|
|
ChecklistFeature(),
|
|
UnorderedListFeature(),
|
|
OrderedListFeature(),
|
|
AlignFeature(),
|
|
BlockquoteFeature(),
|
|
BoldFeature(),
|
|
ItalicFeature(),
|
|
UploadFeature({
|
|
collections: {
|
|
media: {
|
|
fields: [
|
|
{
|
|
name: 'alt',
|
|
type: 'text',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
}),
|
|
UnderlineFeature(),
|
|
StrikethroughFeature(),
|
|
SubscriptFeature(),
|
|
SuperscriptFeature(),
|
|
InlineCodeFeature(),
|
|
InlineToolbarFeature(),
|
|
TreeViewFeature(),
|
|
HeadingFeature(),
|
|
IndentFeature(),
|
|
BlocksFeature({
|
|
blocks: [
|
|
{
|
|
slug: 'myBlock',
|
|
fields: [
|
|
{
|
|
name: 'someText',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'someTextRequired',
|
|
type: 'text',
|
|
required: true,
|
|
},
|
|
{
|
|
name: 'radios',
|
|
type: 'radio',
|
|
options: [
|
|
{
|
|
label: 'Option 1',
|
|
value: 'option1',
|
|
},
|
|
{
|
|
label: 'Option 2',
|
|
value: 'option2',
|
|
},
|
|
{
|
|
label: 'Option 3',
|
|
value: 'option3',
|
|
},
|
|
],
|
|
validate: (value) => {
|
|
return value !== 'option2' ? true : 'Cannot be option2'
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}),
|
|
],
|
|
}),
|
|
email: testEmailAdapter,
|
|
endpoints: [localAPIEndpoint, reInitEndpoint],
|
|
secret: 'TEST_SECRET',
|
|
sharp,
|
|
telemetry: false,
|
|
...testConfig,
|
|
i18n: {
|
|
supportedLanguages: {
|
|
de,
|
|
en,
|
|
es,
|
|
},
|
|
...(testConfig?.i18n || {}),
|
|
},
|
|
typescript: {
|
|
declare: {
|
|
ignoreTSError: true,
|
|
},
|
|
...testConfig?.typescript,
|
|
},
|
|
}
|
|
|
|
if (!config.admin) {
|
|
config.admin = {}
|
|
}
|
|
|
|
if (config.admin.autoLogin === undefined) {
|
|
config.admin.autoLogin =
|
|
process.env.PAYLOAD_PUBLIC_DISABLE_AUTO_LOGIN === 'true' || options?.disableAutoLogin
|
|
? false
|
|
: {
|
|
email: 'dev@payloadcms.com',
|
|
}
|
|
}
|
|
|
|
if (process.env.PAYLOAD_DISABLE_ADMIN === 'true') {
|
|
if (typeof config.admin !== 'object') {
|
|
config.admin = {}
|
|
}
|
|
config.admin.disable = true
|
|
}
|
|
|
|
return await buildConfig(config)
|
|
}
|