config

🧩 Syntax:
import path from 'path'

const mockModulePath = path.resolve(__dirname, './mocks/emptyObject.js');

import { payloadCloud } from '@payloadcms/plugin-cloud'
import { mongooseAdapter } from '@payloadcms/db-mongodb'
import { webpackBundler } from '@payloadcms/bundler-webpack'
import { slateEditor } from '@payloadcms/richtext-slate'
import { buildConfig } from 'payload/config'

import { cloudStorage } from '@payloadcms/plugin-cloud-storage';
import { s3Adapter } from '@payloadcms/plugin-cloud-storage/s3';

import Users from './collections/Users'
import FormSubmissions from './collections/FormSubmissions'
import Study from './collections/Study'
import Media from './collections/Media';

const adapter = s3Adapter({
  config: {
    endpoint: process.env.S3_ENDPOINT, // Configure for your provider
    credentials: {
      accessKeyId: process.env.S3_ACCESS_KEY_ID,
      secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
    },
		region: process.env.S3_REGION,
  },
  bucket: process.env.S3_BUCKET,
})

export default buildConfig({
	// serverURL: process.env.PAYLOAD_PUBLIC_SERVER_URL,
	cors: [
    process.env.PAYLOAD_PUBLIC_SERVER_URL,
    'http://localhost:9001'
  ].filter(Boolean),
  csrf: [
    process.env.PAYLOAD_PUBLIC_SERVER_URL,
    'http://localhost:9001'
  ].filter(Boolean),
  admin: {
    user: Users.slug,
    bundler: webpackBundler(),
		webpack: (config) => ({
      ...config,
      resolve: {
        ...config.resolve,
        alias: {
          ...config.resolve?.alias,
          // stripe: mockModulePath,
          // express: mockModulePath,
          fs: mockModulePath,
          // zlib: mockModulePath,
          // stream: mockModulePath,
        },
      },
    }),
  },
  editor: slateEditor({}),
  collections: [
		Users,
		FormSubmissions,
		Study,
		Media
	],
  typescript: {
    outputFile: path.resolve(__dirname, 'payload-types.ts'),
  },
  graphQL: {
    schemaOutputFile: path.resolve(__dirname, 'generated-schema.graphql'),
  },
  plugins: [
		// payloadCloud(),
		cloudStorage({
      collections: {
        'media': {
          adapter
        },
      },
    }),
	],
  db: mongooseAdapter({
    url: process.env.DATABASE_URI,
  }),
})