UNPKG

staticql

Version:

Type-safe query engine for static content including Markdown, YAML, JSON, and more.

37 lines (36 loc) 1.59 kB
import { SourceConfigResolver } from "./SourceConfigResolver.js"; import { registerParser } from "./parser/index.js"; import { StaticQL } from "./StaticQL.js"; import { MultiRepository } from "./repository/MultiRepository.js"; /** * Factory function to create a StaticQL instance. * * @param config - The StaticQL configuration object. * @returns A factory function that accepts a repository and optional init options. */ export function defineStaticQL(config) { return ({ repository, defaultRepository, sourceRepositories, writeRepository, options = {}, }) => { // inject custom parsers if provided via options if (options.parsers) { for (const [type, parser] of Object.entries(options.parsers)) { registerParser(type, parser); } } const sourceConfigResolver = new SourceConfigResolver(config.sources); let repo; if (defaultRepository || sourceRepositories || writeRepository) { repo = new MultiRepository(defaultRepository ?? repository, sourceRepositories, writeRepository ?? defaultRepository ?? repository); } else { if (!repository) { throw new Error("StaticQL requires a repository instance"); } repo = repository; } if ("setResolver" in repo && typeof repo.setResolver === "function") { repo.setResolver(sourceConfigResolver); } return new StaticQL(config, repo, sourceConfigResolver, options); }; } export { ConsoleLogger } from "./logger/ConsoleLogger.js";