Sha256: 4cdb9ccd20dc4ceb0709328cc68da842a334bafbf501543922c67e15a99901d4

Contents?: true

Size: 1.24 KB

Versions: 60

Compression:

Stored size: 1.24 KB

Contents

'use strict';

var keys = require('object-keys');
var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';

var toStr = Object.prototype.toString;
var concat = Array.prototype.concat;
var defineDataProperty = require('define-data-property');

var isFunction = function (fn) {
	return typeof fn === 'function' && toStr.call(fn) === '[object Function]';
};

var supportsDescriptors = require('has-property-descriptors')();

var defineProperty = function (object, name, value, predicate) {
	if (name in object) {
		if (predicate === true) {
			if (object[name] === value) {
				return;
			}
		} else if (!isFunction(predicate) || !predicate()) {
			return;
		}
	}

	if (supportsDescriptors) {
		defineDataProperty(object, name, value, true);
	} else {
		defineDataProperty(object, name, value);
	}
};

var defineProperties = function (object, map) {
	var predicates = arguments.length > 2 ? arguments[2] : {};
	var props = keys(map);
	if (hasSymbols) {
		props = concat.call(props, Object.getOwnPropertySymbols(map));
	}
	for (var i = 0; i < props.length; i += 1) {
		defineProperty(object, props[i], map[props[i]], predicates[props[i]]);
	}
};

defineProperties.supportsDescriptors = !!supportsDescriptors;

module.exports = defineProperties;

Version data entries

60 entries across 60 versions & 2 rubygems

Version Path
immosquare-cleaner-0.1.68 node_modules/define-properties/index.js
immosquare-cleaner-0.1.67 node_modules/define-properties/index.js
immosquare-cleaner-0.1.66 node_modules/define-properties/index.js
immosquare-cleaner-0.1.65 node_modules/define-properties/index.js
immosquare-cleaner-0.1.64 node_modules/define-properties/index.js
immosquare-cleaner-0.1.63 node_modules/define-properties/index.js
rapid_stack-0.2.0 templates/frontend/node_modules/define-properties/index.js
rapid_stack-0.1.1 templates/FrontEnd/node_modules/define-properties/index.js
rapid_stack-0.1.0 templates/FrontEnd/node_modules/define-properties/index.js
immosquare-cleaner-0.1.62 node_modules/define-properties/index.js
immosquare-cleaner-0.1.61 node_modules/define-properties/index.js
immosquare-cleaner-0.1.60 node_modules/define-properties/index.js
immosquare-cleaner-0.1.59 node_modules/define-properties/index.js
immosquare-cleaner-0.1.58 node_modules/define-properties/index.js
immosquare-cleaner-0.1.57 node_modules/define-properties/index.js
immosquare-cleaner-0.1.56 node_modules/define-properties/index.js
immosquare-cleaner-0.1.55 node_modules/define-properties/index.js
immosquare-cleaner-0.1.54 node_modules/define-properties/index.js
immosquare-cleaner-0.1.53 node_modules/define-properties/index.js
immosquare-cleaner-0.1.52 node_modules/define-properties/index.js