You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
46 lines
1.2 KiB
/**
|
|
* @author ItMaga <https://github.com/ItMaga>
|
|
* See LICENSE file in root directory for full license.
|
|
*/
|
|
'use strict'
|
|
|
|
const utils = require('../utils')
|
|
|
|
// eslint-disable-next-line internal/no-invalid-meta
|
|
module.exports = utils.wrapCoreRule('no-console', {
|
|
skipBaseHandlers: true,
|
|
create(context) {
|
|
const options = context.options[0] || {}
|
|
const allowed = options.allow || []
|
|
|
|
/**
|
|
* Copied from the core rule `no-console`.
|
|
* Checks whether the property name of the given MemberExpression node
|
|
* is allowed by options or not.
|
|
* @param {MemberExpression} node The MemberExpression node to check.
|
|
* @returns {boolean} `true` if the property name of the node is allowed.
|
|
*/
|
|
function isAllowed(node) {
|
|
const propertyName = utils.getStaticPropertyName(node)
|
|
|
|
return propertyName && allowed.includes(propertyName)
|
|
}
|
|
|
|
return {
|
|
MemberExpression(node) {
|
|
if (
|
|
node.object.type === 'Identifier' &&
|
|
node.object.name === 'console' &&
|
|
!isAllowed(node)
|
|
) {
|
|
context.report({
|
|
node: node.object,
|
|
loc: node.object.loc,
|
|
messageId: 'unexpected'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|