1 | 'use strict';
|
2 | const getDocumentationUrl = require('./utils/get-documentation-url');
|
3 |
|
4 | const selector = [
|
5 | 'ThrowStatement',
|
6 | '>',
|
7 | 'CallExpression',
|
8 | '[callee.type="Identifier"]'
|
9 | ].join('');
|
10 | const customError = /^(?:[A-Z][\da-z]*)*Error$/;
|
11 | const message = 'Use `new` when throwing an error.';
|
12 |
|
13 | const create = context => ({
|
14 | [selector]: node => {
|
15 | if (customError.test(node.callee.name)) {
|
16 | context.report({
|
17 | node,
|
18 | message,
|
19 | fix: fixer => fixer.insertTextBefore(node, 'new ')
|
20 | });
|
21 | }
|
22 | }
|
23 | });
|
24 |
|
25 | module.exports = {
|
26 | create,
|
27 | meta: {
|
28 | type: 'suggestion',
|
29 | docs: {
|
30 | url: getDocumentationUrl(__filename)
|
31 | },
|
32 | fixable: 'code'
|
33 | }
|
34 | };
|