blob: 7a37a903fa40e23dd68980c52e30aee697bb2bd6 [file] [log] [blame]
const depGraph = require('../dependency-graph')
module.exports = {
meta: {
docs: {}
},
create(context) {
const filename = context.getFilename()
const {identifiers} = depGraph.imported()
if (depGraph.entries.has(filename)) {
return {}
}
if (identifiers.has(`${filename}#*`)) {
return {}
}
return {
ExportDefaultDeclaration(node) {
if (!identifiers.has(`${filename}#default`)) {
context.report(node, 'Export was not imported by any modules.')
}
},
ExportNamedDeclaration(node) {
if (node.declaration == null) return
if (node.declaration.id != null) {
if (!identifiers.has(`${filename}#${node.declaration.id.name}`)) {
context.report(node, 'Export was not imported by any modules.')
}
}
if (node.declaration.declarations != null) {
for (const declaration of node.declaration.declarations) {
if (!identifiers.has(`${filename}#${declaration.id.name}`)) {
context.report(node, 'Export was not imported by any modules.')
}
}
}
},
MemberExpression(node) {
if (context.getScope().type !== 'module') {
return
}
if (node.object.name === 'exports') {
if (!identifiers.has(`${filename}#${node.property.name}`)) {
context.report(node.parent, 'Export was not imported by any modules.')
}
}
}
}
}
}