export function generatePrefix()

in packages/graph-explorer/src/utils/generatePrefixes.ts [83:133]


export function generatePrefix(url: URL): Omit<PrefixTypeConfig, "__count"> {
  const paths = url.pathname.replace(/^\//, "").split("/");

  if (paths.length === 1) {
    const prefix = prefixFromHost(url.host);
    return {
      __inferred: true,
      uri: url.origin + "/",
      prefix,
    };
  }

  if (
    paths.length === 2 &&
    (paths[0].toLowerCase() === "ontology" ||
      paths[0].toLowerCase() === "resource" ||
      paths[0].toLowerCase() === "class")
  ) {
    const prefix =
      prefixFromHost(url.host) + "-" + paths[0].toLowerCase().substring(0, 1);
    const uriChunks = url.href.split("/");
    uriChunks.pop();

    return {
      __inferred: true,
      uri: uriChunks.join("/") + "/",
      prefix,
    };
  }

  const filteredPaths = paths.filter(
    path => !["ontology", "resource", "class"].includes(path.toLowerCase())
  );
  filteredPaths.pop();
  if (filteredPaths.length === 0) {
    const prefix = prefixFromHost(url.host);
    return {
      __inferred: true,
      uri: url.origin + "/",
      prefix,
    };
  }

  const uriChunks = url.href.split("/");
  uriChunks.length = uriChunks.length - 1;
  return {
    __inferred: true,
    uri: uriChunks.join("/") + "/",
    prefix: filteredPaths[0].substring(0, 3),
  };
}