fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
21 lines (17 loc) • 685 B
text/typescript
const unsafeSvgStyleValueRegex = new RegExp(
String.raw`[\0-\x1F\x7F;<>\\]|\/\*|\*\/|url\s*\(|expression\s*\(|(?:java|vb)script\s*:|data\s*:|@import\b`,
'iu',
);
export const isSafeSvgStyleValue = (value: unknown): value is string =>
typeof value === 'string' &&
value.trim().length > 0 &&
!unsafeSvgStyleValueRegex.test(value);
export const getSafeSvgStyleNumber = (
value: unknown,
fallback = '',
): string => {
const numeric = Number(value);
return Number.isFinite(numeric) ? `${numeric}` : fallback;
};
export const getSafeSvgStyleToken = (value: unknown, fallback = ''): string =>
typeof value === 'string' && isSafeSvgStyleValue(value) ? value : fallback;