#!/usr/bin/env node // Data only: never load files, resolve repositories, or evaluate code. import { parseQx } from "./source.js"; import { parseQuixosLockDocument } from "../resource-lock/parser.js"; let input = ""; for await (const chunk of process.stdin) { input += chunk; if (Buffer.byteLength(input) > 6 * 1024 * 1024) throw new Error("Inspection input exceeds limit"); } const files: { path: string; source: string }[] = JSON.parse(input); if (!Array.isArray(files) || files.length > 128) throw new Error("Too many source files"); const result = files.map(({ path, source }) => { if (typeof path !== "string" || typeof source !== "string" || source.length > 262144) throw new Error("Invalid source input"); if (path.endsWith(".qx")) { const parsed = parseQx(source, path); return { path, root: parsed.root, diagnostics: parsed.diagnostics }; } return { path, lock: parseQuixosLockDocument(source, path) }; }); process.stdout.write(JSON.stringify(result));