1.0.3 • Published 4 years ago

farewell-immutablejs v1.0.3

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

Farewell ImmutableJS

npm.io npm.io

Codemods to migrate Immutable.js to ES6.

Never heard of codemods? Here is a quick summary from facebook/codemod:

codemod is a tool/library to assist you with large-scale codebase refactors that can be partially automated but still require human oversight and occasional intervention.

How to use

# installing globally
npm install -g farewell-immutablejs
farewell-immutablejs

# or using npx
npx farewell-immutablejs

Use the --help flag or refer to the help file.

Features

Drop immutable import

- import { fromJS } from 'immutable';

Remove .fromJS()

- const a = fromJS({ value: 1 });
+ const a = { value: 1 };

Remove .toJS()

- const js = state.toJS();
+ const js = state;

Replace .get()

// without default value
- const a = state.get('value');
+ const a = state?.value;

// with default value
- const a = state.get('value', 10);
+ const a = state?.value ?? 10;

// recursive gets are ignored
// for cases like this, run twice
{
- value: state.get('a').get('b'),
+ value: state.get('a')?.b,
}

Replace .getIn()

// without default value
- const a = state.getIn(['b', 'c']);
+ const a = state?.b?.c;

// with default value
- const a = state.getIn(['b', 'c'], 10);
+ const a = state?.b?.c ?? 10;

Replace .set()

// with a literal key
- state.set('a', 10);
+ state.a = 10;
// with a variable key
- state.set(key, 10);
+ state[key] = 10;

Replace .setIn()

- state.setIn(['a', 'b', c, 'd'], 10);
+ state.a.b.c.d = 10;

Replace .merge()

- const newState = state.merge({ a: 10 });
+ const newState = { ...state, a: 10 };

Unsupported methods

The methods below have either small cost-benefit to implement a codemod or are too difficult to implement given name collisions.

  • contains
  • includes
  • some
  • find
  • withMutations
  • removeIn
  • sortBy
  • remove
  • first
  • last
  • add
  • mergeIn
  • mergeDeep
  • update
  • updateIn
  • map
  • filter
  • reduce
1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago