diff --git a/docs/plugins/overview.mdx b/docs/plugins/overview.mdx index 75e7e7e1b9..0622ccd25c 100644 --- a/docs/plugins/overview.mdx +++ b/docs/plugins/overview.mdx @@ -78,6 +78,8 @@ export default config; Payload Plugins are executed _after_ the incoming config is validated, sanitized, and default options are merged in. +However, after all plugins are executed, the full config with all plugins will be re-sanitized. + ## Simple example Here is an example for how to automatically add a `lastModifiedBy` field to all Payload collections using a Plugin written in TypeScript. diff --git a/src/config/build.ts b/src/config/build.ts index cd8480c50c..e91e8859a5 100644 --- a/src/config/build.ts +++ b/src/config/build.ts @@ -10,7 +10,8 @@ export function buildConfig(config: Config): SanitizedConfig { const sanitized = sanitize(config); if (Array.isArray(config.plugins)) { - return sanitized.plugins.reduce((configWithPlugins, plugin) => plugin(configWithPlugins), sanitized); + const configWithPlugins = sanitized.plugins.reduce((updatedConfig, plugin) => plugin(updatedConfig), sanitized); + return sanitize(configWithPlugins); } return sanitized; diff --git a/src/config/types.ts b/src/config/types.ts index 7bee5cdd1e..cb719b4de2 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -18,7 +18,7 @@ type Email = { } // eslint-disable-next-line no-use-before-define -type Plugin = (config: SanitizedConfig) => SanitizedConfig; +type Plugin = (config: Config) => Config; type GeneratePreviewURLOptions = { locale: string