Build composable Camino packages with explicit type and source dependencies
This commit is contained in:
+10
-5
@@ -17,24 +17,29 @@ export type BindingSchema = {
|
||||
interfaceTemplates?: InterfaceRevision[];
|
||||
packages: PackageRevision[];
|
||||
};
|
||||
export const bindingSchema = (compiled: Pick<CompiledCapabilityResourceRepository, "resources">): BindingSchema => ({
|
||||
export const bindingSchema = (
|
||||
compiled: Pick<CompiledCapabilityResourceRepository, "resources"> &
|
||||
Partial<Pick<CompiledCapabilityResourceRepository, "capabilityResources">>,
|
||||
): BindingSchema => ({
|
||||
format: "quixos-bindings",
|
||||
version: 1,
|
||||
interfaceTemplates: compiled.resources.flatMap((node) =>
|
||||
interfaceTemplates: (compiled.capabilityResources ?? compiled.resources).flatMap((node) =>
|
||||
node.resource.kind === "interface" && node.resource.revision.template ? [node.resource.revision] : [],
|
||||
),
|
||||
interfaces: [
|
||||
...new Map(
|
||||
compiled.resources
|
||||
(compiled.capabilityResources ?? compiled.resources)
|
||||
.flatMap((node) => [
|
||||
...(node.resource.kind === "interface" ? [node.resource.revision] : []),
|
||||
...(node.resource.specializations ?? []),
|
||||
...(node.resource.kind === "build" ? [] : (node.resource.specializations ?? [])),
|
||||
])
|
||||
.filter((entry) => !entry.template)
|
||||
.map((entry) => [entry.revisionId, entry]),
|
||||
).values(),
|
||||
],
|
||||
packages: compiled.resources.flatMap((node) => (node.resource.kind === "package" ? [node.resource.revision] : [])),
|
||||
packages: (compiled.capabilityResources ?? compiled.resources).flatMap((node) =>
|
||||
node.resource.kind === "package" ? [node.resource.revision] : [],
|
||||
),
|
||||
});
|
||||
|
||||
export const specializeBindingSchema = (
|
||||
|
||||
Reference in New Issue
Block a user