@scalar/api-client
Version:
the open source API testing client
33 lines (32 loc) • 1.52 kB
JavaScript
const a = (e, t) => {
if (!e || !("type" in e) || typeof t != "string")
return { ok: !0 };
if (e.type === "integer" || e.type === "number") {
const r = Number(t);
if (isNaN(r))
return { ok: !1, message: "Value must be a number (e.g., 42.5)" };
if (e.type === "integer" && !Number.isInteger(r))
return { ok: !1, message: "Value must be a whole number (e.g., 42)" };
if (e.minimum !== void 0 && r < e.minimum)
return { ok: !1, message: `Value must be ${e.minimum} or greater` };
if (e.maximum !== void 0 && r > e.maximum)
return { ok: !1, message: `Value must be ${e.maximum} or less` };
}
if (e.type === "string" && e.format) {
if (e.format === "date" && !/^\d{4}-\d{2}-\d{2}$/.test(t ?? ""))
return { ok: !1, message: "Please enter a valid date in YYYY-MM-DD format (e.g., 2024-03-20)" };
if (e.format === "date-time" && !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/.test(t ?? ""))
return {
ok: !1,
message: "Please enter a valid date and time in RFC 3339 format (e.g., 2024-03-20T13:45:30Z)"
};
if (e.format === "email" && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t ?? ""))
return { ok: !1, message: "Please enter a valid email address (e.g., user@example.com)" };
if (e.format === "uri" && !/^[a-zA-Z][a-zA-Z0-9+.-]*:.+$/.test(t ?? ""))
return { ok: !1, message: "Please enter a valid URI (e.g., https://example.com)" };
}
return { ok: !0 };
};
export {
a as validateParameter
};