| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | /// <reference types="xss" />/** * The response from the validate method * * @export * @interface IValidationResponse */export interface IValidationResponse {    isValid: boolean;    sanitized: any;}export interface IWhiteList extends XSS.IWhiteList {    source?: string[];}/** Options to apply to sanitize method */export interface ISanitizeOptions {    allowUndefined?: boolean;}/** * The Sanitizer Class * * @export * @class Sanitizer */export declare class Sanitizer {    readonly arcgisWhiteList: IWhiteList;    readonly allowedProtocols: string[];    readonly arcgisFilterOptions: XSS.IFilterXSSOptions;    readonly xssFilterOptions: XSS.IFilterXSSOptions;    private _xssFilter;    private readonly _entityMap;    constructor(filterOptions?: XSS.IFilterXSSOptions, extendDefaults?: boolean);    /**     * Sanitizes value to remove invalid HTML tags.     *     * Note: If the value passed does not contain a valid JSON data type (String,     * Number, JSON Object, Array, Boolean, or null), the value will be nullified.     *     * @param {any} value The value to sanitize.     * @returns {any} The sanitized value.     * @memberof Sanitizer     */    sanitize(value: any, options?: ISanitizeOptions): any;    /**     * Sanitizes a URL string following the allowed protocols and sanitization rules.     *     * @param {string} value The URL to sanitize.     * @param {{ isProtocolRequired: boolean }} options Configuration options for URL checking.     * @returns {string} The sanitized URL if it's valid, or an empty string if the URL is invalid.     */    sanitizeUrl(value: string, options?: {        /** Whether a protocol must exist on the URL for it to be considered valid. Defaults to `true`. If `false` and the provided URL has no protocol, it will be automatically prefixed with `https://`. */        isProtocolRequired?: boolean;    }): string;    /**     * Sanitizes an HTML attribute value.     *     * @param {string} tag The tagname of the HTML element.     * @param {string} attribute The attribute name of the HTML element.     * @param {string} value The raw value to be used for the HTML attribute value.     * @param {XSS.ICSSFilter} [cssFilter] The CSS filter to be used.     * @returns {string} The sanitized attribute value.     * @memberof Sanitizer     */    sanitizeHTMLAttribute(tag: string, attribute: string, value: string, cssFilter?: XSS.ICSSFilter): string;    /**     * Checks if a value only contains valid HTML.     *     * @param {any} value The value to validate.     * @returns {boolean}     * @memberof Sanitizer     */    validate(value: any, options?: ISanitizeOptions): IValidationResponse;    /**     * Encodes the following characters, `& < > \" ' /` to their hexadecimal HTML entity code.     * Example: "·" => "8middot;"     *     * @param {string} value The value to encode.     * @returns {string} The encoded string value.     * @memberof Sanitizer     */    encodeHTML(value: string): string;    /**     * Encodes all non-alphanumeric ASCII characters to their hexadecimal HTML entity codes.     * Example: "alert(document.cookie)" => "alert(document.cookie)"     *     * @param {string} value The value to encode.     * @returns {string} The encoded string value.     * @memberof Sanitizer     */    encodeAttrValue(value: string): string;    /**     * Extends an object of arrays by by concatenating arrays of the same object     * keys. If the if the previous key's value is not an array, the next key's     * value will replace the previous key. This method is used for extending the     * whiteList in the XSS filter options.     *     * @private     * @param {Array<{}>} objects An array of objects.     * @returns {{}} The extended object.     * @memberof Sanitizer     */    private _extendObjectOfArrays;    /**     * Iterate over a plain object or array to deeply sanitize each value.     *     * @private     * @param {object} obj The object to iterate over.     * @returns {(object | null)} The sanitized object.     * @memberof Sanitizer     */    private _iterateOverObject;    /**     * Trim whitespace from the start and ends of a string.     * @param {string} val The string to trim.     * @returns {string} The trimmed string.     */    private _trim;}export default Sanitizer;
 |