2025-05-06 19:01:18 +03:00

36 lines
868 B
TypeScript

import {presetPrefix} from "@/urlmaker/index.ts";
import type {SpecValue} from "@/urlmaker/specs.ts";
export type validator = (v: SpecValue) => boolean;
export function validateUrl(s: SpecValue): boolean {
let url;
try {
url = new URL(s as string);
return url.protocol === "http:" || url.protocol === "https:"
} catch {
return false;
}
}
export function validatePreset(s: SpecValue): boolean {
return (s as string).startsWith(presetPrefix);
}
export function validateSelector(s: SpecValue): boolean {
try {
document.createDocumentFragment().querySelector(s as string);
return true;
} catch {
return false;
}
}
export function validateAttribute(s: SpecValue): boolean {
return /([^\t\n\f \/>"'=]+)/.test(s as string);
}
export function validateDuration(s: SpecValue): boolean {
return /^\d+[smh]$/.test(s as string);
}