1- import { isTag , isText , Node , Element } from "domhandler" ;
1+ import { isTag , isText , AnyNode , Element } from "domhandler" ;
22import { ElementType } from "domelementtype" ;
33import { filter , findOne } from "./querying" ;
44
5- type TestType = ( elem : Node ) => boolean ;
5+ type TestType = ( elem : AnyNode ) => boolean ;
66
77/**
88 * An object with keys to check elements against. If a key is `tag_name`,
@@ -27,23 +27,23 @@ const Checks: Record<
2727> = {
2828 tag_name ( name ) {
2929 if ( typeof name === "function" ) {
30- return ( elem : Node ) => isTag ( elem ) && name ( elem . name ) ;
30+ return ( elem : AnyNode ) => isTag ( elem ) && name ( elem . name ) ;
3131 } else if ( name === "*" ) {
3232 return isTag ;
3333 }
34- return ( elem : Node ) => isTag ( elem ) && elem . name === name ;
34+ return ( elem : AnyNode ) => isTag ( elem ) && elem . name === name ;
3535 } ,
3636 tag_type ( type ) {
3737 if ( typeof type === "function" ) {
38- return ( elem : Node ) => type ( elem . type ) ;
38+ return ( elem : AnyNode ) => type ( elem . type ) ;
3939 }
40- return ( elem : Node ) => elem . type === type ;
40+ return ( elem : AnyNode ) => elem . type === type ;
4141 } ,
4242 tag_contains ( data ) {
4343 if ( typeof data === "function" ) {
44- return ( elem : Node ) => isText ( elem ) && data ( elem . data ) ;
44+ return ( elem : AnyNode ) => isText ( elem ) && data ( elem . data ) ;
4545 }
46- return ( elem : Node ) => isText ( elem ) && elem . data === data ;
46+ return ( elem : AnyNode ) => isText ( elem ) && elem . data === data ;
4747 } ,
4848} ;
4949
@@ -58,9 +58,9 @@ function getAttribCheck(
5858 value : undefined | string | ( ( value : string ) => boolean )
5959) : TestType {
6060 if ( typeof value === "function" ) {
61- return ( elem : Node ) => isTag ( elem ) && value ( elem . attribs [ attrib ] ) ;
61+ return ( elem : AnyNode ) => isTag ( elem ) && value ( elem . attribs [ attrib ] ) ;
6262 }
63- return ( elem : Node ) => isTag ( elem ) && elem . attribs [ attrib ] === value ;
63+ return ( elem : AnyNode ) => isTag ( elem ) && elem . attribs [ attrib ] === value ;
6464}
6565
6666/**
@@ -70,7 +70,7 @@ function getAttribCheck(
7070 * functions returns `true` for the node.
7171 */
7272function combineFuncs ( a : TestType , b : TestType ) : TestType {
73- return ( elem : Node ) => a ( elem ) || b ( elem ) ;
73+ return ( elem : AnyNode ) => a ( elem ) || b ( elem ) ;
7474}
7575
7676/**
@@ -95,7 +95,7 @@ function compileTest(options: TestElementOpts): TestType | null {
9595 * @param node The element to test.
9696 * @returns Whether the element matches the description in `options`.
9797 */
98- export function testElement ( options : TestElementOpts , node : Node ) : boolean {
98+ export function testElement ( options : TestElementOpts , node : AnyNode ) : boolean {
9999 const test = compileTest ( options ) ;
100100 return test ? test ( node ) : true ;
101101}
@@ -110,10 +110,10 @@ export function testElement(options: TestElementOpts, node: Node): boolean {
110110 */
111111export function getElements (
112112 options : TestElementOpts ,
113- nodes : Node | Node [ ] ,
113+ nodes : AnyNode | AnyNode [ ] ,
114114 recurse : boolean ,
115115 limit = Infinity
116- ) : Node [ ] {
116+ ) : AnyNode [ ] {
117117 const test = compileTest ( options ) ;
118118 return test ? filter ( test , nodes , recurse , limit ) : [ ] ;
119119}
@@ -127,7 +127,7 @@ export function getElements(
127127 */
128128export function getElementById (
129129 id : string | ( ( id : string ) => boolean ) ,
130- nodes : Node | Node [ ] ,
130+ nodes : AnyNode | AnyNode [ ] ,
131131 recurse = true
132132) : Element | null {
133133 if ( ! Array . isArray ( nodes ) ) nodes = [ nodes ] ;
@@ -144,7 +144,7 @@ export function getElementById(
144144 */
145145export function getElementsByTagName (
146146 tagName : string | ( ( name : string ) => boolean ) ,
147- nodes : Node | Node [ ] ,
147+ nodes : AnyNode | AnyNode [ ] ,
148148 recurse = true ,
149149 limit = Infinity
150150) : Element [ ] {
@@ -161,9 +161,9 @@ export function getElementsByTagName(
161161 */
162162export function getElementsByTagType (
163163 type : ElementType | ( ( type : ElementType ) => boolean ) ,
164- nodes : Node | Node [ ] ,
164+ nodes : AnyNode | AnyNode [ ] ,
165165 recurse = true ,
166166 limit = Infinity
167- ) : Node [ ] {
167+ ) : AnyNode [ ] {
168168 return filter ( Checks . tag_type ( type as string ) , nodes , recurse , limit ) ;
169169}
0 commit comments