in src/UriMapBuilder.hack [21:51]
public function getUriMap(
): ImmMap<HttpMethod, ImmMap<string, classname<TBase>>> {
$map = Map { };
foreach (HttpMethod::getValues() as $method) {
$map[$method] = Map { };
}
$controllers = $this->controllerFacts->getControllers();
foreach ($controllers as $controller => $methods) {
$path = $controller::getUriPattern()->getFastRouteFragment();
foreach ($methods as $method) {
invariant(
!$map[$method]->containsKey($path),
"Duplicate entry for path '%s': '%s' and '%s'",
$path,
$map[$method]->at($path),
$controller,
);
$map[$method][$path] = $controller;
}
}
foreach ($map as $submap) {
\natsort(inout $submap);
}
return $map
->filter($submap ==> !$submap->isEmpty())
->map($submap ==> $submap->immutable())
->immutable();
}