Skip to content

Instantly share code, notes, and snippets.

@bard
Last active April 10, 2019 14:46
Show Gist options
  • Save bard/cac1e1a11bdd1bb249b03a2874123007 to your computer and use it in GitHub Desktop.
Save bard/cac1e1a11bdd1bb249b03a2874123007 to your computer and use it in GitHub Desktop.
DOMPurify typings
interface Config {
ADD_ATTR?: string[];
ADD_TAGS?: string[];
ALLOW_DATA_ATTR?: boolean;
ALLOWED_ATTR?: string[];
ALLOWED_TAGS?: string[];
FORBID_ATTR?: string[];
FORBID_TAGS?: string[];
FORCE_BODY?: boolean;
KEEP_CONTENT?: boolean;
RETURN_DOM?: boolean;
RETURN_DOM_FRAGMENT?: boolean;
RETURN_DOM_IMPORT?: boolean;
SAFE_FOR_JQUERY?: boolean;
SANITIZE_DOM?: boolean;
WHOLE_DOCUMENT?: boolean;
ALLOWED_URI_REGEXP?: RegExp;
SAFE_FOR_TEMPLATES?: boolean;
ALLOW_UNKNOWN_PROTOCOLS?: boolean;
USE_PROFILES?: false | {mathMl?: boolean, svg?: boolean, svgFilters?: boolean, html?: boolean};
IN_PLACE?: boolean;
}
type HookName
= 'beforeSanitizeElements'
| 'uponSanitizeElement'
| 'afterSanitizeElements'
| 'beforeSanitizeAttributes'
| 'uponSanitizeAttribute'
| 'afterSanitizeAttributes'
| 'beforeSanitizeShadowDOM'
| 'uponSanitizeShadowNode'
| 'afterSanitizeShadowDOM';
type HookEvent
= SanitizeElementHookEvent
| SanitizeAttributeHookEvent
| null;
interface SanitizeElementHookEvent {
tagName: string;
allowedTags: string[];
}
interface SanitizeAttributeHookEvent {
attrName: string;
attrValue: string;
keepAttr: boolean;
allowedAttributes: string[];
}
interface DOMPurify {
(window?: Window): DOMPurify
version: string;
removed: any[];
isSupported: boolean;
sanitize(source: string | Node): string;
sanitize(source: string | Node, config: Config & { RETURN_DOM_FRAGMENT?: false; RETURN_DOM?: false; }): string;
sanitize(source: string | Node, config: Config & { RETURN_DOM_FRAGMENT: true; }): DocumentFragment;
sanitize(source: string | Node, config: Config & { RETURN_DOM: true; }): HTMLElement;
sanitize(source: string | Node, config: Config): string | HTMLElement | DocumentFragment;
addHook(hook: 'uponSanitizeElement', cb: (currentNode: Element, data: SanitizeElementHookEvent, config: Config) => void): void;
addHook(hook: 'uponSanitizeAttribute', cb: (currentNode: Element, data: SanitizeAttributeHookEvent, config: Config) => void): void;
addHook(hook: HookName, cb: (currentNode: Element, data: HookEvent, config: Config) => void): void;
setConfig(cfg: Config): void;
clearConfig(): void;
isValidAttribute(tag: string, attr: string, value: string): boolean;
removeHook(entryPoint: HookName): void;
removeHooks(entryPoint: HookName): void;
removeAllHooks(): void;
}
declare const DOMPurify: DOMPurify
export = DOMPurify
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment