{"version":3,"sources":["../src/query/params.ts"],"sourcesContent":["import type { Parser } from \"./parsers\";\n\nexport type RouteParamsInput =\n  | Record<string, string | undefined>\n  | URLSearchParams\n  | Promise<Record<string, string | undefined> | URLSearchParams>;\n\nfunction normalizeParams(input: Record<string, string | undefined> | URLSearchParams) {\n  if (input instanceof URLSearchParams) {\n    const params: Record<string, string | undefined> = {};\n    input.forEach((value, key) => {\n      params[key] = value;\n    });\n    return params;\n  }\n  return input;\n}\n\nexport async function loadRouteParams<T extends Record<string, Parser<any>>>(\n  input: RouteParamsInput,\n  parsers: T,\n  options: { strict?: boolean } = {},\n): Promise<{ [K in keyof T]: ReturnType<T[K][\"parse\"]> }> {\n  const resolved = await Promise.resolve(input);\n  const params = normalizeParams(resolved);\n  const result = {} as { [K in keyof T]: ReturnType<T[K][\"parse\"]> };\n\n  for (const [key, parser] of Object.entries(parsers)) {\n    const raw = params[key] ?? \"\";\n    const parsed = parser.parse(raw);\n    if (parsed === null && options.strict) {\n      throw new Error(`Failed to parse route param \"${key}\" with value \"${raw}\"`);\n    }\n    result[key as keyof T] = parsed as ReturnType<T[typeof key][\"parse\"]>;\n  }\n\n  return result;\n}\n\nexport function parseRouteParams<T extends Record<string, Parser<any>>>(\n  input: Record<string, string | undefined> | URLSearchParams,\n  parsers: T,\n  options: { strict?: boolean } = {},\n): { [K in keyof T]: ReturnType<T[K][\"parse\"]> } {\n  const params = normalizeParams(input);\n  const result = {} as { [K in keyof T]: ReturnType<T[K][\"parse\"]> };\n\n  for (const [key, parser] of Object.entries(parsers)) {\n    const raw = params[key] ?? \"\";\n    const parsed = parser.parse(raw);\n    if (parsed === null && options.strict) {\n      throw new Error(`Failed to parse route param \"${key}\" with value \"${raw}\"`);\n    }\n    result[key as keyof T] = parsed as ReturnType<T[typeof key][\"parse\"]>;\n  }\n\n  return result;\n}\n"],"mappings":";;;;;AAOA,SAAS,gBAAgB,OAA6D;AACpF,MAAI,iBAAiB,iBAAiB;AACpC,UAAM,SAA6C,CAAC;AACpD,UAAM,QAAQ,CAAC,OAAO,QAAQ;AAC5B,aAAO,GAAG,IAAI;AAAA,IAChB,CAAC;AACD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AATS;AAWT,eAAsB,gBACpB,OACA,SACA,UAAgC,CAAC,GACuB;AACxD,QAAM,WAAW,MAAM,QAAQ,QAAQ,KAAK;AAC5C,QAAM,SAAS,gBAAgB,QAAQ;AACvC,QAAM,SAAS,CAAC;AAEhB,aAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAM,MAAM,OAAO,GAAG,KAAK;AAC3B,UAAM,SAAS,OAAO,MAAM,GAAG;AAC/B,QAAI,WAAW,QAAQ,QAAQ,QAAQ;AACrC,YAAM,IAAI,MAAM,gCAAgC,GAAG,iBAAiB,GAAG,GAAG;AAAA,IAC5E;AACA,WAAO,GAAc,IAAI;AAAA,EAC3B;AAEA,SAAO;AACT;AAnBsB;AAqBf,SAAS,iBACd,OACA,SACA,UAAgC,CAAC,GACc;AAC/C,QAAM,SAAS,gBAAgB,KAAK;AACpC,QAAM,SAAS,CAAC;AAEhB,aAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AACnD,UAAM,MAAM,OAAO,GAAG,KAAK;AAC3B,UAAM,SAAS,OAAO,MAAM,GAAG;AAC/B,QAAI,WAAW,QAAQ,QAAQ,QAAQ;AACrC,YAAM,IAAI,MAAM,gCAAgC,GAAG,iBAAiB,GAAG,GAAG;AAAA,IAC5E;AACA,WAAO,GAAc,IAAI;AAAA,EAC3B;AAEA,SAAO;AACT;AAlBgB;","names":[]}