| | |
| | | import { QuartzComponent } from "../components/types" |
| | | import { FilePath } from "../util/path" |
| | | import { BuildCtx } from "../util/ctx" |
| | | import DepGraph from "../depgraph" |
| | | import { VFile } from "vfile" |
| | | |
| | | export interface PluginTypes { |
| | | transformers: QuartzTransformerPluginInstance[] |
| | |
| | | } |
| | | |
| | | type OptionType = object | undefined |
| | | type ExternalResourcesFn = (ctx: BuildCtx) => Partial<StaticResources> | undefined |
| | | export type QuartzTransformerPlugin<Options extends OptionType = undefined> = ( |
| | | opts?: Options, |
| | | ) => QuartzTransformerPluginInstance |
| | |
| | | textTransform?: (ctx: BuildCtx, src: string) => string |
| | | markdownPlugins?: (ctx: BuildCtx) => PluggableList |
| | | htmlPlugins?: (ctx: BuildCtx) => PluggableList |
| | | externalResources?: (ctx: BuildCtx) => Partial<StaticResources> |
| | | externalResources?: ExternalResourcesFn |
| | | } |
| | | |
| | | export type QuartzFilterPlugin<Options extends OptionType = undefined> = ( |
| | |
| | | shouldPublish(ctx: BuildCtx, content: ProcessedContent): boolean |
| | | } |
| | | |
| | | export type ChangeEvent = { |
| | | type: "add" | "change" | "delete" |
| | | path: FilePath |
| | | file?: VFile |
| | | } |
| | | |
| | | export type QuartzEmitterPlugin<Options extends OptionType = undefined> = ( |
| | | opts?: Options, |
| | | ) => QuartzEmitterPluginInstance |
| | | export type QuartzEmitterPluginInstance = { |
| | | name: string |
| | | emit(ctx: BuildCtx, content: ProcessedContent[], resources: StaticResources): Promise<FilePath[]> |
| | | getQuartzComponents(ctx: BuildCtx): QuartzComponent[] |
| | | getDependencyGraph?( |
| | | emit: ( |
| | | ctx: BuildCtx, |
| | | content: ProcessedContent[], |
| | | resources: StaticResources, |
| | | ): Promise<DepGraph<FilePath>> |
| | | ) => Promise<FilePath[]> | AsyncGenerator<FilePath> |
| | | partialEmit?: ( |
| | | ctx: BuildCtx, |
| | | content: ProcessedContent[], |
| | | resources: StaticResources, |
| | | changeEvents: ChangeEvent[], |
| | | ) => Promise<FilePath[]> | AsyncGenerator<FilePath> | null |
| | | /** |
| | | * Returns the components (if any) that are used in rendering the page. |
| | | * This helps Quartz optimize the page by only including necessary resources |
| | | * for components that are actually used. |
| | | */ |
| | | getQuartzComponents?: (ctx: BuildCtx) => QuartzComponent[] |
| | | externalResources?: ExternalResourcesFn |
| | | } |