in src/router/PrefixMatching/PrefixMap.php [143:159]
private static function groupByCommonPrefix(
keyset<string> $keys,
): (int, dict<string, keyset<string>>) {
if (C\is_empty($keys)) {
return tuple(0, dict[]);
}
$lens = Vec\map($keys, $key ==> Str\length($key));
$prefix_length = \min($lens);
invariant($prefix_length !== 0, "Shouldn't have 0-length prefixes");
return tuple(
$prefix_length,
$keys
|> Dict\group_by($$, $key ==> Str\slice($key, 0, $prefix_length))
|> Dict\map($$, $vec ==> keyset($vec)),
);
}