{"version":3,"file":"routes.mjs","sources":["../../../src/lib/routing/routes.ts"],"sourcesContent":["/**\n * Strongly typed route patterns (pathnames, params, query definitions).\n */\n\n/**\n * Route path definitions\n */\nexport const routes = {\n  // Root routes\n  home: '/',\n  login: '/login',\n  logout: '/logout',\n  register: '/register',\n  forgotPassword: '/forgot-password',\n  resetPassword: '/reset-password',\n\n  // Dashboard routes\n  dashboard: '/dashboard',\n  dashboardOverview: '/dashboard/overview',\n  dashboardAnalytics: '/dashboard/analytics',\n  dashboardSettings: '/dashboard/settings',\n\n  // Reports routes\n  reports: '/reports',\n  reportsList: '/reports/list',\n  reportDetail: '/reports/:id',\n  reportCreate: '/reports/create',\n  reportEdit: '/reports/:id/edit',\n\n  // Users routes\n  users: '/users',\n  usersList: '/users/list',\n  userDetail: '/users/:id',\n  userCreate: '/users/create',\n  userEdit: '/users/:id/edit',\n  userProfile: '/users/profile',\n\n  // Settings routes\n  settings: '/settings',\n  settingsGeneral: '/settings/general',\n  settingsNotifications: '/settings/notifications',\n  settingsSecurity: '/settings/security',\n\n  // Admin routes\n  admin: '/admin',\n  adminUsers: '/admin/users',\n  adminRoles: '/admin/roles',\n  adminLogs: '/admin/logs',\n\n  // Error routes\n  notFound: '/404',\n  error: '/error',\n} as const;\n\nexport type RoutePath = (typeof routes)[keyof typeof routes];\n\n/**\n * Route parameter types\n */\nexport interface RouteParams {\n  '/reports/:id': { id: string };\n  '/reports/:id/edit': { id: string };\n  '/users/:id': { id: string };\n  '/users/:id/edit': { id: string };\n}\n\n/**\n * Route query parameter types\n */\nexport interface RouteQuery {\n  '/reports/list': { page?: string; limit?: string; search?: string; status?: string };\n  '/users/list': { page?: string; limit?: string; search?: string; role?: string };\n  '/dashboard/analytics': { from?: string; to?: string; metric?: string };\n}\n\n/**\n * Build a route path with parameters\n *\n * @deprecated Use `buildRoutePath` from `./route-builder` instead.\n * This function is maintained for backward compatibility only.\n *\n * @example\n * ```typescript\n * // Instead of:\n * import { buildPath } from './routes';\n * buildPath('/users/:id', { id: '123' });\n *\n * // Use:\n * import { buildRoutePath } from './route-builder';\n * buildRoutePath('/users/:id', { id: '123' });\n * ```\n */\nexport function buildPath<T extends keyof RouteParams>(path: T, params: RouteParams[T]): string {\n  // Inline implementation to avoid circular dependency and require()\n  let result = path as string;\n  for (const [key, value] of Object.entries(params)) {\n    result = result.replace(`:${key}`, encodeURIComponent(value));\n  }\n  return result;\n}\n\n/**\n * Build a route path with query parameters\n */\nexport function buildPathWithQuery<T extends keyof RouteQuery>(\n  path: T,\n  query?: Partial<RouteQuery[T]>\n): string {\n  if (!query || Object.keys(query).length === 0) {\n    return path;\n  }\n\n  const searchParams = new URLSearchParams();\n  for (const [key, value] of Object.entries(query)) {\n    if (value !== undefined && value !== null) {\n      const stringValue =\n        typeof value === 'object'\n          ? JSON.stringify(value)\n          : String(value as string | number | boolean);\n      searchParams.set(key, stringValue);\n    }\n  }\n\n  return `${path}?${searchParams.toString()}`;\n}\n\n/**\n * Parse query parameters from a URL\n */\nexport function parseQuery<T extends keyof RouteQuery>(search: string): Partial<RouteQuery[T]> {\n  const params = new URLSearchParams(search);\n  const result: Record<string, string> = {};\n\n  params.forEach((value, key) => {\n    result[key] = value;\n  });\n\n  return result as Partial<RouteQuery[T]>;\n}\n"],"names":["routes","buildPath","path","params","result","key","value","buildPathWithQuery","query","searchParams","stringValue","parseQuery","search"],"mappings":"AAOO,MAAMA,IAAS;AAAA;AAAA,EAEpB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,gBAAgB;AAAA,EAChB,eAAe;AAAA;AAAA,EAGf,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA;AAAA,EAGnB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,YAAY;AAAA;AAAA,EAGZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,aAAa;AAAA;AAAA,EAGb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA;AAAA,EAGlB,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA;AAAA,EAGX,UAAU;AAAA,EACV,OAAO;AACT;AAwCO,SAASC,EAAuCC,GAASC,GAAgC;AAE9F,MAAIC,IAASF;AACb,aAAW,CAACG,GAAKC,CAAK,KAAK,OAAO,QAAQH,CAAM;AAC9C,IAAAC,IAASA,EAAO,QAAQ,IAAIC,CAAG,IAAI,mBAAmBC,CAAK,CAAC;AAE9D,SAAOF;AACT;AAKO,SAASG,EACdL,GACAM,GACQ;AACR,MAAI,CAACA,KAAS,OAAO,KAAKA,CAAK,EAAE,WAAW;AAC1C,WAAON;AAGT,QAAMO,IAAe,IAAI,gBAAA;AACzB,aAAW,CAACJ,GAAKC,CAAK,KAAK,OAAO,QAAQE,CAAK;AAC7C,QAA2BF,KAAU,MAAM;AACzC,YAAMI,IACJ,OAAOJ,KAAU,WACb,KAAK,UAAUA,CAAK,IACpB,OAAOA,CAAkC;AAC/C,MAAAG,EAAa,IAAIJ,GAAKK,CAAW;AAAA,IACnC;AAGF,SAAO,GAAGR,CAAI,IAAIO,EAAa,UAAU;AAC3C;AAKO,SAASE,EAAuCC,GAAwC;AAC7F,QAAMT,IAAS,IAAI,gBAAgBS,CAAM,GACnCR,IAAiC,CAAA;AAEvC,SAAAD,EAAO,QAAQ,CAACG,GAAOD,MAAQ;AAC7B,IAAAD,EAAOC,CAAG,IAAIC;AAAA,EAChB,CAAC,GAEMF;AACT;"}