11'use strict' ;
22const { defaultsDeep} = require ( 'lodash' ) ;
33const { getStringIfConstant} = require ( 'eslint-utils' ) ;
4- const eslintTemplateVisitor = require ( 'eslint-template-visitor' ) ;
54const { callExpressionSelector} = require ( './selectors/index.js' ) ;
65
76const MESSAGE_ID = 'importStyle' ;
@@ -131,24 +130,18 @@ const defaultStyles = {
131130 } ,
132131} ;
133132
134- const templates = eslintTemplateVisitor ( {
135- parserOptions : {
136- sourceType : 'module' ,
137- ecmaVersion : 2018 ,
138- } ,
139- } ) ;
140-
141- const variableDeclarationVariable = templates . variableDeclarationVariable ( ) ;
142- const assignmentTargetVariable = templates . variable ( ) ;
143- const moduleNameVariable = templates . variable ( ) ;
144-
145- const assignedDynamicImportTemplate = templates . template `async () => {
146- ${ variableDeclarationVariable } ${ assignmentTargetVariable } = await import(${ moduleNameVariable } );
147- }` . narrow ( 'BlockStatement > :has(AwaitExpression)' ) ;
133+ const assignedDynamicImportSelector = [
134+ 'VariableDeclarator' ,
135+ '[init.type="AwaitExpression"]' ,
136+ '[init.argument.type="ImportExpression"]' ,
137+ ] . join ( '' ) ;
148138
149- const assignedRequireTemplate = templates . template `
150- ${ variableDeclarationVariable } ${ assignmentTargetVariable } = require(${ moduleNameVariable } );
151- ` ;
139+ const assignedRequireSelector = [
140+ 'VariableDeclarator' ,
141+ '[init.type="CallExpression"]' ,
142+ '[init.callee.type="Identifier"]' ,
143+ '[init.callee.name="require"]' ,
144+ ] . join ( '' ) ;
152145
153146/** @param {import('eslint').Rule.RuleContext } context */
154147const create = context => {
@@ -235,9 +228,9 @@ const create = context => {
235228 report ( node , moduleName , actualImportStyles , allowedImportStyles ) ;
236229 } ,
237230
238- [ assignedDynamicImportTemplate ] ( node ) {
239- const assignmentTargetNode = assignedDynamicImportTemplate . context . getMatch ( assignmentTargetVariable ) ;
240- const moduleNameNode = assignedDynamicImportTemplate . context . getMatch ( moduleNameVariable ) ;
231+ [ assignedDynamicImportSelector ] ( node ) {
232+ const assignmentTargetNode = node . id ;
233+ const moduleNameNode = node . init . argument . source ;
241234 const moduleName = getStringIfConstant ( moduleNameNode , context . getScope ( ) ) ;
242235
243236 if ( ! moduleName ) {
@@ -288,9 +281,9 @@ const create = context => {
288281 report ( node , moduleName , actualImportStyles , allowedImportStyles , true ) ;
289282 } ,
290283
291- [ assignedRequireTemplate ] ( node ) {
292- const assignmentTargetNode = assignedRequireTemplate . context . getMatch ( assignmentTargetVariable ) ;
293- const moduleNameNode = assignedRequireTemplate . context . getMatch ( moduleNameVariable ) ;
284+ [ assignedRequireSelector ] ( node ) {
285+ const assignmentTargetNode = node . id ;
286+ const moduleNameNode = node . init . arguments [ 0 ] ;
294287 const moduleName = getStringIfConstant ( moduleNameNode , context . getScope ( ) ) ;
295288
296289 if ( ! moduleName ) {
@@ -305,7 +298,7 @@ const create = context => {
305298 } ;
306299 }
307300
308- return templates . visitor ( visitor ) ;
301+ return visitor ;
309302} ;
310303
311304const schema = {
0 commit comments