lib/freeze.js
function freeze(object) {
  if (process.env.NODE_ENV === 'production') {
    return object
  }

  if (process.env.UPDEEP_MODE === 'dangerously_never_freeze') {
    return object
  }

  if (needsFreezing(object)) {
    recur(object)
  }

  return object
}
function freeze(object) {
  if (process.env.NODE_ENV === 'production') {
    return object
  }

  if (process.env.UPDEEP_MODE === 'dangerously_never_freeze') {
    return object
  }

  if (needsFreezing(object)) {
    recur(object)
  }

  return object
}
function freeze ( object ) { if ( process . env . NODE_ENV === 'production' ) { return object } if ( process . env . UPDEEP_MODE === 'dangerously_never_freeze' ) { return object } if ( needsFreezing ( object ) ) { recur ( object ) } return object }
Deeply freeze a plain javascript object.

If `process.env.NODE_ENV === 'production'`, this returns the original object
without freezing.

Or if `process.env.UPDEEP_MODE === 'dangerously_never_freeze'`, this returns the original object
without freezing.

@function
@sig a -> a
@param  {object} object Object to freeze.
@return {object} Frozen object, unless in production, then the same object.
Deeply freeze a plain javascript object .