Sha256: 6c332fef190d693ebe7af0e9cfbd58bb4bbf2d6bf9877c1ddab4705f8a2f302c

Contents?: true

Size: 1.7 KB

Versions: 65

Compression:

Stored size: 1.7 KB

Contents

'use strict';

/* eslint complexity: [2, 17], max-statements: [2, 33] */
module.exports = function hasSymbols() {
	if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
	if (typeof Symbol.iterator === 'symbol') { return true; }

	var obj = {};
	var sym = Symbol('test');
	var symObj = Object(sym);
	if (typeof sym === 'string') { return false; }

	if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
	if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }

	// temp disabled per https://github.com/ljharb/object.assign/issues/17
	// if (sym instanceof Symbol) { return false; }
	// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
	// if (!(symObj instanceof Symbol)) { return false; }

	// if (typeof Symbol.prototype.toString !== 'function') { return false; }
	// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }

	var symVal = 42;
	obj[sym] = symVal;
	for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax
	if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }

	if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }

	var syms = Object.getOwnPropertySymbols(obj);
	if (syms.length !== 1 || syms[0] !== sym) { return false; }

	if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }

	if (typeof Object.getOwnPropertyDescriptor === 'function') {
		var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
		if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
	}

	return true;
};

Version data entries

65 entries across 65 versions & 7 rubygems

Version Path
disco_app-0.18.0 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.18.2 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.16.1 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.15.2 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.18.4 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.18.1 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.14.0 test/dummy/node_modules/has-symbols/shams.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/has-symbols/shams.js
condenser-0.0.8 lib/condenser/processors/node_modules/has-symbols/shams.js
learn_create-0.0.22 lib/templates/javascript_lab_template/node_modules/has-symbols/shams.js
jester-data-8.0.0 node_modules/has-symbols/shams.js
ezii-os-5.2.1 node_modules/has-symbols/shams.js
ezii-os-2.0.1 node_modules/has-symbols/shams.js
ezii-os-1.1.0 node_modules/has-symbols/shams.js
ezii-os-1.0.0 node_modules/has-symbols/shams.js
condenser-0.0.7 lib/condenser/processors/node_modules/has-symbols/shams.js
ezii-os-0.0.0.1.0 node_modules/has-symbols/shams.js
ezii-os-0.0.0.0.1 node_modules/has-symbols/shams.js
govuk_publishing_components-18.0.0 node_modules/has-symbols/shams.js