oncall-engine/grafana-plugin/tools/eslint-rules/no-relative-import-paths.js
Michael Derynck 6b40f95033 World, meet OnCall!
Co-authored-by: Eve832 <eve.meelan@grafana.com>
    Co-authored-by: Francisco Montes de Oca <nevermind89x@gmail.com>
    Co-authored-by: Ildar Iskhakov <ildar.iskhakov@grafana.com>
    Co-authored-by: Innokentii Konstantinov <innokenty.konstantinov@grafana.com>
    Co-authored-by: Julia <ferril.darkdiver@gmail.com>
    Co-authored-by: maskin25 <kengurek@gmail.com>
    Co-authored-by: Matias Bordese <mbordese@gmail.com>
    Co-authored-by: Matvey Kukuy <motakuk@gmail.com>
    Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
    Co-authored-by: Richard Hartmann <richih@richih.org>
    Co-authored-by: Robby Milo <robbymilo@fastmail.com>
    Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
    Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
    Co-authored-by: Yulia Shanyrova <yulia.shanyrova@grafana.com>
2022-06-03 08:09:47 -06:00

56 lines
1.4 KiB
JavaScript

const path = require('path');
function isParentFolder(path) {
return path.startsWith('../');
}
function isSameFolder(path) {
return path.startsWith('./');
}
function getAbsolutePath(relativePath, context) {
return path.relative(`${context.getCwd()}/src`, path.join(path.dirname(context.getFilename()), relativePath));
}
const message = 'import statements should have an absolute path';
module.exports = {
meta: {
type: 'layout',
fixable: 'code',
},
create: function (context) {
const { allowSameFolder } = context.options[0] || {};
return {
ImportDeclaration: function (node) {
const path = node.source.value;
if (isParentFolder(path)) {
context.report({
node,
message: message,
fix: function (fixer) {
return fixer.replaceTextRange(
[node.source.range[0] + 1, node.source.range[1] - 1],
getAbsolutePath(path, context)
);
},
});
}
if (isSameFolder(path) && !allowSameFolder) {
context.report({
node,
message: message,
fix: function (fixer) {
return fixer.replaceTextRange(
[node.source.range[0] + 1, node.source.range[1] - 1],
getAbsolutePath(path, context)
);
},
});
}
},
};
},
};