{"version":3,"file":"api.cjs","names":[],"sources":["../../src/api.ts"],"sourcesContent":["import type {\n  IndexRoute,\n  LayoutRoute,\n  PhysicalSubtree,\n  Route,\n  VirtualRootRoute,\n  VirtualRouteNode,\n} from './types'\n\nexport function rootRoute(\n  file: string,\n  children?: Array<VirtualRouteNode>,\n): VirtualRootRoute {\n  return {\n    type: 'root',\n    file,\n    children,\n  }\n}\n\nexport function index(file: string): IndexRoute {\n  return {\n    type: 'index',\n    file,\n  }\n}\n\nexport function layout(\n  file: string,\n  children: Array<VirtualRouteNode>,\n): LayoutRoute\nexport function layout(\n  id: string,\n  file: string,\n  children: Array<VirtualRouteNode>,\n): LayoutRoute\n\nexport function layout(\n  idOrFile: string,\n  fileOrChildren: string | Array<VirtualRouteNode>,\n  children?: Array<VirtualRouteNode>,\n): LayoutRoute {\n  if (Array.isArray(fileOrChildren)) {\n    return {\n      type: 'layout',\n      file: idOrFile,\n      children: fileOrChildren,\n    }\n  } else {\n    return {\n      type: 'layout',\n      id: idOrFile,\n      file: fileOrChildren,\n      children,\n    }\n  }\n}\n\nexport function route(path: string, children: Array<VirtualRouteNode>): Route\nexport function route(path: string, file: string): Route\nexport function route(\n  path: string,\n  file: string,\n  children: Array<VirtualRouteNode>,\n): Route\nexport function route(\n  path: string,\n  fileOrChildren: string | Array<VirtualRouteNode>,\n  children?: Array<VirtualRouteNode>,\n): Route {\n  if (typeof fileOrChildren === 'string') {\n    return {\n      type: 'route',\n      file: fileOrChildren,\n      path,\n      children,\n    }\n  }\n  return {\n    type: 'route',\n    path,\n    children: fileOrChildren,\n  }\n}\n\n/**\n * Mount a physical directory of route files at a given path prefix.\n *\n * @param pathPrefix - The path prefix to mount the directory at. Use empty string '' to merge routes at the current level.\n * @param directory - The directory containing the route files, relative to the routes directory.\n */\nexport function physical(pathPrefix: string, directory: string): PhysicalSubtree\n/**\n * Mount a physical directory of route files at the current level (empty path prefix).\n * This is equivalent to `physical('', directory)`.\n *\n * @param directory - The directory containing the route files, relative to the routes directory.\n */\nexport function physical(directory: string): PhysicalSubtree\nexport function physical(\n  pathPrefixOrDirectory: string,\n  directory?: string,\n): PhysicalSubtree {\n  if (directory === undefined) {\n    // Single argument: directory only, use empty path prefix\n    return {\n      type: 'physical',\n      directory: pathPrefixOrDirectory,\n      pathPrefix: '',\n    }\n  }\n  // Two arguments: pathPrefix and directory\n  return {\n    type: 'physical',\n    directory,\n    pathPrefix: pathPrefixOrDirectory,\n  }\n}\n"],"mappings":";AASA,SAAgB,UACd,MACA,UACkB;AAClB,QAAO;EACL,MAAM;EACN;EACA;EACD;;AAGH,SAAgB,MAAM,MAA0B;AAC9C,QAAO;EACL,MAAM;EACN;EACD;;AAaH,SAAgB,OACd,UACA,gBACA,UACa;AACb,KAAI,MAAM,QAAQ,eAAe,CAC/B,QAAO;EACL,MAAM;EACN,MAAM;EACN,UAAU;EACX;KAED,QAAO;EACL,MAAM;EACN,IAAI;EACJ,MAAM;EACN;EACD;;AAWL,SAAgB,MACd,MACA,gBACA,UACO;AACP,KAAI,OAAO,mBAAmB,SAC5B,QAAO;EACL,MAAM;EACN,MAAM;EACN;EACA;EACD;AAEH,QAAO;EACL,MAAM;EACN;EACA,UAAU;EACX;;AAiBH,SAAgB,SACd,uBACA,WACiB;AACjB,KAAI,cAAc,KAAA,EAEhB,QAAO;EACL,MAAM;EACN,WAAW;EACX,YAAY;EACb;AAGH,QAAO;EACL,MAAM;EACN;EACA,YAAY;EACb"}