import { QuartzConfig } from "../cfg" import { QuartzPluginData } from "../plugins/vfile" import { FileTrieNode } from "./fileTrie" import { FilePath, FullSlug } from "./path" export interface Argv { directory: string verbose: boolean output: string serve: boolean watch: boolean port: number wsPort: number remoteDevHost?: string concurrency?: number } export type BuildTimeTrieData = QuartzPluginData & { slug: string title: string filePath: string } export interface BuildCtx { buildId: string argv: Argv cfg: QuartzConfig allSlugs: FullSlug[] allFiles: FilePath[] trie?: FileTrieNode incremental: boolean } export function trieFromAllFiles(allFiles: QuartzPluginData[]): FileTrieNode { const trie = new FileTrieNode([]) allFiles.forEach((file) => { if (file.frontmatter) { trie.add({ ...file, slug: file.slug!, title: file.frontmatter.title, filePath: file.filePath!, }) } }) return trie } export type WorkerSerializableBuildCtx = Omit