UNPKG

1.72 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const utils_1 = require("@typescript-eslint/utils");
4const getESLintCoreRule_1 = require("../util/getESLintCoreRule");
5const util_1 = require("../util");
6const baseRule = (0, getESLintCoreRule_1.getESLintCoreRule)('init-declarations');
7exports.default = (0, util_1.createRule)({
8 name: 'init-declarations',
9 meta: {
10 type: 'suggestion',
11 docs: {
12 description: 'require or disallow initialization in variable declarations',
13 recommended: false,
14 extendsBaseRule: true,
15 },
16 hasSuggestions: baseRule.meta.hasSuggestions,
17 schema: baseRule.meta.schema,
18 messages: baseRule.meta.messages,
19 },
20 defaultOptions: ['always'],
21 create(context, [mode]) {
22 const rules = baseRule.create(context);
23 return {
24 'VariableDeclaration:exit'(node) {
25 if (mode === 'always') {
26 if (node.declare) {
27 return;
28 }
29 if (isAncestorNamespaceDeclared(node)) {
30 return;
31 }
32 }
33 rules['VariableDeclaration:exit'](node);
34 },
35 };
36 function isAncestorNamespaceDeclared(node) {
37 let ancestor = node.parent;
38 while (ancestor) {
39 if (ancestor.type === utils_1.AST_NODE_TYPES.TSModuleDeclaration &&
40 ancestor.declare) {
41 return true;
42 }
43 ancestor = ancestor.parent;
44 }
45 return false;
46 }
47 },
48});
49//# sourceMappingURL=init-declarations.js.map
\No newline at end of file