private static function groupByCommonPrefix()

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)),
    );
  }