yumemi/gen/emit/root
束6 ── src/gen/root/<service>.gleam。Service の root / actor / 手順書の器。
root は allow module の Entity と Args の key / path_key 型から決める。
Actor は主体が1つなら その型、複数か Anyone だけなら pub type Actor = allow.Actor
(variant は gen/allow/<m> が持つ ── emit/allow)。
Values
pub fn actor_is_sum(subjects: List(model.Subject)) -> Bool
root の Actor が allow の Actor の別名になる形か。emit/allow が Actor の variant を集めるのに使う。
pub fn allow_path(service: model.Service) -> String
root が import する allow module の道。allow を import しない Service は module 名の _ 前。
pub fn carried(
app: model.App,
service: model.Service,
) -> List(#(String, String, String))
root に載せる入口の値(Carried)。
pub fn emit(
app: model.App,
hashes: hash.Hashes,
) -> List(types.File)
pub fn path_root(
app: model.App,
service: model.Service,
) -> option.Option(model.Entity)
口の path の導出が見る root。主体の行を root にする Service(OwnRoot)は path に鍵を持たない。
pub fn root_for(
app: model.App,
service: model.Service,
) -> option.Option(model.Entity)
pub fn shape_of(
app: model.App,
service: model.Service,
) -> option.Option(model.RootShape)
server.roots のうち root の Entity を決める行(Rootless / OwnRoot / RootOf)。
pub fn who_is_allow_entity(
app: model.App,
service: model.Service,
who: String,
) -> Bool
allow の句の who(As<X>)の X が allow の Entity そのものか(主体の行 = allow の行)。
句が全部 Self の読みを絞らない規則(emit/sql)と入口の相の門(emit/http の phaseGates)は
この形に限る(WGy r4)── X が別の Entity なら Self は読みの行を主体に縛る句で、門を主体の相で閉じない。
pub fn with_version(
app: model.App,
service: model.Service,
) -> Bool
root に version を載せるか(WithVersion)。