( file *SourceFile, includeTypeSpaceImports bool, requireStringLiteralLikeArgument bool, cb func(node *Node, argument *Expression) bool, )
| 2694 | } |
| 2695 | |
| 2696 | func ForEachDynamicImportOrRequireCall( |
| 2697 | file *SourceFile, |
| 2698 | includeTypeSpaceImports bool, |
| 2699 | requireStringLiteralLikeArgument bool, |
| 2700 | cb func(node *Node, argument *Expression) bool, |
| 2701 | ) bool { |
| 2702 | isJavaScriptFile := IsInJSFile(file.AsNode()) |
| 2703 | lastIndex, size := findImportOrRequire(file.Text(), 0) |
| 2704 | for lastIndex >= 0 { |
| 2705 | node := GetNodeAtPosition(file, lastIndex, isJavaScriptFile && includeTypeSpaceImports) |
| 2706 | if isJavaScriptFile && IsRequireCall(node, requireStringLiteralLikeArgument) { |
| 2707 | if cb(node, node.Arguments()[0]) { |
| 2708 | return true |
| 2709 | } |
| 2710 | } else if IsImportCall(node) && len(node.Arguments()) > 0 && (!requireStringLiteralLikeArgument || IsStringLiteralLike(node.Arguments()[0])) { |
| 2711 | if cb(node, node.Arguments()[0]) { |
| 2712 | return true |
| 2713 | } |
| 2714 | } else if includeTypeSpaceImports && IsLiteralImportTypeNode(node) { |
| 2715 | if cb(node, node.AsImportTypeNode().Argument.AsLiteralTypeNode().Literal) { |
| 2716 | return true |
| 2717 | } |
| 2718 | } |
| 2719 | // skip past import/require |
| 2720 | lastIndex += size |
| 2721 | lastIndex, size = findImportOrRequire(file.Text(), lastIndex) |
| 2722 | } |
| 2723 | return false |
| 2724 | } |
| 2725 | |
| 2726 | // Returns true if the node is a CallExpression to the identifier 'require' with |
| 2727 | // exactly one argument (of the form 'require("name")'). |
no test coverage detected