36 lines
868 B
TypeScript
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);
|
|
}
|