| | |
| | | import { BuildCtx } from "../ctx" |
| | | import { PerfTimer } from "../perf" |
| | | import { QuartzFilterPluginInstance } from "../plugins/types" |
| | | import { ProcessedContent } from "../plugins/vfile" |
| | | |
| | | export function filterContent( |
| | | { cfg, argv }: BuildCtx, |
| | | content: ProcessedContent[], |
| | | ): ProcessedContent[] { |
| | | const perf = new PerfTimer() |
| | | const initialLength = content.length |
| | | for (const plugin of cfg.plugins.filters) { |
| | | const updatedContent = content.filter(plugin.shouldPublish) |
| | | |
| | | if (argv.verbose) { |
| | | const diff = content.filter((x) => !updatedContent.includes(x)) |
| | | for (const file of diff) { |
| | | console.log(`[filter:${plugin.name}] ${file[1].data.slug}`) |
| | | } |
| | | } |
| | | |
| | | content = updatedContent |
| | | } |
| | | |
| | | console.log(`Filtered out ${initialLength - content.length} files in ${perf.timeSince()}`) |
| | | return content |
| | | } |