UNPKG

quill-delta-to-html

Version:
67 lines (48 loc) 1.52 kB
import './../extensions/String'; interface IMention { [index: string]: string | undefined, 'name'?: string, 'target'?: string, 'slug'?: string, 'class'?: string, 'avatar'?: string, 'id'?: string, 'end-point'?: string } class MentionSanitizer { static sanitize(dirtyObj: IMention): IMention { var cleanObj: any = {}; if (!dirtyObj || typeof dirtyObj !== 'object') { return cleanObj; } if (dirtyObj.class && MentionSanitizer.IsValidClass(dirtyObj.class)) { cleanObj.class = dirtyObj.class; } if (dirtyObj.id && MentionSanitizer.IsValidId(dirtyObj.id)) { cleanObj.id = dirtyObj.id; } if (MentionSanitizer.IsValidTarget(dirtyObj.target+'')) { cleanObj.target = dirtyObj.target; } if (dirtyObj.avatar) { cleanObj.avatar = (dirtyObj.avatar + '')._sanitizeUrl(); } if (dirtyObj['end-point']) { cleanObj['end-point'] = (dirtyObj['end-point'] + '')._sanitizeUrl(); } if (dirtyObj.slug) { cleanObj.slug = (dirtyObj.slug + ''); } return cleanObj; } static IsValidClass(classAttr: string) { return !!classAttr.match(/^[a-zA-Z0-9_\-]{1,500}$/i); } static IsValidId(idAttr: string) { return !!idAttr.match(/^[a-zA-Z0-9_\-\:\.]{1,500}$/i); } static IsValidTarget(target: string) { return ['_self', '_blank', '_parent', '_top'].indexOf(target) > -1; } } export { MentionSanitizer, IMention }