UNPKG

angular2-json-schema-form

Version:
288 lines 9.52 kB
"use strict"; var toPromise_1 = require("rxjs/operator/toPromise"); function _executeValidators(control, validators, invert) { if (invert === void 0) { invert = false; } return validators.map(function (validator) { return validator(control, invert); }); } exports._executeValidators = _executeValidators; function _executeAsyncValidators(control, validators, invert) { if (invert === void 0) { invert = false; } return validators.map(function (v) { return v(control, invert); }); } exports._executeAsyncValidators = _executeAsyncValidators; function _mergeObjects() { var object = []; for (var _i = 0; _i < arguments.length; _i++) { object[_i] = arguments[_i]; } var mergedObject = {}; for (var i = 0, l = arguments.length; i < l; i++) { var currentObject = arguments[i]; if (isObject(currentObject)) { for (var _a = 0, _b = Object.keys(currentObject); _a < _b.length; _a++) { var key = _b[_a]; var currentValue = currentObject[key]; var mergedValue = mergedObject[key]; if (isDefined(mergedValue)) { if (key === 'not' && isBoolean(mergedValue, 'strict') && isBoolean(currentValue, 'strict')) { mergedObject[key] = xor(mergedValue, currentValue); } else if (getType(mergedValue) === 'object' && getType(currentValue) === 'object') { mergedObject[key] = _mergeObjects(mergedValue, currentValue); } else { mergedObject[key] = currentValue; } } else { mergedObject[key] = currentValue; } } } } return mergedObject; } exports._mergeObjects = _mergeObjects; function _mergeErrors(arrayOfErrors) { var mergedErrors = _mergeObjects.apply(null, arrayOfErrors); return isEmpty(mergedErrors) ? null : mergedErrors; } exports._mergeErrors = _mergeErrors; function isDefined(value) { return value !== undefined && value !== null; } exports.isDefined = isDefined; function hasValue(value) { return value !== undefined && value !== null && value !== ''; } exports.hasValue = hasValue; function isEmpty(value) { if (isArray(value)) return !value.length; if (isObject(value)) return !Object.keys(value).length; return value === undefined || value === null || value === ''; } exports.isEmpty = isEmpty; function isString(value) { return typeof value === 'string'; } exports.isString = isString; function isNumber(value, strict) { if (strict === void 0) { strict = false; } if (strict && typeof value !== 'number') return false; return !isNaN(value) && value !== value / 0; } exports.isNumber = isNumber; function isInteger(value, strict) { if (strict === void 0) { strict = false; } if (strict && typeof value !== 'number') return false; return !isNaN(value) && value !== value / 0 && value % 1 === 0; } exports.isInteger = isInteger; function isBoolean(value, option) { if (option === void 0) { option = null; } if (option === 'strict') return value === true || value === false; if (option === true) return value === true || value === 1 || value === 'true' || value === '1'; if (option === false) return value === false || value === 0 || value === 'false' || value === '0'; return value === true || value === 1 || value === 'true' || value === '1' || value === false || value === 0 || value === 'false' || value === '0'; } exports.isBoolean = isBoolean; function isFunction(item) { return typeof item === 'function'; } exports.isFunction = isFunction; function isObject(item) { return item !== null && typeof item === 'object' && Object.prototype.toString.call(item) === '[object Object]'; } exports.isObject = isObject; function isArray(item) { return Array.isArray(item) || Object.prototype.toString.call(item) === '[object Array]'; } exports.isArray = isArray; function isMap(item) { return typeof item === 'object' && Object.prototype.toString.call(item) === '[object Map]'; } exports.isMap = isMap; function isSet(item) { return typeof item === 'object' && Object.prototype.toString.call(item) === '[object Set]'; } exports.isSet = isSet; function getType(value, strict) { if (strict === void 0) { strict = false; } if (!isDefined(value)) return 'null'; if (isArray(value)) return 'array'; if (isObject(value)) return 'object'; if (isBoolean(value, 'strict')) return 'boolean'; if (isInteger(value, strict)) return 'integer'; if (isNumber(value, strict)) return 'number'; if (isString(value)) return 'string'; return null; } exports.getType = getType; function isType(value, type) { switch (type) { case 'string': return isString(value); case 'number': return isNumber(value); case 'integer': return isInteger(value); case 'boolean': return isBoolean(value); case 'null': return !hasValue(value); default: console.error('isType error: "' + type + '" is not a recognized type.'); return null; } } exports.isType = isType; function isPrimitive(value) { return (isString(value) || isNumber(value) || isBoolean(value, 'strict') || value === null); } exports.isPrimitive = isPrimitive; function toJavaScriptType(value, type, checkIntegers) { if (checkIntegers === void 0) { checkIntegers = false; } if (!isDefined(value)) return null; if (isString(type)) type = [type]; if (checkIntegers && inArray('integer', type)) { if (isInteger(value, 'strict')) return value; if (isInteger(value)) return parseInt(value, 10); } if (inArray('number', type) || (!checkIntegers && inArray('integer', type))) { if (isNumber(value, 'strict')) return value; if (isNumber(value)) return parseFloat(value); } if (inArray('string', type)) { if (isString(value)) return value; } if (inArray('boolean', type)) { if (isBoolean(value, true)) return true; if (isBoolean(value, false)) return false; } return null; } exports.toJavaScriptType = toJavaScriptType; function toSchemaType(value, types) { if (!isArray(types)) types = [types]; if (types.indexOf('null') !== -1 && !hasValue(value)) { return null; } if (types.indexOf('boolean') !== -1 && !isBoolean(value, 'strict')) { return value; } if (types.indexOf('integer') !== -1) { var testValue = toJavaScriptType(value, 'integer'); if (testValue !== null) return +testValue; } if (types.indexOf('number') !== -1) { var testValue = toJavaScriptType(value, 'number'); if (testValue !== null) return +testValue; } if ((isString(value) || isNumber(value, 'strict')) && types.indexOf('string') !== -1) { return toJavaScriptType(value, 'string'); } if (types.indexOf('boolean') !== -1 && isBoolean(value)) { return toJavaScriptType(value, 'boolean'); } if (types.indexOf('string') !== -1) { if (value === null) return ''; var testValue = toJavaScriptType(value, 'string'); if (testValue !== null) return testValue; } if ((types.indexOf('number') !== -1 || types.indexOf('integer') !== -1)) { if (value === true) return 1; if (value === false || value === null || value === '') return 0; } if (types.indexOf('number') !== -1) { var testValue = parseFloat(value); if (!!testValue) return testValue; } if (types.indexOf('integer') !== -1) { var testValue = parseInt(value, 10); if (!!testValue) return testValue; } if (types.indexOf('boolean') !== -1) { return !!value; } if ((types.indexOf('number') !== -1 || types.indexOf('integer') !== -1) && types.indexOf('null') === -1) { return 0; } } exports.toSchemaType = toSchemaType; function isPromise(object) { return !!object && typeof object.then === 'function'; } exports.isPromise = isPromise; function _convertToPromise(object) { return isPromise(object) ? object : toPromise_1.toPromise.call(object); } exports._convertToPromise = _convertToPromise; function inArray(item, array, allIn) { if (allIn === void 0) { allIn = false; } if (!isDefined(item) || !isArray(array)) return false; if (isArray(item)) { for (var _i = 0, item_1 = item; _i < item_1.length; _i++) { var subItem = item_1[_i]; if (xor(array.indexOf(subItem) !== -1, allIn)) return !allIn; } return allIn; } else { return array.indexOf(item) !== -1; } } exports.inArray = inArray; function xor(value1, value2) { return (!!value1 && !value2) || (!value1 && !!value2); } exports.xor = xor; //# sourceMappingURL=validator.functions.js.map