MCPcopy Create free account
hub / github.com/microsoft/typescript-go / ForEachDynamicImportOrRequireCall

Function ForEachDynamicImportOrRequireCall

internal/ast/utilities.go:2696–2724  ·  view source on GitHub ↗
(
	file *SourceFile,
	includeTypeSpaceImports bool,
	requireStringLiteralLikeArgument bool,
	cb func(node *Node, argument *Expression) bool,
)

Source from the content-addressed store, hash-verified

2694}
2695
2696func 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")').

Callers 1

Calls 14

IsInJSFileFunction · 0.85
findImportOrRequireFunction · 0.85
GetNodeAtPositionFunction · 0.85
IsRequireCallFunction · 0.85
IsImportCallFunction · 0.85
lenFunction · 0.85
IsStringLiteralLikeFunction · 0.85
IsLiteralImportTypeNodeFunction · 0.85
ArgumentsMethod · 0.80
AsLiteralTypeNodeMethod · 0.80
AsImportTypeNodeMethod · 0.80
AsNodeMethod · 0.65

Tested by

no test coverage detected