routeName

tcmts.cli.web.routeName · #4pen6znc · term · runs anywhere

URL → name: /api/hooks/stripe → <namespace>.hooks.stripe, /api → <namespace>.index; - reads as _.

import type { HttpRoutes } from "#codebase/tcmts/cli/web";

export function routeName(routes: HttpRoutes, pathname: string): string | undefined {
  if (pathname !== routes.prefix && !pathname.startsWith(routes.prefix + "/")) return undefined;
  const rest = pathname.slice(routes.prefix.length).replace(/^\/+|\/+$/g, "");
  const segs = rest ? rest.split("/").map((s) => s.replaceAll("-", "_")) : ["index"];
  return segs.every((s) => /^[A-Za-z_$][\w$]*$/.test(s)) ? [routes.namespace, ...segs].join(".") : "";
}

uses

used by