| '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; | 
| }; |