1.0.0 • Published 6 years ago

inflexible v1.0.0

Weekly downloads
6
License
MIT
Repository
github
Last release
6 years ago

inflexible

Private properties and immutability for JavaScript objects

Installation

npm install --save inflexible

Usage

const Inflexible = require('inflexible')

const hidden = {
  name: Symbol('name'),
  age: Symbol('age')
}

class Person extends Inflexible {
  constructor(params) {
    super(params, hidden)
  }

  static build (name, age) {
    return new Schema({
      [hidden.name]: name,
      [hidden.age]: age
    })
  }

  get name () {
    return this[hidden.name]
  }

  withName (name) {
    return clone({ [hidden.name]: name })
  }

  get age () {
    return this[hidden.age]
  }

  withAge (age) {
    return clone({ [hidden.age]: age })
  }
}

License

MIT