'use strict'; 
 | 
var DESCRIPTORS = require('../internals/descriptors'); 
 | 
var isArray = require('../internals/is-array'); 
 | 
  
 | 
var $TypeError = TypeError; 
 | 
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe 
 | 
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 
 | 
  
 | 
// Safari < 13 does not throw an error in this case 
 | 
var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () { 
 | 
  // makes no sense without proper strict mode support 
 | 
  if (this !== undefined) return true; 
 | 
  try { 
 | 
    // eslint-disable-next-line es/no-object-defineproperty -- safe 
 | 
    Object.defineProperty([], 'length', { writable: false }).length = 1; 
 | 
  } catch (error) { 
 | 
    return error instanceof TypeError; 
 | 
  } 
 | 
}(); 
 | 
  
 | 
module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { 
 | 
  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) { 
 | 
    throw new $TypeError('Cannot set read only .length'); 
 | 
  } return O.length = length; 
 | 
} : function (O, length) { 
 | 
  return O.length = length; 
 | 
}; 
 |