UNPKG

sanity

Version:

Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches

44 lines (37 loc) 1.38 kB
import {deprecatedScheduledPublishingPlugin} from '../deprecatedPlugins/DeprecatedScheduledPublishing' import {type PluginOptions} from './types' const DEPRECATED_PLUGINS = [ // Scheduled publishing is added by default, we are filtering to avoid duplicates 'scheduled-publishing', ] /** * @internal * * This function flattens the config tree into a list of configs in the order they should be applied. */ export const flattenConfig = ( {plugins = [], ...currentConfig}: PluginOptions, path: string[], ): Array<{config: PluginOptions; path: string[]}> => { // The APIs used at the root config level const rootConfig = {config: currentConfig, path: [...path, currentConfig.name]} // An array with the APIs used in plugins const allPlugins = plugins.flatMap((plugin) => flattenConfig(plugin, [...path, currentConfig.name]), ) const deprecatedScheduledPublishing = allPlugins.find( (p) => p.config.name === 'scheduled-publishing', ) if (deprecatedScheduledPublishing) { // Add the deprecated plugin error to the plugins list, to show the error to users. allPlugins.push({ path: deprecatedScheduledPublishing.path, config: deprecatedScheduledPublishingPlugin(), }) } const resolved = [ ...allPlugins.filter((plugin) => !DEPRECATED_PLUGINS.includes(plugin.config.name)), rootConfig, ] return resolved }