Sha256: f403d18125833b976762c35628a6bad184bbc1585e1b1026fec493e0271a12a4

Contents?: true

Size: 1.19 KB

Versions: 243

Compression:

Stored size: 1.19 KB

Contents

'use strict';

var GetIntrinsic = require('get-intrinsic');

var $gOPD = require('gopd');
var $TypeError = GetIntrinsic('%TypeError%');

var callBound = require('call-bind/callBound');

var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');

var has = require('has');

var IsArray = require('./IsArray');
var IsPropertyKey = require('./IsPropertyKey');
var IsRegExp = require('./IsRegExp');
var ToPropertyDescriptor = require('./ToPropertyDescriptor');
var Type = require('./Type');

// https://262.ecma-international.org/6.0/#sec-ordinarygetownproperty

module.exports = function OrdinaryGetOwnProperty(O, P) {
	if (Type(O) !== 'Object') {
		throw new $TypeError('Assertion failed: O must be an Object');
	}
	if (!IsPropertyKey(P)) {
		throw new $TypeError('Assertion failed: P must be a Property Key');
	}
	if (!has(O, P)) {
		return void 0;
	}
	if (!$gOPD) {
		// ES3 / IE 8 fallback
		var arrayLength = IsArray(O) && P === 'length';
		var regexLastIndex = IsRegExp(O) && P === 'lastIndex';
		return {
			'[[Configurable]]': !(arrayLength || regexLastIndex),
			'[[Enumerable]]': $isEnumerable(O, P),
			'[[Value]]': O[P],
			'[[Writable]]': true
		};
	}
	return ToPropertyDescriptor($gOPD(O, P));
};

Version data entries

243 entries across 27 versions & 2 rubygems

Version Path
decidim-0.26.8 packages/eslint-config/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js
decidim-0.26.8 packages/eslint-config/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js
decidim-0.26.8 packages/eslint-config/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js