https://github.com/ember-codemods/es5-getter-ember-codemod
https://github.com/ember-codemods/es5-getter-ember-codemod
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/ember-codemods/es5-getter-ember-codemod
- Owner: ember-codemods
- Created: 2018-02-06T16:28:44.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-04-23T14:22:02.000Z (about 6 years ago)
- Last Synced: 2025-03-24T20:21:58.843Z (about 1 year ago)
- Language: JavaScript
- Size: 153 KB
- Stars: 34
- Watchers: 1
- Forks: 14
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
es5-getter-ember-codemod
==============================================================================
[](https://travis-ci.org/ember-codemods/es5-getter-ember-codemod)
This codemod is intended to automatically convert your usage of `get`, and
`getProperties` to use traditional object dot notation as proposed by
[emberjs/rfcs#281](https://github.com/emberjs/rfcs/blob/master/text/0281-es5-getters.md).
Special thanks to @rwjblue, @iezer, and @tbieniek for reviewing my original
test cases.
Installation
------------------------------------------------------------------------------
`es5-getter-ember-codemod` itself doesn't need to be installed but you can run it using:
```
npx github:ember-codemods/es5-getter-ember-codemod ...
```
Usage
------------------------------------------------------------------------------
You can clone/download this repository or just run the codemods using the command
shown in the following example:
```
npx github:ember-codemods/es5-getter-ember-codemod es5-getter-ember-codemod app/**/*.js
```
Transforms
------------------------------------------------------------------------------
### foo.get('bar') -> foo.bar
Transforms `get()` method calls on objects (only for `this` and variables
called `controller` or `route`).
**Before:**
```js
this.get('fullName');
controller.get('fullName');
model.get('fullName');
route.get('fullName');
```
**After:**
```js
this.fullName;
controller.fullName;
model.get('fullName');
route.fullName;
```
### Ember.get(foo, 'bar') -> foo.bar
Transforms `Ember.get()` (or `get()` from `@ember/object`) calls (only
for `this` as first argument).
**Before:**
```js
import Ember from 'ember';
import { get } from '@ember/object'
let foo = get(this, 'foo');
let foo = get(this, 'foo.bar');
let foo = Ember.get(this, 'foo');
let foo = Ember.get(this, 'foo.bar');
let obj = { bar: 'baz' };
let bar = get(obj, 'bar');
```
**After:**
```js
import Ember from 'ember';
import { get } from '@ember/object'
let foo = this.foo;
let foo = get(this, 'foo.bar');
let foo = this.foo;
let foo = Ember.get(this, 'foo.bar');
let obj = { bar: 'baz' };
let bar = get(obj, 'bar');
```
### let { bar, baz } = foo.getProperties('bar', 'baz') -> let { bar, baz } = this
Transforms `getProperties()` method calls on objects (only for
destructuring operations and not for nested paths).
**Before:**
```js
let { foo, bar, baz } = this.getProperties('foo', 'bar', 'baz');
let { foo, barBaz } = this.getProperties('foo', 'bar.baz');
```
**After:**
```js
let { foo, bar, baz } = this;
let { foo, barBaz } = this.getProperties('foo', 'bar.baz');
```
Enforcement
------------------------------------------------------------------------------
The [ember/no-get](https://github.com/ember-cli/eslint-plugin-ember/blob/master/docs/rules/no-get.md) lint rule is available for enforcing this.