{"version":3,"sources":["../../src/client/paths.ts"],"names":[],"mappings":";;;;AAiBO,IAAM,YAAe,GAAA;AAAA;AAAA,EAE1B,UAAY,EAAA,aAAA;AAAA,EACZ,YAAc,EAAA,iBAAA;AAAA;AAAA,EAGd,WAAa,EAAA,WAAA;AAAA,EACb,QAAU,EAAA,YAAA;AAAA;AAAA,EAGV,KAAO,EAAA,aAAA;AAAA,EACP,MAAQ,EAAA,cAAA;AAAA,EACR,YAAc,EAAA,eAAA;AAAA;AAAA,EAGd,aAAe,EAAA,kBAAA;AAAA,EACf,UAAY,EAAA,cAAA;AAAA;AAAA,EAGZ,cAAgB,EAAA,UAAA;AAAA,EAChB,gBAAkB,EAAA,aAAA;AAAA;AAAA,EAGlB,SAAW,EAAA,aAAA;AAAA,EACX,YAAc,EAAA,gBAAA;AAAA,EACd,WAAa,EAAA,eAAA;AAAA;AAAA,EAGb,OAAS,EAAA;AACX;AAUO,SAAS,SAAA,CACd,cACA,MACQ,EAAA;AACR,EAAI,IAAA,CAAC,QAAe,OAAA,YAAA;AAEpB,EAAA,IAAI,MAAS,GAAA,YAAA;AAEb,EAAA,KAAA,MAAW,CAAC,GAAK,EAAA,KAAK,KAAK,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAG,EAAA;AACjD,IAAS,MAAA,GAAA,MAAA,CAAO,QAAQ,CAAI,CAAA,EAAA,GAAG,IAAI,kBAAmB,CAAA,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA;AAAA;AAGtE,EAAO,OAAA,MAAA;AACT;AAbgB,MAAA,CAAA,SAAA,EAAA,WAAA,CAAA;AAqBT,SAAS,aAAA,CAAc,SAAiB,IAAsB,EAAA;AAEnE,EAAM,MAAA,iBAAA,GAAoB,QAAQ,QAAS,CAAA,GAAG,IAC1C,OAAQ,CAAA,KAAA,CAAM,CAAG,EAAA,EAAE,CACnB,GAAA,OAAA;AAGJ,EAAA,MAAM,iBAAiB,IAAK,CAAA,UAAA,CAAW,GAAG,CACtC,GAAA,IAAA,GACA,IAAI,IAAI,CAAA,CAAA;AAEZ,EAAO,OAAA,CAAA,EAAG,iBAAiB,CAAA,EAAG,cAAc,CAAA,CAAA;AAC9C;AAZgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA","file":"paths.mjs","sourcesContent":["/**\n * Type-safe path parameter extraction\n * Extracts path parameters from a string literal type\n * e.g. \"/users/:id\" -> { id: string }\n */\nexport type PathParams<P extends string> = string extends P\n  ? Record<string, string>\n  : P extends `${infer _}:${infer Param}/${infer Rest}`\n  ? { [K in Param]: string } & PathParams<`/${Rest}`>\n  : P extends `${infer _}:${infer Param}`\n  ? { [K in Param]: string }\n  : {};\n\n/**\n * API Endpoints\n * Type-safe API endpoint definitions\n */\nexport const ApiEndpoints = {\n  // Ontology endpoints\n  Ontologies: '/ontologies' as const,\n  OntologyById: '/ontologies/:id' as const,\n\n  // User endpoints\n  CurrentUser: '/users/me' as const,\n  UserById: '/users/:id' as const,\n\n  // Authentication endpoints\n  Login: '/auth/login' as const,\n  Logout: '/auth/logout' as const,\n  RefreshToken: '/auth/refresh' as const,\n\n  // Tenant endpoints\n  CurrentTenant: '/tenants/current' as const,\n  TenantById: '/tenants/:id' as const,\n\n  // MCP context endpoints\n  ResolveContext: '/resolve' as const,\n  WebSocketResolve: '/resolve_ws' as const,\n\n  // Tools endpoints\n  ToolsList: '/tools/list' as const,\n  ToolsExecute: '/tools/execute' as const,\n  ToolsStream: '/tools/stream' as const,\n\n  // JSON-RPC endpoint\n  JsonRPC: '/mcp' as const\n};\n\n/**\n * Creates a URL path by replacing parameters in the path template\n *\n * @example\n * ```ts\n * const path = buildPath('/users/:id', { id: '123' }); // '/users/123'\n * ```\n */\nexport function buildPath(\n  pathTemplate: string,\n  params?: Record<string, string>\n): string {\n  if (!params) return pathTemplate;\n\n  let result = pathTemplate;\n\n  for (const [key, value] of Object.entries(params)) {\n    result = result.replace(`:${key}`, encodeURIComponent(String(value)));\n  }\n\n  return result;\n}\n\n/**\n * Creates a full URL by combining base URL with a path\n * @param baseUrl Base URL\n * @param path Path to append\n * @returns Full URL\n */\nexport function createFullUrl(baseUrl: string, path: string): string {\n  // Normalize baseUrl to ensure it doesn't end with a slash\n  const normalizedBaseUrl = baseUrl.endsWith('/')\n    ? baseUrl.slice(0, -1)\n    : baseUrl;\n\n  // Normalize path to ensure it starts with a slash\n  const normalizedPath = path.startsWith('/')\n    ? path\n    : `/${path}`;\n\n  return `${normalizedBaseUrl}${normalizedPath}`;\n}\n"]}