angular2-json-schema-form
Version:
Angular 2 JSON Schema Form builder
288 lines • 9.52 kB
JavaScript
"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