You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					204 lines
				
				5.3 KiB
			
		
		
			
		
	
	
					204 lines
				
				5.3 KiB
			| 
											3 years ago
										 | /** | ||
|  |  * xss | ||
|  |  * | ||
|  |  * @author Zongmin Lei<leizongmin@gmail.com> | ||
|  |  */ | ||
|  | 
 | ||
|  | declare module "xss" { | ||
|  |   global { | ||
|  |     function filterXSS(html: string, options?: IFilterXSSOptions): string; | ||
|  | 
 | ||
|  |     namespace XSS { | ||
|  |       export interface IFilterXSSOptions { | ||
|  |         allowList?: IWhiteList; | ||
|  |         whiteList?: IWhiteList; | ||
|  |         onTag?: OnTagHandler; | ||
|  |         onTagAttr?: OnTagAttrHandler; | ||
|  |         onIgnoreTag?: OnTagHandler; | ||
|  |         onIgnoreTagAttr?: OnTagAttrHandler; | ||
|  |         safeAttrValue?: SafeAttrValueHandler; | ||
|  |         escapeHtml?: EscapeHandler; | ||
|  |         stripIgnoreTag?: boolean; | ||
|  |         stripIgnoreTagBody?: boolean | string[]; | ||
|  |         allowCommentTag?: boolean; | ||
|  |         stripBlankChar?: boolean; | ||
|  |         css?: {} | boolean; | ||
|  |       } | ||
|  | 
 | ||
|  |       interface IWhiteList extends Record<string, string[] | undefined> { | ||
|  |         a?: string[]; | ||
|  |         abbr?: string[]; | ||
|  |         address?: string[]; | ||
|  |         area?: string[]; | ||
|  |         article?: string[]; | ||
|  |         aside?: string[]; | ||
|  |         audio?: string[]; | ||
|  |         b?: string[]; | ||
|  |         bdi?: string[]; | ||
|  |         bdo?: string[]; | ||
|  |         big?: string[]; | ||
|  |         blockquote?: string[]; | ||
|  |         br?: string[]; | ||
|  |         caption?: string[]; | ||
|  |         center?: string[]; | ||
|  |         cite?: string[]; | ||
|  |         code?: string[]; | ||
|  |         col?: string[]; | ||
|  |         colgroup?: string[]; | ||
|  |         dd?: string[]; | ||
|  |         del?: string[]; | ||
|  |         details?: string[]; | ||
|  |         div?: string[]; | ||
|  |         dl?: string[]; | ||
|  |         dt?: string[]; | ||
|  |         em?: string[]; | ||
|  |         figure?: string[]; | ||
|  |         figcaption?: string[]; | ||
|  |         font?: string[]; | ||
|  |         footer?: string[]; | ||
|  |         h1?: string[]; | ||
|  |         h2?: string[]; | ||
|  |         h3?: string[]; | ||
|  |         h4?: string[]; | ||
|  |         h5?: string[]; | ||
|  |         h6?: string[]; | ||
|  |         header?: string[]; | ||
|  |         hr?: string[]; | ||
|  |         i?: string[]; | ||
|  |         img?: string[]; | ||
|  |         ins?: string[]; | ||
|  |         li?: string[]; | ||
|  |         mark?: string[]; | ||
|  |         nav?: string[]; | ||
|  |         ol?: string[]; | ||
|  |         p?: string[]; | ||
|  |         pre?: string[]; | ||
|  |         s?: string[]; | ||
|  |         section?: string[]; | ||
|  |         small?: string[]; | ||
|  |         span?: string[]; | ||
|  |         sub?: string[]; | ||
|  |         sup?: string[]; | ||
|  |         strong?: string[]; | ||
|  |         strike?: string[]; | ||
|  |         summary?: string[]; | ||
|  |         table?: string[]; | ||
|  |         tbody?: string[]; | ||
|  |         td?: string[]; | ||
|  |         tfoot?: string[]; | ||
|  |         th?: string[]; | ||
|  |         thead?: string[]; | ||
|  |         tr?: string[]; | ||
|  |         tt?: string[]; | ||
|  |         u?: string[]; | ||
|  |         ul?: string[]; | ||
|  |         video?: string[]; | ||
|  |       } | ||
|  | 
 | ||
|  |       type OnTagHandler = ( | ||
|  |         tag: string, | ||
|  |         html: string, | ||
|  |         options: { | ||
|  |           sourcePosition?: number; | ||
|  |           position?: number; | ||
|  |           isClosing?: boolean; | ||
|  |           isWhite?: boolean; | ||
|  |         } | ||
|  |       ) => string | void; | ||
|  | 
 | ||
|  |       type OnTagAttrHandler = ( | ||
|  |         tag: string, | ||
|  |         name: string, | ||
|  |         value: string, | ||
|  |         isWhiteAttr: boolean | ||
|  |       ) => string | void; | ||
|  | 
 | ||
|  |       type SafeAttrValueHandler = ( | ||
|  |         tag: string, | ||
|  |         name: string, | ||
|  |         value: string, | ||
|  |         cssFilter: ICSSFilter | ||
|  |       ) => string; | ||
|  | 
 | ||
|  |       type EscapeHandler = (str: string) => string; | ||
|  | 
 | ||
|  |       interface ICSSFilter { | ||
|  |         process(value: string): string; | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  |   export interface IFilterXSSOptions extends XSS.IFilterXSSOptions {} | ||
|  | 
 | ||
|  |   export interface IWhiteList extends XSS.IWhiteList {} | ||
|  | 
 | ||
|  |   export type OnTagHandler = XSS.OnTagHandler; | ||
|  | 
 | ||
|  |   export type OnTagAttrHandler = XSS.OnTagAttrHandler; | ||
|  | 
 | ||
|  |   export type SafeAttrValueHandler = XSS.SafeAttrValueHandler; | ||
|  | 
 | ||
|  |   export type EscapeHandler = XSS.EscapeHandler; | ||
|  | 
 | ||
|  |   export interface ICSSFilter extends XSS.ICSSFilter {} | ||
|  | 
 | ||
|  |   export function StripTagBody( | ||
|  |     tags: string[], | ||
|  |     next: () => void | ||
|  |   ): { | ||
|  |     onIgnoreTag( | ||
|  |       tag: string, | ||
|  |       html: string, | ||
|  |       options: { | ||
|  |         position: number; | ||
|  |         isClosing: boolean; | ||
|  |       } | ||
|  |     ): string; | ||
|  |     remove(html: string): string; | ||
|  |   }; | ||
|  | 
 | ||
|  |   export class FilterXSS { | ||
|  |     constructor(options?: IFilterXSSOptions); | ||
|  |     process(html: string): string; | ||
|  |   } | ||
|  | 
 | ||
|  |   export function filterXSS(html: string, options?: IFilterXSSOptions): string; | ||
|  |   export function parseTag( | ||
|  |     html: string, | ||
|  |     onTag: ( | ||
|  |       sourcePosition: number, | ||
|  |       position: number, | ||
|  |       tag: string, | ||
|  |       html: string, | ||
|  |       isClosing: boolean | ||
|  |     ) => string, | ||
|  |     escapeHtml: EscapeHandler | ||
|  |   ): string; | ||
|  |   export function parseAttr( | ||
|  |     html: string, | ||
|  |     onAttr: (name: string, value: string) => string | ||
|  |   ): string; | ||
|  |   export const whiteList: IWhiteList; | ||
|  |   export function getDefaultWhiteList(): IWhiteList; | ||
|  |   export const onTag: OnTagHandler; | ||
|  |   export const onIgnoreTag: OnTagHandler; | ||
|  |   export const onTagAttr: OnTagAttrHandler; | ||
|  |   export const onIgnoreTagAttr: OnTagAttrHandler; | ||
|  |   export const safeAttrValue: SafeAttrValueHandler; | ||
|  |   export const escapeHtml: EscapeHandler; | ||
|  |   export const escapeQuote: EscapeHandler; | ||
|  |   export const unescapeQuote: EscapeHandler; | ||
|  |   export const escapeHtmlEntities: EscapeHandler; | ||
|  |   export const escapeDangerHtml5Entities: EscapeHandler; | ||
|  |   export const clearNonPrintableCharacter: EscapeHandler; | ||
|  |   export const friendlyAttrValue: EscapeHandler; | ||
|  |   export const escapeAttrValue: EscapeHandler; | ||
|  |   export function onIgnoreTagStripAll(): string; | ||
|  |   export const stripCommentTag: EscapeHandler; | ||
|  |   export const stripBlankChar: EscapeHandler; | ||
|  |   export const cssFilter: ICSSFilter; | ||
|  |   export function getDefaultCSSWhiteList(): ICSSFilter; | ||
|  | 
 | ||
|  |   const xss: (html: string, options?: IFilterXSSOptions) => string; | ||
|  |   export default xss; | ||
|  | } |