inspector_declaration.bend
bendvy-ecs-core@0.1.0.0 · 21 lines · 0 definitions
1import Base
2import inspector_metadata.bend as Meta
3import inspector.bend as I
4import capabilities.bend as Cap
5
6# Trusted schema authoring only, like component.Family's indexed closed lens.
7# The index binds which projection constructs this grant; it does not prove an
8# arbitrary caller's numeric token/name/lens assertion is canonical or truthful.
9type Declaration<-S:Data,-R:Type,-V:Data,-Token:Data,-project:R -> R & V> is Data:
10 Declaration{id:U32,name:String}
11type BoundRead<-S:Data,-H:Type,-V:Data> is Type:
12 BoundRead{metadata:Meta.Resource<S>,read:Cap.ValueRead<H,V>}
13
14def canonical(~S:Data,~R:Type,~V:Data,~Token:Data,~project:R -> R & V,id:U32,name:String) -> Declaration<S,R,V,Token,project>:
15 Declaration{id,name}
16def bind(~S:Data,~Store:Type,~R:Type,~E:Data,~V:Data,~Token:Data,~project:R -> R & V,declaration:Declaration<S,R,V,Token,project>) -> BoundRead<S,I.Frame<S,Store,R,E>,V>:
17 match declaration:
18 case Declaration{id,name}:BoundRead{Meta.Resource{id,name},I.read_resource(~S,~Store,~R,~E,~V,~project)}
19def split(~S:Data,~H:Type,~V:Data,bound:BoundRead<S,H,V>) -> Meta.Resource<S> & Cap.ValueRead<H,V>:
20 match bound:
21 case BoundRead{metadata,read}:(metadata,read)