| 'use strict'; | 
|   | 
| var GetIntrinsic = require('get-intrinsic'); | 
|   | 
| var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); | 
|   | 
| var hasPropertyDescriptors = function hasPropertyDescriptors() { | 
|     if ($defineProperty) { | 
|         try { | 
|             $defineProperty({}, 'a', { value: 1 }); | 
|             return true; | 
|         } catch (e) { | 
|             // IE 8 has a broken defineProperty | 
|             return false; | 
|         } | 
|     } | 
|     return false; | 
| }; | 
|   | 
| hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { | 
|     // node v0.6 has a bug where array lengths can be Set but not Defined | 
|     if (!hasPropertyDescriptors()) { | 
|         return null; | 
|     } | 
|     try { | 
|         return $defineProperty([], 'length', { value: 1 }).length !== 1; | 
|     } catch (e) { | 
|         // In Firefox 4-22, defining length on an array throws an exception. | 
|         return true; | 
|     } | 
| }; | 
|   | 
| module.exports = hasPropertyDescriptors; |