import { buildConfig } from 'payload'; import { postgresAdapter } from '@payloadcms/db-postgres'; import { lexicalEditor } from '@payloadcms/richtext-lexical'; import sharp from 'sharp'; import path from 'path'; import { fileURLToPath } from 'url'; import { nodemailerAdapter } from '@payloadcms/email-nodemailer'; import { BlocksFeature } from '@payloadcms/richtext-lexical'; import { payloadBlocks } from './src/payload/blocks/allBlocks'; // Disable sharp cache to prevent memory leaks in Docker sharp.cache(false); import { Users } from './src/payload/collections/Users'; import { Media } from './src/payload/collections/Media'; import { Posts } from './src/payload/collections/Posts'; import { FormSubmissions } from './src/payload/collections/FormSubmissions'; import { Products } from './src/payload/collections/Products'; import { Pages } from './src/payload/collections/Pages'; const filename = fileURLToPath(import.meta.url); const dirname = path.dirname(filename); export default buildConfig({ admin: { user: Users.slug, importMap: { baseDir: path.resolve(dirname), }, }, collections: [Users, Media, Posts, FormSubmissions, Products, Pages], editor: lexicalEditor({ features: ({ defaultFeatures }) => [ ...defaultFeatures, BlocksFeature({ blocks: payloadBlocks, }), ], }), secret: process.env.PAYLOAD_SECRET || 'fallback-secret-for-dev', typescript: { outputFile: path.resolve(dirname, 'payload-types.ts'), }, db: postgresAdapter({ pool: { connectionString: process.env.DATABASE_URI || process.env.POSTGRES_URI || 'postgresql://payload:120in09oenaoinsd9iaidon@localhost:5432/payload', }, }), email: nodemailerAdapter({ defaultFromAddress: process.env.MAIL_FROM?.replace(/.*<|>.*/g, '') || 'postmaster@mg.mintel.me', defaultFromName: process.env.MAIL_FROM?.split('<')[0]?.trim() || 'KLZ Cables', transportOptions: { host: process.env.MAIL_HOST || 'smtp.eu.mailgun.org', port: Number(process.env.MAIL_PORT) || 587, auth: { user: process.env.MAIL_USERNAME, pass: process.env.MAIL_PASSWORD, }, }, }), sharp, plugins: [], });