@@ -2046,7 +2046,7 @@ namespace ts {
20462046 }
20472047
20482048 export function getExternalModuleRequireArgument ( node : Node ) {
2049- return isRequireVariableDeclaration ( node ) && ( getLeftmostAccessExpression ( node . initializer ) as CallExpression ) . arguments [ 0 ] as StringLiteral ;
2049+ return isAccessedOrBareRequireVariableDeclaration ( node ) && ( getLeftmostAccessExpression ( node . initializer ) as CallExpression ) . arguments [ 0 ] as StringLiteral ;
20502050 }
20512051
20522052 export function isInternalModuleImportEqualsDeclaration ( node : Node ) : node is ImportEqualsDeclaration {
@@ -2114,10 +2114,23 @@ namespace ts {
21142114 * This function does not test if the node is in a JavaScript file or not.
21152115 */
21162116 export function isRequireVariableDeclaration ( node : Node ) : node is RequireVariableDeclaration {
2117+ return isVariableDeclarationInitializedWithRequireHelper ( node , /*allowAccessedRequire*/ false ) ;
2118+ }
2119+
2120+ /**
2121+ * Like `isRequireVariableDeclaration` but allows things like `require("...").foo.bar` or `require("...")["baz"]`.
2122+ */
2123+ export function isAccessedOrBareRequireVariableDeclaration ( node : Node ) : node is AccessedOrBareRequireVariableDeclaration {
2124+ return isVariableDeclarationInitializedWithRequireHelper ( node , /*allowAccessedRequire*/ true ) ;
2125+ }
2126+
2127+ function isVariableDeclarationInitializedWithRequireHelper ( node : Node , allowAccessedRequire : boolean ) {
21172128 if ( node . kind === SyntaxKind . BindingElement ) {
21182129 node = node . parent . parent ;
21192130 }
2120- return isVariableDeclaration ( node ) && ! ! node . initializer && isRequireCall ( getLeftmostAccessExpression ( node . initializer ) , /*requireStringLiteralLikeArgument*/ true ) ;
2131+ return isVariableDeclaration ( node ) &&
2132+ ! ! node . initializer &&
2133+ isRequireCall ( allowAccessedRequire ? getLeftmostAccessExpression ( node . initializer ) : node . initializer , /*requireStringLiteralLikeArgument*/ true ) ;
21212134 }
21222135
21232136 export function isRequireVariableStatement ( node : Node ) : node is RequireVariableStatement {
0 commit comments