moltres-utils
Version:
Utils for Moltres apps
71 lines (58 loc) • 1.98 kB
JavaScript
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _curry = _interopRequireDefault(require("../common/curry"));
var _isFunction = _interopRequireDefault(require("../lang/isFunction"));
var _isMap = _interopRequireDefault(require("../lang/isMap"));
var _isNil = _interopRequireDefault(require("../lang/isNil"));
var _isUndefined = _interopRequireDefault(require("../lang/isUndefined"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Returns whether or not an object has an own property with the specified name
*
* If prop is a function then it is executed against value as a selector.
* If prop is undefined then value will be checked for truthiness.
*
* @function
* @since v0.0.3
* @category data
* @sig s -> {s: x} -> Boolean
* @param {String | Function} prop The name of the property to check for.
* @param {Object | Map} value The value to query.
* @returns {Boolean} Whether the property exists.
* @example
*
* hasProp('name', {name: 'philipp'}) //=> true
* hasProp('name', {}) //=> false
*
* hasProp(undefined, {}) //=> true
* hasProp(undefined, null) //=> false
*
* hasProp((value) => value.name, { name: 'eslam'}) //=> true
* hasProp((value) => value.birthday, { name: 'raees'}) //=> false
*/
var hasProp = (0, _curry.default)(function (prop, value) {
if ((0, _isUndefined.default)(prop)) {
return !!value;
}
if ((0, _isFunction.default)(prop)) {
try {
return !!prop(value);
} catch (error) {
return false;
}
}
if ((0, _isNil.default)(value)) {
return false;
}
if ((0, _isMap.default)(value)) {
return value.has(prop);
}
return Object.prototype.hasOwnProperty.call(value, prop);
});
var _default = hasProp;
exports.default = _default;
//# sourceMappingURL=hasProp.js.map
;