{"version":3,"file":"validateSearch.js","names":[],"sources":["esm/validateSearch.js"],"sourcesContent":["class SearchValidationError extends Error {\n  routerCode = \"VALIDATE_SEARCH\";\n  issues;\n  constructor(message, issues = []) {\n    super(message);\n    this.name = \"SearchValidationError\";\n    this.issues = issues;\n  }\n}\nfunction isStandardSchema(value) {\n  return typeof value === \"object\" && value !== null && \"~standard\" in value && typeof value[\"~standard\"]?.validate === \"function\";\n}\nfunction isZodLikeSchema(value) {\n  return typeof value === \"object\" && value !== null && typeof value.parse === \"function\";\n}\nfunction isValidatorFn(value) {\n  return typeof value === \"function\";\n}\nfunction parseSearchString(search) {\n  const params = {};\n  const searchParams = new URLSearchParams(search);\n  searchParams.forEach((value, key) => {\n    const existing = params[key];\n    if (existing === void 0) {\n      params[key] = value;\n    } else if (Array.isArray(existing)) {\n      existing.push(value);\n    } else {\n      params[key] = [existing, value];\n    }\n  });\n  return params;\n}\nfunction validateSearch(validator, input) {\n  if (isStandardSchema(validator)) {\n    const result = validator[\"~standard\"].validate(input);\n    if (result.issues) {\n      throw new SearchValidationError(\n        \"Search param validation failed\",\n        result.issues\n      );\n    }\n    return result.value;\n  }\n  if (isZodLikeSchema(validator)) {\n    if (validator.safeParse) {\n      const result = validator.safeParse(input);\n      if (!result.success) {\n        throw new SearchValidationError(\"Search param validation failed\", [result.error]);\n      }\n      return result.data;\n    }\n    try {\n      return validator.parse(input);\n    } catch (error) {\n      throw new SearchValidationError(\"Search param validation failed\", [error]);\n    }\n  }\n  if (isValidatorFn(validator)) {\n    try {\n      return validator(input);\n    } catch (error) {\n      throw new SearchValidationError(\"Search param validation failed\", [error]);\n    }\n  }\n  throw new Error(\"Invalid validator provided to validateSearch\");\n}\nfunction zodSearchValidator(schema) {\n  return schema;\n}\nfunction withFallback(schema, fallbackValue) {\n  return {\n    parse(value) {\n      try {\n        return schema.parse(value);\n      } catch {\n        return fallbackValue;\n      }\n    },\n    safeParse(value) {\n      try {\n        return { success: true, data: schema.parse(value) };\n      } catch {\n        return { success: true, data: fallbackValue };\n      }\n    }\n  };\n}\nexport {\n  SearchValidationError,\n  parseSearchString,\n  validateSearch,\n  withFallback,\n  zodSearchValidator\n};\n//# sourceMappingURL=validateSearch.js.map\n"],"mappings":";AAAA,IAAM,wBAAN,cAAoC,MAAM;CACxC,aAAa;CACb;CACA,YAAY,SAAS,SAAS,CAAC,GAAG;EAChC,MAAM,OAAO;EACb,KAAK,OAAO;EACZ,KAAK,SAAS;CAChB;AACF;AACA,SAAS,iBAAiB,OAAO;CAC/B,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,eAAe,SAAS,OAAO,MAAM,YAAY,EAAE,aAAa;AACxH;AACA,SAAS,gBAAgB,OAAO;CAC9B,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,MAAM,UAAU;AAC/E;AACA,SAAS,cAAc,OAAO;CAC5B,OAAO,OAAO,UAAU;AAC1B;AACA,SAAS,kBAAkB,QAAQ;CACjC,MAAM,SAAS,CAAC;CAChB,MAAM,eAAe,IAAI,gBAAgB,MAAM;CAC/C,aAAa,SAAS,OAAO,QAAQ;EACnC,MAAM,WAAW,OAAO;EACxB,IAAI,aAAa,KAAK,GAAG;GACvB,OAAO,OAAO;EAChB,OAAO,IAAI,MAAM,QAAQ,QAAQ,GAAG;GAClC,SAAS,KAAK,KAAK;EACrB,OAAO;GACL,OAAO,OAAO,CAAC,UAAU,KAAK;EAChC;CACF,CAAC;CACD,OAAO;AACT;AACA,SAAS,eAAe,WAAW,OAAO;CACxC,IAAI,iBAAiB,SAAS,GAAG;EAC/B,MAAM,SAAS,UAAU,YAAY,CAAC,SAAS,KAAK;EACpD,IAAI,OAAO,QAAQ;GACjB,MAAM,IAAI,sBACR,kCACA,OAAO,MACT;EACF;EACA,OAAO,OAAO;CAChB;CACA,IAAI,gBAAgB,SAAS,GAAG;EAC9B,IAAI,UAAU,WAAW;GACvB,MAAM,SAAS,UAAU,UAAU,KAAK;GACxC,IAAI,CAAC,OAAO,SAAS;IACnB,MAAM,IAAI,sBAAsB,kCAAkC,CAAC,OAAO,KAAK,CAAC;GAClF;GACA,OAAO,OAAO;EAChB;EACA,IAAI;GACF,OAAO,UAAU,MAAM,KAAK;EAC9B,SAAS,OAAO;GACd,MAAM,IAAI,sBAAsB,kCAAkC,CAAC,KAAK,CAAC;EAC3E;CACF;CACA,IAAI,cAAc,SAAS,GAAG;EAC5B,IAAI;GACF,OAAO,UAAU,KAAK;EACxB,SAAS,OAAO;GACd,MAAM,IAAI,sBAAsB,kCAAkC,CAAC,KAAK,CAAC;EAC3E;CACF;CACA,MAAM,IAAI,MAAM,8CAA8C;AAChE;AACA,SAAS,mBAAmB,QAAQ;CAClC,OAAO;AACT;AACA,SAAS,aAAa,QAAQ,eAAe;CAC3C,OAAO;EACL,MAAM,OAAO;GACX,IAAI;IACF,OAAO,OAAO,MAAM,KAAK;GAC3B,QAAQ;IACN,OAAO;GACT;EACF;EACA,UAAU,OAAO;GACf,IAAI;IACF,OAAO;KAAE,SAAS;KAAM,MAAM,OAAO,MAAM,KAAK;IAAE;GACpD,QAAQ;IACN,OAAO;KAAE,SAAS;KAAM,MAAM;IAAc;GAC9C;EACF;CACF;AACF"}