1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 'use strict';
- var $ = require('../internals/export');
- var globalThis = require('../internals/global-this');
- 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 = globalThis.self !== globalThis;
-
- // `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(globalThis, '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(globalThis, 'self', {
- get: function self() {
- return globalThis;
- },
- set: function self(value) {
- if (this !== globalThis) throw new $TypeError('Illegal invocation');
- defineProperty(globalThis, 'self', {
- value: value,
- writable: true,
- configurable: true,
- enumerable: true
- });
- },
- configurable: true,
- enumerable: true
- });
- }
- } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {
- self: globalThis
- });
- } catch (error) { /* empty */ }
|