@@ -9,55 +9,56 @@ import {convert} from 'unist-util-is'
9
9
/**
10
10
* Find the first node in `parent` after another `node` or after an index,
11
11
* that passes `test`.
12
-
13
- * @param parent
12
+ *
13
+ * @template {Node} Kind
14
+ * Node type.
15
+ *
16
+ * @overload
17
+ * @param {Parent } parent
18
+ * @param {Node | number } index
19
+ * @param {import('unist-util-is').PredicateTest<Kind> } test
20
+ * @returns {Kind | null }
21
+ *
22
+ * @overload
23
+ * @param {Parent } parent
24
+ * @param {Node | number } index
25
+ * @param {Test } [test]
26
+ * @returns {Node | null }
27
+ *
28
+ * @param {Parent } parent
14
29
* Parent node.
15
- * @param index
30
+ * @param { Node | number } index
16
31
* Child of `parent` or it’s index.
17
- * @param test
32
+ * @param { Test } [ test]
18
33
* `unist-util-is`-compatible test.
19
- * @returns
34
+ * @returns { Node | null }
20
35
* Child of `parent` or `null`.
21
36
*/
22
- export const findAfter =
23
- /**
24
- * @type {(
25
- * (<T extends Node>(node: Parent, index: Node | number, test: import('unist-util-is').PredicateTest<T>) => T | null) &
26
- * ((node: Parent, index: Node | number, test?: Test) => Node | null)
27
- * )}
28
- */
29
- (
30
- /**
31
- * @param {Parent } parent
32
- * @param {Node | number } index
33
- * @param {Test } [test]
34
- * @returns {Node | null }
35
- */
36
- function ( parent , index , test ) {
37
- const is = convert ( test )
38
-
39
- if ( ! parent || ! parent . type || ! parent . children ) {
40
- throw new Error ( 'Expected parent node' )
41
- }
37
+ // To do: next major: `undefined`.
38
+ export function findAfter ( parent , index , test ) {
39
+ const is = convert ( test )
42
40
43
- if ( typeof index === 'number' ) {
44
- if ( index < 0 || index === Number . POSITIVE_INFINITY ) {
45
- throw new Error ( 'Expected positive finite number as index' )
46
- }
47
- } else {
48
- index = parent . children . indexOf ( index )
41
+ if ( ! parent || ! parent . type || ! parent . children ) {
42
+ throw new Error ( 'Expected parent node' )
43
+ }
49
44
50
- if ( index < 0 ) {
51
- throw new Error ( 'Expected child node or index' )
52
- }
53
- }
45
+ if ( typeof index === 'number' ) {
46
+ if ( index < 0 || index === Number . POSITIVE_INFINITY ) {
47
+ throw new Error ( 'Expected positive finite number as index' )
48
+ }
49
+ } else {
50
+ index = parent . children . indexOf ( index )
54
51
55
- while ( ++ index < parent . children . length ) {
56
- if ( is ( parent . children [ index ] , index , parent ) ) {
57
- return parent . children [ index ]
58
- }
59
- }
52
+ if ( index < 0 ) {
53
+ throw new Error ( 'Expected child node or index' )
54
+ }
55
+ }
60
56
61
- return null
57
+ while ( ++ index < parent . children . length ) {
58
+ if ( is ( parent . children [ index ] , index , parent ) ) {
59
+ return parent . children [ index ]
62
60
}
63
- )
61
+ }
62
+
63
+ return null
64
+ }
0 commit comments