| | |
| | | import { StaticResources } from "../resources" |
| | | import { ProcessedContent } from "./vfile" |
| | | import { GlobalConfiguration } from "../cfg" |
| | | import { QuartzComponent } from "../components/types" |
| | | import { FilePath, ServerSlug } from "../path" |
| | | |
| | | export abstract class QuartzTransformerPlugin { |
| | | abstract name: string |
| | | abstract markdownPlugins(): PluggableList |
| | | abstract htmlPlugins(): PluggableList |
| | | externalResources?: Partial<StaticResources> |
| | | export interface PluginTypes { |
| | | transformers: QuartzTransformerPluginInstance[] |
| | | filters: QuartzFilterPluginInstance[] |
| | | emitters: QuartzEmitterPluginInstance[] |
| | | } |
| | | |
| | | export abstract class QuartzFilterPlugin { |
| | | abstract name: string |
| | | abstract shouldPublish(content: ProcessedContent): boolean |
| | | type OptionType = object | undefined |
| | | export type QuartzTransformerPlugin<Options extends OptionType = undefined> = ( |
| | | opts?: Options, |
| | | ) => QuartzTransformerPluginInstance |
| | | export type QuartzTransformerPluginInstance = { |
| | | name: string |
| | | textTransform?: (src: string | Buffer) => string | Buffer |
| | | markdownPlugins?: () => PluggableList |
| | | htmlPlugins?: () => PluggableList |
| | | externalResources?: () => Partial<StaticResources> |
| | | } |
| | | |
| | | export type QuartzFilterPlugin<Options extends OptionType = undefined> = ( |
| | | opts?: Options, |
| | | ) => QuartzFilterPluginInstance |
| | | export type QuartzFilterPluginInstance = { |
| | | name: string |
| | | shouldPublish(content: ProcessedContent): boolean |
| | | } |
| | | |
| | | export type QuartzEmitterPlugin<Options extends OptionType = undefined> = ( |
| | | opts?: Options, |
| | | ) => QuartzEmitterPluginInstance |
| | | export type QuartzEmitterPluginInstance = { |
| | | name: string |
| | | emit( |
| | | contentDir: string, |
| | | cfg: GlobalConfiguration, |
| | | content: ProcessedContent[], |
| | | resources: StaticResources, |
| | | emitCallback: EmitCallback, |
| | | ): Promise<FilePath[]> |
| | | getQuartzComponents(): QuartzComponent[] |
| | | } |
| | | |
| | | export interface EmitOptions { |
| | | slug: string |
| | | ext: `.${string}` |
| | | slug: ServerSlug |
| | | ext: `.${string}` | "" |
| | | content: string |
| | | } |
| | | |
| | | export type EmitCallback = (data: EmitOptions) => Promise<string> |
| | | export abstract class QuartzEmitterPlugin { |
| | | abstract name: string |
| | | abstract emit(cfg: GlobalConfiguration, content: ProcessedContent[], resources: StaticResources, emitCallback: EmitCallback): Promise<string[]> |
| | | } |
| | | |
| | | export interface PluginTypes { |
| | | transformers: QuartzTransformerPlugin[], |
| | | filters: QuartzFilterPlugin[], |
| | | emitters: QuartzEmitterPlugin[], |
| | | } |
| | | export type EmitCallback = (data: EmitOptions) => Promise<FilePath> |