import assert from "node:assert/strict"; import { test } from "node:test"; import { loadReaderWorkspace } from "./reader-fixture.js"; import { compileExecutionPlan, compileQueryProgram } from "../src/execution-world/index.js"; import { compileInspectionTemplates } from "../src/execution-world/inspection.js"; test("public member inspection installs a finite set of typed lazy templates", async () => { const plan = compileExecutionPlan(await loadReaderWorkspace()); const result = compileInspectionTemplates(plan); assert.ok(result.templates.length); const document = result.templates.find( (template) => template.members.some((member) => member.name === "content") && template.members.some((member) => member.name === "highlights"), )!; assert.ok(document.inputs && document.view && document.server && document.completeInputs && document.completeView); assert.equal(document.completeView.sourceQuery, document.completeInputs.query); assert.equal(document.view.sourceQuery, document.inputs.query); assert.ok(document.members.find((member) => member.name === "highlights")?.many); assert.ok(!document.members.some((member) => member.name === "revise")); const compiled = compileQueryProgram(plan) as { queries: { id: string; selection: { selection: { conditions: unknown[] }[] }[] }[]; }; for (const descriptor of result.contracts) { const query = compiled.queries.find( (query) => query.id === JSON.stringify([descriptor.package, descriptor.query]), )!; assert.ok(query); assert.ok( query.selection[0]!.selection.every((field) => field.conditions.length === 1), "Each field admission is independently selected", ); } assert.ok(!JSON.stringify(result.templates).includes("slot:")); assert.equal(result.queries.length, result.contracts.length); assert.ok(result.queries.length <= plan.definition.workspace.interfaceImports.length * 5); });