UNPKG

2.02 kBJavaScriptView Raw
1/**
2 * enforce to reference modules with the getter syntax
3 *
4 * When using a module, avoid using a variable and instead use chaining with the getter syntax
5 *
6 * @linkDescription disallow to reference modules with variables and require to use the getter syntax instead `angular.module('myModule')`
7 * @styleguideReference {johnpapa} `y022` Module - Getters
8 * @version 0.1.0
9 * @category possibleError
10 * @sinceAngularVersion 1.x
11 */
12'use strict';
13
14var utils = require('./utils/utils');
15
16module.exports = {
17 meta: {
18 schema: []
19 },
20 create: function(context) {
21 return {
22
23 ExpressionStatement: function(node) {
24 if ((utils.isAngularControllerDeclaration(node.expression) ||
25 utils.isAngularFilterDeclaration(node.expression) ||
26 utils.isAngularServiceDeclaration(node.expression) ||
27 utils.isAngularFactoryDeclaration(node.expression) ||
28 utils.isAngularConstantDeclaration(node.expression) ||
29 utils.isAngularValueDeclaration(node.expression) ||
30 utils.isAngularDirectiveDeclaration(node.expression) ||
31 utils.isAngularRunSection(node.expression) ||
32 utils.isAngularConfigSection(node.expression)) &&
33
34 !utils.isAngularModuleDeclaration(node.expression)) {
35 var calleeObject = node.expression.callee.object;
36
37 while (calleeObject !== undefined && calleeObject.type === 'CallExpression' && !utils.isAngularModuleGetter(calleeObject)) {
38 calleeObject = calleeObject.callee.object;
39 }
40 if (!(calleeObject !== undefined && calleeObject.type === 'CallExpression' && utils.isAngularModuleGetter(calleeObject))) {
41 context.report(node, 'Avoid using a variable and instead use chaining with the getter syntax.');
42 }
43 }
44 }
45 };
46 }
47};