31 lines
882 B
TypeScript
31 lines
882 B
TypeScript
|
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)
|
||
|
|
||
|
// 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}`)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return res
|
||
|
}
|