UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

94 lines (93 loc) 2.6 kB
class SearchValidationError extends Error { routerCode = "VALIDATE_SEARCH"; issues; constructor(message, issues = []) { super(message); this.name = "SearchValidationError"; this.issues = issues; } } function isStandardSchema(value) { return typeof value === "object" && value !== null && "~standard" in value && typeof value["~standard"]?.validate === "function"; } function isZodLikeSchema(value) { return typeof value === "object" && value !== null && typeof value.parse === "function"; } function isValidatorFn(value) { return typeof value === "function"; } function parseSearchString(search) { const params = {}; const searchParams = new URLSearchParams(search); searchParams.forEach((value, key) => { const existing = params[key]; if (existing === void 0) { params[key] = value; } else if (Array.isArray(existing)) { existing.push(value); } else { params[key] = [existing, value]; } }); return params; } function validateSearch(validator, input) { if (isStandardSchema(validator)) { const result = validator["~standard"].validate(input); if (result.issues) { throw new SearchValidationError("Search param validation failed", result.issues); } return result.value; } if (isZodLikeSchema(validator)) { if (validator.safeParse) { const result = validator.safeParse(input); if (!result.success) { throw new SearchValidationError("Search param validation failed", [result.error]); } return result.data; } try { return validator.parse(input); } catch (error) { throw new SearchValidationError("Search param validation failed", [error]); } } if (isValidatorFn(validator)) { try { return validator(input); } catch (error) { throw new SearchValidationError("Search param validation failed", [error]); } } throw new Error("Invalid validator provided to validateSearch"); } function zodSearchValidator(schema) { return schema; } function withFallback(schema, fallbackValue) { return { parse(value) { try { return schema.parse(value); } catch { return fallbackValue; } }, safeParse(value) { try { return { success: true, data: schema.parse(value) }; } catch { return { success: true, data: fallbackValue }; } } }; } export { SearchValidationError, parseSearchString, validateSearch, withFallback, zodSearchValidator }; //# sourceMappingURL=validateSearch.mjs.map