Files
quixos-protocol/src/capability-language/query-generator.ts
T

19 lines
958 B
TypeScript
Raw Normal View History

import path from "node:path";
import { pathToFileURL } from "node:url";
import type { PackageQueryGenerator } from "./assembly.js";
/** The build invoker selects this executable explicitly. Never resolve a
* generator by a capability name or execute a module discovered in user QX. */
export async function loadQueryGenerator(filename?: string): Promise<PackageQueryGenerator | undefined> {
if (!filename) return undefined;
const module = await import(pathToFileURL(path.resolve(filename)).href);
if (typeof module.generatePackageQueries !== "function")
throw new Error("Query generator must export generatePackageQueries");
const generator: PackageQueryGenerator = module.generatePackageQueries;
if (module.completeWorkspace !== undefined) {
if (typeof module.completeWorkspace !== "function") throw new Error("completeWorkspace must be a function");
generator.completeWorkspace = module.completeWorkspace;
}
return generator;
}