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.
		
		
		
		
		
			
		
			
				
					
					
						
							219 lines
						
					
					
						
							6.8 KiB
						
					
					
				
			
		
		
	
	
							219 lines
						
					
					
						
							6.8 KiB
						
					
					
				export = CSSselect; | 
						|
 | 
						|
/** | 
						|
 * Alias for CSSselect.selectAll(query, elems, options). | 
						|
 * @see [CSSselect.compile] for supported selector queries. | 
						|
 */ | 
						|
declare function CSSselect<Node, ElementNode extends Node>( | 
						|
    query: CSSselect.Query, | 
						|
    elems: Array<ElementNode> | ElementNode, | 
						|
    options?: CSSselect.Options<Node, ElementNode> | 
						|
  ): Array<ElementNode>; | 
						|
 | 
						|
declare namespace CSSselect { | 
						|
  type Predicate<Value> = (v: Value) => boolean; | 
						|
  interface Adapter<Node, ElementNode extends Node> { | 
						|
    /** | 
						|
     *  is the node a tag? | 
						|
     */ | 
						|
    isTag(node: Node): node is ElementNode; | 
						|
 | 
						|
    /** | 
						|
     * Does at least one of passed element nodes pass the test predicate? | 
						|
     */ | 
						|
    existsOne(test: Predicate<ElementNode>, elems: Array<ElementNode>): boolean; | 
						|
 | 
						|
    /** | 
						|
     * get the attribute value. | 
						|
     */ | 
						|
    getAttributeValue(elem: ElementNode, name: string): string; | 
						|
 | 
						|
    /** | 
						|
     * get the node's children | 
						|
     */ | 
						|
    getChildren(node: Node): Array<Node>; | 
						|
 | 
						|
    /** | 
						|
     * get the name of the tag | 
						|
     */ | 
						|
    getName(elem: ElementNode): string; | 
						|
 | 
						|
    /** | 
						|
     * get the parent of the node | 
						|
     */ | 
						|
    getParent(node: Node): Node; | 
						|
 | 
						|
    /* | 
						|
      Get the siblings of the node. Note that unlike jQuery's `siblings` method, | 
						|
      this is expected to include the current node as well | 
						|
    */ | 
						|
    getSiblings(node: Node): Array<Node>; | 
						|
 | 
						|
    /* | 
						|
     * Get the text content of the node, and its children if it has any. | 
						|
     */ | 
						|
    getText(node: Node): string; | 
						|
 | 
						|
    /** | 
						|
     * Does the element have the named attribute? | 
						|
     */ | 
						|
    hasAttrib(elem: ElementNode, name: string): boolean; | 
						|
 | 
						|
    /** | 
						|
     * takes an array of nodes, and removes any duplicates, as well as any | 
						|
     * nodes whose ancestors are also in the array. | 
						|
     */ | 
						|
    removeSubsets(nodes: Array<Node>): Array<Node>; | 
						|
 | 
						|
    /** | 
						|
     * finds all of the element nodes in the array that match the test predicate, | 
						|
     * as well as any of their children that match it. | 
						|
     */ | 
						|
    findAll(test: Predicate<ElementNode>, nodes: Array<Node>): Array<ElementNode>; | 
						|
 | 
						|
    /** | 
						|
     * finds the first node in the array that matches the test predicate, or one | 
						|
     * of its children. | 
						|
     */ | 
						|
    findOne(test: Predicate<ElementNode>, elems: Array<ElementNode>): ElementNode | undefined, | 
						|
 | 
						|
    /** | 
						|
      The adapter can also optionally include an equals method, if your DOM | 
						|
      structure needs a custom equality test to compare two objects which refer | 
						|
      to the same underlying node. If not provided, `css-select` will fall back to | 
						|
      `a === b`. | 
						|
    */ | 
						|
    equals?: (a: Node, b: Node) => boolean; | 
						|
 | 
						|
     /** | 
						|
     * is the element in hovered state? | 
						|
     */ | 
						|
    isHovered?: (elem: ElementNode) => boolean; | 
						|
 | 
						|
    /** | 
						|
     * is the element in visited state? | 
						|
     */ | 
						|
    isVisited?: (elem: ElementNode) => boolean; | 
						|
 | 
						|
    /** | 
						|
     * is the element in active state? | 
						|
     */ | 
						|
    isActive?: (elem: ElementNode) => boolean; | 
						|
  } | 
						|
 | 
						|
  // TODO default types to the domutil/httpparser2 types | 
						|
  interface Options<Node, ElementNode extends Node> { | 
						|
    /** | 
						|
     * When enabled, tag names will be case-sensitive. Default: false. | 
						|
     */ | 
						|
    xmlMode?: boolean; | 
						|
    /** | 
						|
     * Limits the module to only use CSS3 selectors. Default: false. | 
						|
     */ | 
						|
    strict?: boolean; | 
						|
    /** | 
						|
     * The last function in the stack, will be called with the last element | 
						|
     * that's looked at. Should return true. | 
						|
     */ | 
						|
    rootFunc?: (element: ElementNode) => true; | 
						|
    /** | 
						|
     * The adapter to use when interacting with the backing DOM structure. By | 
						|
     * default it uses domutils. | 
						|
     */ | 
						|
    adapter?: Adapter<Node, ElementNode>; | 
						|
  } | 
						|
 | 
						|
  type CompiledQuery = (node: any) => boolean; | 
						|
  type Query = string | CompiledQuery; | 
						|
 | 
						|
  /** | 
						|
   * Compiles the query, returns a function. | 
						|
   *  | 
						|
   * Supported simple selectors: | 
						|
   *   * Universal (*) | 
						|
   *   * Tag (<tagname>) | 
						|
   *   * Attribute ([attr=foo]), with supported comparisons: | 
						|
   *     * [attr] (existential) | 
						|
   *     * = | 
						|
   *     * ~= | 
						|
   *     * |= | 
						|
   *     * *= | 
						|
   *     * ^= | 
						|
   *     * $= | 
						|
   *     * !=  | 
						|
   *     * Can be case insensitive (E.g. [attr=foo i]) | 
						|
   *   * Pseudos: | 
						|
   *     * :not | 
						|
   *     * :root | 
						|
   *     * :empty | 
						|
   *     * :[first|last]-child[-of-type] | 
						|
   *     * :only-of-type, :only-child | 
						|
   *     * :nth-[last-]child[-of-type] | 
						|
   *     * :link, :visited (the latter doesn't match any elements) | 
						|
   *     * :checked | 
						|
   *     * :enabled, :disabled | 
						|
   *     * :required, :optional | 
						|
   *   * Nonstandard Pseudos (available when strict mode is not enabled): | 
						|
   *     * `:contains` | 
						|
   *     * `:icontains` (case-insensitive version of :contains) | 
						|
   *     * `:has` | 
						|
   *     * `:parent` | 
						|
   *     * `:selected` | 
						|
   *     * `:header, :button, :input, :text, :checkbox, :file, :password, :reset, :radio etc. | 
						|
   *     * :matches | 
						|
   *  | 
						|
   * Supported Combinators: | 
						|
   *  | 
						|
   *   * Descendant (` `) | 
						|
   *   * Child (`>`) | 
						|
   *   * Parent (`<`) (when strict mode is not enabled) | 
						|
   *   * Sibling (`~`) | 
						|
   *   * Adjacent (`+`) | 
						|
   */ | 
						|
  function compile(query: string): CompiledQuery; | 
						|
  /** | 
						|
   * @template Node The generic Node type for the DOM adapter being used. | 
						|
   * @template ElementNode The Node type for elements for the DOM adapter being used. | 
						|
   * @param elems Elements to query. If it is an element, its children will be queried.. | 
						|
   * @param query can be either a CSS selector string or a compiled query function. | 
						|
   * @param [options] options for querying the document. | 
						|
   * @see CSSselect.compile for supported selector queries. | 
						|
   * @returns All matching elements. | 
						|
   */ | 
						|
  function selectAll<Node, ElementNode extends Node>( | 
						|
    query: Query, | 
						|
    elems: Array<ElementNode> | ElementNode, | 
						|
    options?: Options<Node, ElementNode> | 
						|
  ): Array<ElementNode>; | 
						|
  /** | 
						|
   * @template Node The generic Node type for the DOM adapter being used. | 
						|
   * @template ElementNode The Node type for elements for the DOM adapter being used. | 
						|
   * @param elems Elements to query. If it is an element, its children will be queried.. | 
						|
   * @param query can be either a CSS selector string or a compiled query function. | 
						|
   * @param [options] options for querying the document. | 
						|
   * @see CSSselect.compile for supported selector queries. | 
						|
   * @returns the first match, or null if there was no match. | 
						|
   */ | 
						|
  function selectOne<Node, ElementNode extends Node>( | 
						|
    query: Query, | 
						|
    elems: Array<ElementNode> | ElementNode, | 
						|
    options?: Options<Node, ElementNode> | 
						|
  ): ElementNode | null; | 
						|
 | 
						|
  /** | 
						|
   * Tests whether or not an element is matched by query. | 
						|
   *  | 
						|
   * @template Node The generic Node type for the DOM adapter being used. | 
						|
   * @template ElementNode The Node type for elements for the DOM adapter being used. | 
						|
   * @param elem The element to test if it matches the query. | 
						|
   * @param query can be either a CSS selector string or a compiled query function. | 
						|
   * @param [options] options for querying the document. | 
						|
   * @see CSSselect.compile for supported selector queries. | 
						|
   * @returns  | 
						|
   */ | 
						|
  function is<Node, ElementNode extends Node>( | 
						|
    elem: ElementNode, | 
						|
    query: Query, | 
						|
    options?: Options<Node, ElementNode> | 
						|
  ): boolean; | 
						|
} |