idx-to-optional-chaining
idx-to-optional-chaining copied to clipboard
JSCodeShift codemod that transforms usage of idx to the draft optional chaining standard.
idx to optional chaining 
Facebook's idx was a useful helper prior to the optional chaining maturing as a standard because it played nicely with Flow. But now optional chaining is stage 4 and has Flow/Typescript support. This codemod will convert transform most usages of idx.
Usage
foo@bar:~$ git clone [email protected]:cdlewis/idx-to-optional-chaining.git
foo@bar:~$ npm install -g jscodeshift
foo@bar:~$ jscodeshift -t idx-to-optional-chaining/index.js file-to-transform.js
Example
Before:
import idx from "idx";
let a = idx(a, _ => _.b);
let b = idx(a, _ => _.b.c);
let c = idx(a, _ => _.b.c.d);
let d = idx(a, _ => _[0][1][2]);
let e = idx(a, _ => _.b[0].c[variable]);
After:
let a = a?.b
let b = a?.b?.c
let c = a?.b?.c?.d
let d = a?.0?.[1]?.[2]
let e = a?.b?.[0]?.c?.[variable]