| | |
| | | import { read } from "to-vfile" |
| | | import config from "../quartz.config" |
| | | import { createProcessor } from "./processors/parse" |
| | | import { slugify } from "./path" |
| | | import path from "path" |
| | | import { ProcessedContent } from "./plugins/vfile" |
| | | |
| | | const transformers = config.plugins.transformers |
| | | const processor = createProcessor(transformers) |
| | | import sourceMapSupport from "source-map-support" |
| | | sourceMapSupport.install(options) |
| | | import cfg from "../quartz.config" |
| | | import { BuildCtx, WorkerSerializableBuildCtx } from "./util/ctx" |
| | | import { FilePath } from "./util/path" |
| | | import { |
| | | createFileParser, |
| | | createHtmlProcessor, |
| | | createMarkdownParser, |
| | | createMdProcessor, |
| | | } from "./processors/parse" |
| | | import { options } from "./util/sourcemap" |
| | | import { MarkdownContent, ProcessedContent } from "./plugins/vfile" |
| | | |
| | | // only called from worker thread |
| | | export async function parseFiles(baseDir: string, fps: string[], verbose: boolean) { |
| | | const res: ProcessedContent[] = [] |
| | | for (const fp of fps) { |
| | | const file = await read(fp) |
| | | |
| | | // base data properties that plugins may use |
| | | file.data.slug = slugify(path.relative(baseDir, file.path)) |
| | | file.data.filePath = fp |
| | | |
| | | const ast = processor.parse(file) |
| | | res.push([await processor.run(ast, file), file]) |
| | | |
| | | if (verbose) { |
| | | console.log(`[process] ${fp} -> ${file.data.slug}`) |
| | | } |
| | | export async function parseMarkdown( |
| | | partialCtx: WorkerSerializableBuildCtx, |
| | | fps: FilePath[], |
| | | ): Promise<MarkdownContent[]> { |
| | | const ctx: BuildCtx = { |
| | | ...partialCtx, |
| | | cfg, |
| | | } |
| | | return await createFileParser(ctx, fps)(createMdProcessor(ctx)) |
| | | } |
| | | |
| | | return res |
| | | // only called from worker thread |
| | | export function processHtml( |
| | | partialCtx: WorkerSerializableBuildCtx, |
| | | mds: MarkdownContent[], |
| | | ): Promise<ProcessedContent[]> { |
| | | const ctx: BuildCtx = { |
| | | ...partialCtx, |
| | | cfg, |
| | | } |
| | | return createMarkdownParser(ctx, mds)(createHtmlProcessor(ctx)) |
| | | } |