Immutable JS

Implementation example

by Guillaume Seguin

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"></script>

Babel + JSX

console.clear();

var apiUser = Immutable.Record({
  email: undefined,
  username: undefined,
  firstName: undefined,
  lastName: undefined,
  fullName: undefined,
  language: 'fr',
  timezone: 'Europe/Paris'
});

class User extends apiUser {
    constructor(args) {
        super({
        	...args, 
          firstName: args.name.first,
          lastName: args.name.last,
          fullName: args.name.first + ' ' + args.name.last
        });
    }
}

var myUser = new User({
  id: '57aaf4522152c67849d2563d',
  email: '[email protected]',
  username: 'fgrubber',
  name: {
    first: 'Franz',
    last: 'Grubber'
  },
  fullname: 'Franz Grubber',
  language: 'fr',
  timezone: 'Europe/Paris',
  oathKey: '9c61fb631e2cb9de297085851e8a9767455a0bf603afa6a78df0b8148f674feb4d3695ed0c19d8d7116479b1fc11e4b870a4cd379289342d88cdba9372ffb8771e06678d65955fd4c709efad704dfe409737bfe2e44d8f63aa9fe912dcfc7b678fee27071d73ac981b7b4dfdedcef16579a4f34b17c453e7134ff0befbea86c4d78369f898cae729d4c668603e0ca33b2f46ca2e65a130531985ddd1edc11fbf348783f21f5981cb4af71bdad7e5c60a474e9f26b08644d1c7c1542cd7cf9980138a905854df2d5b71deefbf56812b9098475d9a2a71e01d715f3a0929618eec1a5c90f025c590ec9828fc452ba0bdc3ff5d49cb624de63045780ac4f7a9089f',
  api: {
    revokedTokens: [
      'fa1efcc7e5a17a460c841dea51e760139c08aef8'
    ],
    tokens: []
  },
  applications: [{
    id: '87aaa3ff45e4a26f49fd3eb4',
    permissions: [
      'read',
      'write'
    ]
  }]
});

console.log(myUser.toJS());
console.log(myUser.fullName);