Skip to content

Commit f3080fd

Browse files
Merge pull request #458 from Gillespie59/development
2.0.0
2 parents 190022e + cb97248 commit f3080fd

File tree

4 files changed

+30
-19
lines changed

4 files changed

+30
-19
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-angular",
3-
"version": "1.6.4",
3+
"version": "2.0.0",
44
"description": "ESLint rules for AngularJS projects",
55
"main": "index.js",
66
"scripts": {

rules/no-services.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
*/
1414
'use strict';
1515

16-
var utils = require('./utils/utils');
16+
const utils = require('./utils/utils');
1717

1818
module.exports = {
1919
meta: {
@@ -24,10 +24,10 @@ module.exports = {
2424
}]
2525
},
2626
create: function(context) {
27-
var angularObjectList = ['controller', 'filter', 'directive'];
28-
var badServices;
29-
var map;
30-
var message = 'REST API calls should be implemented in a specific service';
27+
let angularObjectList = ['controller', 'filter', 'directive'];
28+
let badServices = [];
29+
let map;
30+
let message = 'REST API calls should be implemented in a specific service';
3131

3232
function isArray(item) {
3333
return Object.prototype.toString.call(item) === '[object Array]';
@@ -38,7 +38,7 @@ module.exports = {
3838
}
3939

4040
if (context.options[0] === undefined) {
41-
badServices = ['$http', '$resource', 'Restangular', '$q', '$filter'];
41+
badServices = ['/\$http/', '/\$resource/', 'Restangular', '/\$q/', '/\$filter/'];
4242
}
4343

4444
if (isArray(context.options[0])) {
@@ -51,8 +51,9 @@ module.exports = {
5151

5252
if (isObject(context.options[0])) {
5353
map = context.options[0];
54-
var result = [];
55-
var prop;
54+
55+
let result = [];
56+
let prop;
5657

5758
for (prop in map) {
5859
if (map.hasOwnProperty(prop)) {
@@ -65,15 +66,15 @@ module.exports = {
6566

6667
function isSetBedService(serviceName, angularObjectName) {
6768
if (map) {
68-
return map[angularObjectName].indexOf(serviceName) >= 0;
69+
return map[angularObjectName].find(object => utils.convertPrefixToRegex(object).test(serviceName));
6970
}
70-
return badServices.indexOf(serviceName) >= 0;
71+
return badServices.find(object => utils.convertPrefixToRegex(object).test(serviceName));
7172
}
7273

7374
return {
7475

7576
CallExpression: function(node) {
76-
var callee = node.callee;
77+
let callee = node.callee;
7778

7879
if (utils.isAngularComponent(node) && callee.type === 'MemberExpression' && angularObjectList.indexOf(callee.property.name) >= 0) {
7980
if (utils.isFunctionType(node.arguments[1])) {

test/directive-restrict.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ eslintTester.run('directive-restrict', rule, {
2626
'app.directive("", function() {return {restrict:"E"}})',
2727
// Allowed with custom restrict
2828
{
29+
code: `app.directive("snapContainer", [
30+
"$injector", "$rootScope", "$rootElement", "$timeout", "ibRoutePathSaver",
31+
function($injector, $rootScope, $rootElement, $timeout, ibRoutePathSaver) {
32+
return {
33+
restrict: "A"
34+
}
35+
}])`,
36+
options: [{restrict: 'A'}]
37+
}, {
2938
code: 'app.directive("", function() {return {restrict:"A"}})',
3039
options: [{restrict: 'A'}]
3140
}, {

test/no-services.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@ var eslintTester = new RuleTester();
1616

1717
var angularObjectList = ['controller', 'filter', 'directive'];
1818
var defaultBadService = ['$http', '$resource', 'Restangular', '$q', '$filter'];
19+
var defaultBadServiceExcaped = [/\$http/, /\$resource/, 'Restangular', /\$q/, /\$filter/];
1920
var mapAngularObjectToBarServices = {
20-
controller: defaultBadService,
21-
filter: defaultBadService,
22-
directive: defaultBadService
21+
controller: defaultBadServiceExcaped,
22+
filter: defaultBadServiceExcaped,
23+
directive: defaultBadServiceExcaped
2324
};
2425
var valid = [];
2526
var invalid = [];
@@ -39,11 +40,11 @@ angularObjectList.forEach(function(object) {
3940
defaultBadService.forEach(function(badService) {
4041
invalid.push({
4142
code: 'app.' + object + '("name", function(' + badService + ') {});',
42-
options: [defaultBadService],
43+
options: [defaultBadServiceExcaped],
4344
errors: [{message: 'REST API calls should be implemented in a specific service (' + badService + ' in ' + object + ')'}]
4445
}, {
4546
code: 'app.' + object + '("name", ["' + badService + '", function(' + badService + ') {}]);',
46-
options: [defaultBadService],
47+
options: [defaultBadServiceExcaped],
4748
errors: [{message: 'REST API calls should be implemented in a specific service (' + badService + ' in ' + object + ')'}]
4849
});
4950
});
@@ -61,11 +62,11 @@ angularObjectList.forEach(function(object) {
6162
defaultBadService.forEach(function(badService) {
6263
invalid.push({
6364
code: 'app.' + object + '("name", function(' + badService + ') {});',
64-
options: [defaultBadService, [object]],
65+
options: [defaultBadServiceExcaped, [object]],
6566
errors: [{message: 'REST API calls should be implemented in a specific service (' + badService + ' in ' + object + ')'}]
6667
}, {
6768
code: 'app.' + object + '("name", ["' + badService + '", function(' + badService + ') {}]);',
68-
options: [defaultBadService, [object]],
69+
options: [defaultBadServiceExcaped, [object]],
6970
errors: [{message: 'REST API calls should be implemented in a specific service (' + badService + ' in ' + object + ')'}]
7071
});
7172
});

0 commit comments

Comments
 (0)