1
- // Type definitions for DOM Purify 2.2
1
+ // Type definitions for DOM Purify 3.0
2
2
// Project: https://github.com/cure53/DOMPurify
3
3
// Definitions by: Dave Taylor https://github.com/davetayls
4
4
// Samira Bazuzi <https://github.com/bazuzi>
7
7
// Piotr Błażejewicz <https://github.com/peterblazejewicz>
8
8
// Nicholas Ellul <https://github.com/NicholasEllul>
9
9
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
10
+ // Minimum TypeScript Version: 4.5
10
11
11
12
export as namespace DOMPurify ;
12
13
export = DOMPurify ;
13
14
14
15
declare const DOMPurify : createDOMPurifyI ;
15
16
17
+ type WindowLike = Pick <
18
+ typeof globalThis ,
19
+ | 'NodeFilter'
20
+ | 'Node'
21
+ | 'Element'
22
+ | 'HTMLTemplateElement'
23
+ | 'DocumentFragment'
24
+ | 'HTMLFormElement'
25
+ | 'DOMParser'
26
+ | 'NamedNodeMap'
27
+ > ;
28
+
16
29
interface createDOMPurifyI extends DOMPurify . DOMPurifyI {
17
- ( window ?: Window ) : DOMPurify . DOMPurifyI ;
30
+ ( window ?: Window | WindowLike ) : DOMPurify . DOMPurifyI ;
18
31
}
19
32
20
33
declare namespace DOMPurify {
21
34
interface DOMPurifyI {
22
35
sanitize ( source : string | Node ) : string ;
23
36
sanitize ( source : string | Node , config : Config & { RETURN_TRUSTED_TYPE : true } ) : TrustedHTML ;
24
- sanitize ( source : string | Node , config : Config & { RETURN_DOM_FRAGMENT ?: false | undefined ; RETURN_DOM ?: false | undefined } ) : string ;
37
+ sanitize (
38
+ source : string | Node ,
39
+ config : Config & { RETURN_DOM_FRAGMENT ?: false | undefined ; RETURN_DOM ?: false | undefined } ,
40
+ ) : string ;
25
41
sanitize ( source : string | Node , config : Config & { RETURN_DOM_FRAGMENT : true } ) : DocumentFragment ;
26
42
sanitize ( source : string | Node , config : Config & { RETURN_DOM : true } ) : HTMLElement ;
27
43
sanitize ( source : string | Node , config : Config ) : string | HTMLElement | DocumentFragment ;
28
44
29
- addHook ( hook : 'uponSanitizeElement' , cb : ( currentNode : Element , data : SanitizeElementHookEvent , config : Config ) => void ) : void ;
30
- addHook ( hook : 'uponSanitizeAttribute' , cb : ( currentNode : Element , data : SanitizeAttributeHookEvent , config : Config ) => void ) : void ;
45
+ addHook (
46
+ hook : 'uponSanitizeElement' ,
47
+ cb : ( currentNode : Element , data : SanitizeElementHookEvent , config : Config ) => void ,
48
+ ) : void ;
49
+ addHook (
50
+ hook : 'uponSanitizeAttribute' ,
51
+ cb : ( currentNode : Element , data : SanitizeAttributeHookEvent , config : Config ) => void ,
52
+ ) : void ;
31
53
addHook ( hook : HookName , cb : ( currentNode : Element , data : HookEvent , config : Config ) => void ) : void ;
32
54
33
55
setConfig ( cfg : Config ) : void ;
@@ -47,33 +69,54 @@ declare namespace DOMPurify {
47
69
ADD_ATTR ?: string [ ] | undefined ;
48
70
ADD_DATA_URI_TAGS ?: string [ ] | undefined ;
49
71
ADD_TAGS ?: string [ ] | undefined ;
72
+ ADD_URI_SAFE_ATTR ?: string [ ] | undefined ;
73
+ ALLOW_ARIA_ATTR ?: boolean | undefined ;
50
74
ALLOW_DATA_ATTR ?: boolean | undefined ;
75
+ ALLOW_UNKNOWN_PROTOCOLS ?: boolean | undefined ;
76
+ ALLOW_SELF_CLOSE_IN_ATTR ?: boolean | undefined ;
51
77
ALLOWED_ATTR ?: string [ ] | undefined ;
52
78
ALLOWED_TAGS ?: string [ ] | undefined ;
79
+ ALLOWED_NAMESPACES ?: string [ ] | undefined ;
80
+ ALLOWED_URI_REGEXP ?: RegExp | undefined ;
53
81
FORBID_ATTR ?: string [ ] | undefined ;
82
+ FORBID_CONTENTS ?: string [ ] | undefined ;
54
83
FORBID_TAGS ?: string [ ] | undefined ;
55
84
FORCE_BODY ?: boolean | undefined ;
85
+ IN_PLACE ?: boolean | undefined ;
56
86
KEEP_CONTENT ?: boolean | undefined ;
57
87
/**
58
88
* change the default namespace from HTML to something different
59
89
*/
60
90
NAMESPACE ?: string | undefined ;
61
- RETURN_DOM ?: boolean | undefined ;
91
+ PARSER_MEDIA_TYPE ?: string | undefined ;
62
92
RETURN_DOM_FRAGMENT ?: boolean | undefined ;
63
93
/**
64
94
* This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`
65
95
* might cause XSS from attacks hidden in closed shadowroots in case the browser
66
96
* supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/
67
97
*/
68
98
RETURN_DOM_IMPORT ?: boolean | undefined ;
99
+ RETURN_DOM ?: boolean | undefined ;
69
100
RETURN_TRUSTED_TYPE ?: boolean | undefined ;
101
+ SAFE_FOR_TEMPLATES ?: boolean | undefined ;
70
102
SANITIZE_DOM ?: boolean | undefined ;
103
+ /** @default false */
104
+ SANITIZE_NAMED_PROPS ?: boolean | undefined ;
105
+ USE_PROFILES ?:
106
+ | false
107
+ | {
108
+ mathMl ?: boolean | undefined ;
109
+ svg ?: boolean | undefined ;
110
+ svgFilters ?: boolean | undefined ;
111
+ html ?: boolean | undefined ;
112
+ }
113
+ | undefined ;
71
114
WHOLE_DOCUMENT ?: boolean | undefined ;
72
- ALLOWED_URI_REGEXP ?: RegExp | undefined ;
73
- SAFE_FOR_TEMPLATES ?: boolean | undefined ;
74
- ALLOW_UNKNOWN_PROTOCOLS ?: boolean | undefined ;
75
- USE_PROFILES ?: false | { mathMl ?: boolean | undefined ; svg ?: boolean | undefined ; svgFilters ?: boolean | undefined ; html ?: boolean | undefined } | undefined ;
76
- IN_PLACE ?: boolean | undefined ;
115
+ CUSTOM_ELEMENT_HANDLING ?: {
116
+ tagNameCheck ?: RegExp | ( ( tagName : string ) => boolean ) | null | undefined ;
117
+ attributeNameCheck ?: RegExp | ( ( lcName : string ) => boolean ) | null | undefined ;
118
+ allowCustomizedBuiltInElements ?: boolean | undefined ;
119
+ } ;
77
120
}
78
121
79
122
type HookName =
0 commit comments