From 4063f46abb0d876321c2a859788e936160ceb3af Mon Sep 17 00:00:00 2001 From: headlessNode Date: Sat, 7 Dec 2024 13:33:34 +0500 Subject: [PATCH] feat: add fixer function --- .../rules/no-internal-require/lib/main.js | 23 ++++++++++++++++++- .../test/fixtures/invalid.js | 15 ++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/lib/main.js b/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/lib/main.js index 9a185f38920e..801fb2c28cad 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/lib/main.js +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/lib/main.js @@ -48,8 +48,27 @@ function main( context ) { function report( node ) { context.report({ 'node': node, - 'message': 'require() call contains a path which loads a module internal to a stdlib package, and, thus, should be considered private' + 'message': 'require() call contains a path which loads a module internal to a stdlib package, and, thus, should be considered private', + 'fix': fix }); + + /** + * Fixes the lint error by removing internal path from the require statement. + * + * @private + * @param {Object} fixer - ESLint fixer + * @returns {Object} fix - fix object + */ + function fix( fixer ) { + var replacingText; + var statement; + var source; + + source = context.getSourceCode(); + statement = source.getText( node.arguments[ 0 ] ); + replacingText = statement.replace(/\/lib\/.*$/, '\''); + return fixer.replaceTextRange( node.arguments[ 0 ].range, replacingText ); // eslint-disable-line max-len + } } /** @@ -83,9 +102,11 @@ function main( context ) { rule = { 'meta': { + 'type': 'suggestion', 'docs': { 'description': 'disallow require() calls into internals of other stdlib packages' }, + 'fixable': 'code', 'schema': [] }, 'create': main diff --git a/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/test/fixtures/invalid.js b/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/test/fixtures/invalid.js index 511dd0e0392f..d253f05b70e7 100644 --- a/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/test/fixtures/invalid.js +++ b/lib/node_modules/@stdlib/_tools/eslint/rules/no-internal-require/test/fixtures/invalid.js @@ -32,7 +32,12 @@ test = { 'message': 'require() call contains a path which loads a module internal to a stdlib package, and, thus, should be considered private', 'type': 'CallExpression' } - ] + ], + 'output': [ + '// MODULES //', + '', + 'var betainc = require( \'@stdlib/math/base/special/betainc\' );' + ].join( '\n' ) }; invalid.push( test ); @@ -48,7 +53,13 @@ test = { 'message': 'require() call contains a path which loads a module internal to a stdlib package, and, thus, should be considered private', 'type': 'CallExpression' } - ] + ], + 'output': [ + '// MODULES //', + '', + 'var betaincinv = require( \'@stdlib/math/base/special/betaincinv\' )', + 'var kernelBetainc = require( \'@stdlib/math/base/special/kernel-betainc\' )' + ].join( '\n' ) }; invalid.push( test );