Lower checked shared edges into the portable graph model
This commit is contained in:
@@ -213,17 +213,28 @@ export function generateComponentClientBindings(plan: ExecutionPlan, packageRevi
|
||||
`ExtraModuleProps<${JSON.stringify(JSON.stringify([iface, member]))}>`;
|
||||
// Preserve closed type arguments for the artifact consumer. Interpretation of
|
||||
// a particular module contract belongs to that consumer, not this compiler.
|
||||
const moduleArguments = (iface: InterfaceRevision) => `[${(iface.application?.arguments ?? []).map(argument => {
|
||||
if (argument.kind === "value") return tsType(argument.type);
|
||||
const target = argument.target;
|
||||
const reference = target.kind === "atom" ? `ManagedReference<"atom", ${JSON.stringify(target.atomId)}>` : `ManagedReference<"interface", ${JSON.stringify(target.interfaceRevisionId)}>`;
|
||||
const fields = target.kind === "interface" ? find(target.interfaceRevisionId).members.flatMap(member => {
|
||||
if ((member.kind !== "value" && member.kind !== "relationship") || !member.queryRead) return [];
|
||||
const getter = member.operations.find(operation => operation.displayName === (member.kind === "value" ? "get" : "resolve"));
|
||||
return getter ? [`readonly ${JSON.stringify(member.displayName)}: ${tsType(getter.outputType)}`] : [];
|
||||
}) : [];
|
||||
return `{readonly reference: ${reference}; readonly values: {${fields.join(";")}}}`;
|
||||
}).join(",")}]`;
|
||||
const moduleArguments = (iface: InterfaceRevision) =>
|
||||
`[${(iface.application?.arguments ?? [])
|
||||
.map((argument) => {
|
||||
if (argument.kind === "value") return tsType(argument.type);
|
||||
const target = argument.target;
|
||||
const reference =
|
||||
target.kind === "atom"
|
||||
? `ManagedReference<"atom", ${JSON.stringify(target.atomId)}>`
|
||||
: `ManagedReference<"interface", ${JSON.stringify(target.interfaceRevisionId)}>`;
|
||||
const fields =
|
||||
target.kind === "interface"
|
||||
? find(target.interfaceRevisionId).members.flatMap((member) => {
|
||||
if ((member.kind !== "value" && member.kind !== "relationship") || !member.queryRead) return [];
|
||||
const getter = member.operations.find(
|
||||
(operation) => operation.displayName === (member.kind === "value" ? "get" : "resolve"),
|
||||
);
|
||||
return getter ? [`readonly ${JSON.stringify(member.displayName)}: ${tsType(getter.outputType)}`] : [];
|
||||
})
|
||||
: [];
|
||||
return `{readonly reference: ${reference}; readonly values: {${fields.join(";")}}}`;
|
||||
})
|
||||
.join(",")}]`;
|
||||
const interfaces = generateInterfaceClientBindings(imports, "@quixos/camino-react", props);
|
||||
const subjectBindings = generateInterfaceClientBindings(subjects, "@quixos/camino-react", props)
|
||||
.split("\n")
|
||||
|
||||
Reference in New Issue
Block a user