eslint-plugin-ember
Advanced tools
Comparing version 6.4.1 to 6.5.0
# Changelog | ||
## 6.4.1 (2019-04-21) | ||
## v6.5.0 (2019-05-26) | ||
#### :rocket: Enhancement | ||
* [#421](https://github.com/ember-cli/eslint-plugin-ember/pull/421) Update the `no-get` rule to also handle the `getProperties` function, and mark the `no-get-properties` rule as deprecated ([@bmish](https://github.com/bmish)) | ||
* [#397](https://github.com/ember-cli/eslint-plugin-ember/pull/397) Add new `computed-property-getters` rule ([@jrjohnson](https://github.com/jrjohnson)) | ||
#### :memo: Documentation | ||
* [#412](https://github.com/ember-cli/eslint-plugin-ember/pull/412) Update release instructions ([@bmish](https://github.com/bmish)) | ||
#### Committers: 2 | ||
- Bryan Mishkin ([@bmish](https://github.com/bmish)) | ||
- Jonathan Johnson ([@jrjohnson](https://github.com/jrjohnson)) | ||
## v6.4.1 (2019-04-21) | ||
#### :bug: Bug Fix | ||
@@ -6,0 +19,0 @@ * [#413](https://github.com/ember-cli/eslint-plugin-ember/pull/413) Ignore template literals in `no-get` and `no-get-properties` rules ([@bmish](https://github.com/bmish)) |
@@ -13,2 +13,3 @@ /* | ||
"ember/closure-actions": "error", | ||
"ember/computed-property-getters": "off", | ||
"ember/jquery-ember-run": "error", | ||
@@ -53,2 +54,2 @@ "ember/local-modules": "off", | ||
"ember/use-ember-get-and-set": "off" | ||
} | ||
} |
@@ -16,4 +16,6 @@ 'use strict'; | ||
category: 'Best Practices', | ||
replacedBy: ['no-get'], | ||
recommended: false | ||
}, | ||
deprecated: true, | ||
ERROR_MESSAGE | ||
@@ -20,0 +22,0 @@ }, |
@@ -5,3 +5,3 @@ 'use strict'; | ||
function makeErrorMessage(property, isImportedGet) { | ||
function makeErrorMessageForGet(property, isImportedGet) { | ||
return isImportedGet | ||
@@ -12,7 +12,10 @@ ? `Use \`this.${property}\` instead of \`get(this, '${property}')\`` | ||
const ERROR_MESSAGE_GET_PROPERTIES = "Use `{ this.prop1, this.prop2, ... }` instead of Ember's `getProperties` function"; | ||
module.exports = { | ||
makeErrorMessage, | ||
makeErrorMessageForGet, | ||
ERROR_MESSAGE_GET_PROPERTIES, | ||
meta: { | ||
docs: { | ||
description: "Disallow unnecessary usage of Ember's `get` function", | ||
description: "Require ES5 getters instead of Ember's `get` / `getProperties` functions", | ||
category: 'Best Practices', | ||
@@ -25,5 +28,10 @@ recommended: false | ||
CallExpression(node) { | ||
// ************************** | ||
// get | ||
// ************************** | ||
if ( | ||
utils.isMemberExpression(node.callee) && | ||
utils.isThisExpression(node.callee.object) && | ||
utils.isIdentifier(node.callee.property) && | ||
node.callee.property.name === 'get' && | ||
@@ -35,3 +43,3 @@ node.arguments.length === 1 && | ||
// Example: this.get('foo'); | ||
context.report(node, makeErrorMessage(node.arguments[0].value), false); | ||
context.report(node, makeErrorMessageForGet(node.arguments[0].value), false); | ||
} | ||
@@ -48,4 +56,29 @@ | ||
// Example: get(this, 'foo'); | ||
context.report(node, makeErrorMessage(node.arguments[1].value, true)); | ||
context.report(node, makeErrorMessageForGet(node.arguments[1].value, true)); | ||
} | ||
// ************************** | ||
// getProperties | ||
// ************************** | ||
if ( | ||
utils.isMemberExpression(node.callee) && | ||
utils.isThisExpression(node.callee.object) && | ||
utils.isIdentifier(node.callee.property) && | ||
node.callee.property.name === 'getProperties' && | ||
validateGetPropertiesArguments(node.arguments) | ||
) { | ||
// Example: this.getProperties('foo', 'bar'); | ||
context.report(node, ERROR_MESSAGE_GET_PROPERTIES); | ||
} | ||
if ( | ||
utils.isIdentifier(node.callee) && | ||
node.callee.name === 'getProperties' && | ||
utils.isThisExpression(node.arguments[0]) && | ||
validateGetPropertiesArguments(node.arguments.slice(1)) | ||
) { | ||
// Example: getProperties(this, 'foo', 'bar'); | ||
context.report(node, ERROR_MESSAGE_GET_PROPERTIES); | ||
} | ||
} | ||
@@ -55,1 +88,9 @@ }; | ||
}; | ||
function validateGetPropertiesArguments(args) { | ||
if (args.length === 1 && utils.isArrayExpression(args[0])) { | ||
return validateGetPropertiesArguments(args[0].elements); | ||
} | ||
// We can only handle string arguments without nested property paths. | ||
return args.every(argument => utils.isStringLiteral(argument) && !argument.value.includes('.')); | ||
} |
{ | ||
"name": "eslint-plugin-ember", | ||
"version": "6.4.1", | ||
"version": "6.5.0", | ||
"description": "Eslint plugin for Ember.js apps", | ||
@@ -57,3 +57,3 @@ "main": "lib/index.js", | ||
"eslint-plugin-import": "^2.17.2", | ||
"jest": "^24.7.1", | ||
"jest": "^24.8.0", | ||
"lerna-changelog": "^0.8.2" | ||
@@ -60,0 +60,0 @@ }, |
@@ -92,4 +92,3 @@ # eslint-plugin-ember | ||
| :white_check_mark: | [no-function-prototype-extensions](./docs/rules/no-function-prototype-extensions.md) | Prevents usage of Ember's `function` prototype extensions | | ||
| | [no-get-properties](./docs/rules/no-get-properties.md) | Disallow unnecessary usage of Ember's `getProperties` function | | ||
| | [no-get](./docs/rules/no-get.md) | Disallow unnecessary usage of Ember's `get` function | | ||
| | [no-get](./docs/rules/no-get.md) | Require ES5 getters instead of Ember's `get` / `getProperties` functions | | ||
| :white_check_mark: | [no-global-jquery](./docs/rules/no-global-jquery.md) | Prevents usage of global jQuery object | | ||
@@ -133,2 +132,3 @@ | | [no-jquery](./docs/rules/no-jquery.md) | Disallow any usage of jQuery | | ||
| :white_check_mark: | [avoid-leaking-state-in-ember-objects](./docs/rules/avoid-leaking-state-in-ember-objects.md) | Avoids state leakage | | ||
| | [computed-property-getters](./docs/rules/computed-property-getters.md) | Enforce the consistent use of getters in computed properties | | ||
@@ -162,2 +162,3 @@ | ||
| [local-modules](./docs/rules/local-modules.md) | [new-module-imports](./docs/rules/new-module-imports.md) | | ||
| [no-get-properties](./docs/rules/no-get-properties.md) | [no-get](./docs/rules/no-get.md) | | ||
@@ -164,0 +165,0 @@ <!--RULES_TABLE_END--> |
191908
56
3855
202