/** Qualification artifact emitted after tests, never a production fixture dependency. */ import { mkdir, writeFile } from "node:fs/promises"; import { loadReaderWorkspace } from "./reader-fixture.js"; import { compileKernelProgram } from "../src/execution-world/kernel.js"; import { compileExecutionPlan } from "../src/execution-world/plan.js"; import { generatePortableTypeScriptBindings } from "../src/bindings/portable.js"; import { generatePortableClientBindings } from "../src/bindings/portable-client.js"; import { loadCompositeWorkspace } from "./composite-fixture.js"; const plan = compileExecutionPlan(await loadReaderWorkspace()); await mkdir("dist/portable-reader", { recursive: true }); for (const target of ["browser", "server"]) await writeFile( `dist/portable-reader/${target}.ts`, generatePortableTypeScriptBindings(plan.definition.bindingSchema, "package:reader-runtime@1", { target }), ); await writeFile("dist/portable-reader/plan.json", JSON.stringify(plan)); await writeFile("dist/portable-reader/kernel.json", JSON.stringify(compileKernelProgram(plan))); await writeFile("dist/portable-reader/client.ts", generatePortableClientBindings(plan, { target: "browser" })); const serviceWorkspace = structuredClone(plan.definition.workspace); serviceWorkspace.atoms = []; serviceWorkspace.conformances = []; serviceWorkspace.constructors = []; serviceWorkspace.interfaceImports = []; serviceWorkspace.sharedAttachments = []; serviceWorkspace.packageImports[0]!.queries = []; serviceWorkspace.packageImports[0]!.checkedQueries = []; const original = serviceWorkspace.packageImports[0]!.exports.find((e) => e.kind === "function")!; serviceWorkspace.packageImports[0]!.exports = [ { ...original, kind: "function", execution: { kind: "remote" }, inputType: { kind: "scalar", name: "string" }, outputType: { kind: "scalar", name: "string" }, dependencyPorts: [], }, ]; await writeFile("dist/portable-reader/service-plan.json", JSON.stringify(compileExecutionPlan(serviceWorkspace))); const composite = compileExecutionPlan(await loadCompositeWorkspace()); await mkdir("dist/portable-reader/composite", { recursive: true }); await writeFile("dist/portable-reader/composite/plan.json", JSON.stringify(composite)); await writeFile("dist/portable-reader/composite/kernel.json", JSON.stringify(compileKernelProgram(composite))); for (const target of ["browser", "server"]) for (const [name, revision] of [ ["reader", "package:reader-runtime@1"], ["comment", "package:comment-runtime@1"], ] as const) await writeFile( `dist/portable-reader/composite/${name}-${target}.ts`, generatePortableTypeScriptBindings(composite.definition.bindingSchema, revision, { target }), );