import { Template as NunjucksTemplate } from 'nunjucks'; import { Page } from '../Page/index.js'; import { VariableProcessor } from '../variables/VariableProcessor.js'; import { ExternalManager } from '../External/ExternalManager.js'; import { SiteLinkManager } from '../html/SiteLinkManager.js'; import { PluginManager } from '../plugins/PluginManager.js'; import type { FrontMatter } from '../plugins/Plugin.js'; import { SiteConfig, SiteConfigPage } from './SiteConfig.js'; import { LayoutManager } from '../Layout/index.js'; export type PageCreationConfig = { externalScripts: string[]; frontmatter: FrontMatter; layout?: string; pageSrc: string; searchable: boolean; faviconUrl?: string; glob?: string; globExclude?: string; title?: string; fileExtension?: string; }; export type AddressablePage = { frontmatter?: FrontMatter; layout?: string; searchable?: string | boolean; src: string; externalScripts?: string[]; faviconUrl?: string; title?: string; fileExtension?: string; }; /** * Manages the lifecycle and configuration of pages within the site. * Handles page creation, collection of addressable pages, and dependency tracking. */ export declare class SitePagesManager { rootPath: string; outputPath: string; pageTemplatePath: string; pageTemplate: NunjucksTemplate; pages: Page[]; addressablePages: AddressablePage[]; addressablePagesSource: string[]; siteConfig: SiteConfig; variableProcessor: VariableProcessor; pluginManager: PluginManager; siteLinkManager: SiteLinkManager; externalManager: ExternalManager; layoutManager: LayoutManager; baseUrlMap: Set; isDevMode: boolean; pagefindIndexingSucceeded: boolean; constructor(rootPath: string, outputPath: string, isDevMode: boolean); setBaseUrlMap(baseUrlMap: Set): void; /** * Create a Page object from the site and page creation config. */ createPage(config: PageCreationConfig): Page; /** * Updates the paths to be traversed as addressable pages and returns a list of filepaths to be deleted */ updateAddressablePages(): string[]; getPageGlobPaths(page: SiteConfigPage, pagesExclude: string[]): string[]; /** * Collects the paths to be traversed as addressable pages */ collectAddressablePages(): void; /** * Creates new pages and replaces the original pages with the updated version */ updatePages(pagesToUpdate: AddressablePage[]): void; /** * Checks if a specified file path is a dependency of a page * @param filePath file path to check * @returns whether the file path is a dependency of any of the site's pages */ isDependencyOfPage(filePath: string): boolean; /** * Checks if a specified file path satisfies a src or glob in any of the page configurations. * @param filePath file path to check * @returns whether the file path satisfies any glob */ isFilepathAPage(filePath: string): boolean; getFavIconUrl(): string | undefined; /** * Maps an array of addressable pages to an array of Page object */ mapAddressablePagesToPages(addressablePages: AddressablePage[], faviconUrl: string | undefined): void; /** * Creates and returns a new Page with the given page config details and favicon url * @param page config * @param faviconUrl of the page */ createNewPage(page: AddressablePage, faviconUrl: string | undefined): Page; } //# sourceMappingURL=SitePagesManager.d.ts.map