ValeriaVG/nomocms

View on GitHub
lib/router.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
export function buildPathRegExp(path: string): RegExp {
  const routePath = path.startsWith("/") ? path : "/" + path;
  return new RegExp(
    `^${routePath
      .replace(/:([a-z]+)/gi, "(?<$1>[a-z-0-9-_.]+)")
      .replace("/", "/")}$`,
    "i"
  );
}

export const buildVariablePathMap = <T>(routeMap: Map<string, T>) => {
  const variablePaths = new Map<RegExp, string>();
  for (const key of routeMap.keys()) {
    if (/\/:/.test(key)) {
      variablePaths.set(buildPathRegExp(key), key);
    }
  }
  return variablePaths;
};