@@ -476,6 +476,7 @@ import esquery from 'esquery';
476
476
/**
477
477
* @typedef {BasicUtils & {
478
478
* isIteratingFunction: IsIteratingFunction,
479
+ * isIteratingFunctionOrVariable: IsIteratingFunction,
479
480
* isVirtualFunction: IsVirtualFunction,
480
481
* stringify: Stringify,
481
482
* reportJSDoc: ReportJSDoc,
@@ -716,14 +717,36 @@ const getUtils = (
716
717
tagNamePreference,
717
718
} = settings ;
718
719
720
+ const functionTypes = [
721
+ 'ArrowFunctionExpression' ,
722
+ 'FunctionDeclaration' ,
723
+ 'FunctionExpression' ,
724
+ 'MethodDefinition' ,
725
+ ] ;
726
+
719
727
/** @type {IsIteratingFunction } */
720
728
utils . isIteratingFunction = ( ) => {
721
- return ! iteratingAll || [
722
- 'ArrowFunctionExpression' ,
723
- 'FunctionDeclaration' ,
724
- 'FunctionExpression' ,
725
- 'MethodDefinition' ,
726
- ] . includes ( String ( node && node . type ) ) ;
729
+ return ! iteratingAll || functionTypes . includes ( String ( node ?. type ) ) ;
730
+ } ;
731
+
732
+ /** @type {IsIteratingFunction } */
733
+ utils . isIteratingFunctionOrVariable = ( ) => {
734
+ if ( utils . isIteratingFunction ( ) ) {
735
+ return true ;
736
+ }
737
+
738
+ /** @type {import('estree').VariableDeclarator[] } */
739
+ const declarations = node ?. type === 'VariableDeclaration' ?
740
+ node . declarations :
741
+ ( node ?. type === 'ExportNamedDeclaration' && node . declaration ?. type === 'VariableDeclaration' ?
742
+ node . declaration . declarations :
743
+ [ ] ) ;
744
+
745
+ return declarations . some ( ( {
746
+ init,
747
+ } ) => {
748
+ return functionTypes . includes ( String ( init ?. type ) ) ;
749
+ } ) ;
727
750
} ;
728
751
729
752
/** @type {IsVirtualFunction } */
0 commit comments