angular2-json-schema-form
Version:
Angular 2 JSON Schema Form builder
319 lines • 9.84 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, types, strictIntegers) {
if (strictIntegers === void 0) { strictIntegers = true; }
if (!isDefined(value)) {
return null;
}
if (isString(types)) {
types = [types];
}
if (strictIntegers && inArray('integer', types)) {
if (isInteger(value, 'strict')) {
return value;
}
if (isInteger(value)) {
return parseInt(value, 10);
}
}
if (inArray('number', types) || (!strictIntegers && inArray('integer', types))) {
if (isNumber(value, 'strict')) {
return value;
}
if (isNumber(value)) {
return parseFloat(value);
}
}
if (inArray('string', types)) {
if (isString(value)) {
return value;
}
}
if (inArray('boolean', types)) {
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