@masknet/eslint-plugin
Version:
eslint plugin for masknet
38 lines • 1.33 kB
JavaScript
import { createRule, ensureParserWithTypeInformation } from "../rule.js";
import { isConstructor } from "../type-checker.js";
export default createRule({
name: 'no-default-error',
meta: {
type: 'problem',
docs: {
description: 'Restrict the usage of default (unextended) error',
recommended: 'strict',
requiresTypeChecking: true,
},
schema: [],
messages: {
invalid: 'Default error object should not be used in this project',
},
},
defaultOptions: [],
create(context) {
ensureParserWithTypeInformation(context.sourceCode.parserServices);
const { esTreeNodeToTSNodeMap, program } = context.sourceCode.parserServices;
const typeChecker = program.getTypeChecker();
function report(node) {
if (!isConstructor(typeChecker, esTreeNodeToTSNodeMap.get(node), 'ErrorConstructor'))
return;
context.report({ node, messageId: 'invalid' });
}
return {
ThrowStatement(node) {
if (!node.argument)
return;
report(node.argument);
},
NewExpression: report,
CallExpression: report,
};
},
});
//# sourceMappingURL=no-default-error.js.map