diff --git a/test/emit-controllers.ts b/test/emit-controllers.ts index c342f6e..633953f 100644 --- a/test/emit-controllers.ts +++ b/test/emit-controllers.ts @@ -3,6 +3,8 @@ import { readFile, mkdir, writeFile } from "node:fs/promises"; import { compileCapabilityResourceSource, compileCapabilitySource } from "../src/capability-language/index.js"; import { compileQuery } from "../src/query/compile.js"; import { parseControllerCatalog } from "../src/capability-model/controllers.js"; +import { presentationDeclarations, preparationArtifact } from "../src/react-build/declarations.js"; +import { compileQueryComposition } from "../src/query/composition.js"; import { compileExecutionPlan, generateInterfaceClientBindings, @@ -59,6 +61,11 @@ const viewerPackage = viewer.resource.revision; viewerPackage.checkedQueries = await Promise.all( viewerPackage.queries!.map((query) => compileQuery(query, [iface], read)), ); +const preparation = presentationDeclarations(await read("quixos.react.json"), viewerPackage, environment.interfaceClosure); +viewerPackage.buildArtifacts = { [preparationArtifact]: preparation.artifact }; +viewerPackage.queryCompositions = preparation.compositions.map((entry) => + compileQueryComposition(entry, new Map(viewerPackage.checkedQueries!.map((query) => [query.declaration.id, query]))), +); for (const variant of ["controller", "controller-next"]) { const extra = variant.endsWith("next") ? 'atom Dashboard id "dashboard"; import package DeviceViewer; presentation DeviceStatus id "device:status" for Device using DeviceViewer.Status;' diff --git a/test/fixtures/controller-device/quixos.react.json b/test/fixtures/controller-device/quixos.react.json new file mode 100644 index 0000000..a4585d8 --- /dev/null +++ b/test/fixtures/controller-device/quixos.react.json @@ -0,0 +1,7 @@ +{ + "modules": { + "Status": { + "inputs": [{ "name": "view", "query": "View", "root": { "from": "input", "path": ["subject"] }, "arguments": { "record": {} } }] + } + } +}