You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							41 lines
						
					
					
						
							1.4 KiB
						
					
					
				| 'use strict'; | |
| var $ = require('../internals/export'); | |
| var global = require('../internals/global'); | |
| var defineBuiltInAccessor = require('../internals/define-built-in-accessor'); | |
| var DESCRIPTORS = require('../internals/descriptors'); | |
| 
 | |
| var $TypeError = TypeError; | |
| // eslint-disable-next-line es/no-object-defineproperty -- safe | |
| var defineProperty = Object.defineProperty; | |
| var INCORRECT_VALUE = global.self !== global; | |
| 
 | |
| // `self` getter | |
| // https://html.spec.whatwg.org/multipage/window-object.html#dom-self | |
| try { | |
|   if (DESCRIPTORS) { | |
|     // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe | |
|     var descriptor = Object.getOwnPropertyDescriptor(global, 'self'); | |
|     // some engines have `self`, but with incorrect descriptor | |
|     // https://github.com/denoland/deno/issues/15765 | |
|     if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) { | |
|       defineBuiltInAccessor(global, 'self', { | |
|         get: function self() { | |
|           return global; | |
|         }, | |
|         set: function self(value) { | |
|           if (this !== global) throw new $TypeError('Illegal invocation'); | |
|           defineProperty(global, 'self', { | |
|             value: value, | |
|             writable: true, | |
|             configurable: true, | |
|             enumerable: true | |
|           }); | |
|         }, | |
|         configurable: true, | |
|         enumerable: true | |
|       }); | |
|     } | |
|   } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, { | |
|     self: global | |
|   }); | |
| } catch (error) { /* empty */ }
 |