node_modules/ajv/lib/compile/util.js in trusty-cms-5.0.6 vs node_modules/ajv/lib/compile/util.js in trusty-cms-5.0.7
- old
+ new
@@ -11,12 +11,10 @@
escapeQuotes: escapeQuotes,
equal: require('fast-deep-equal'),
ucs2length: require('./ucs2length'),
varOccurences: varOccurences,
varReplace: varReplace,
- cleanUpCode: cleanUpCode,
- finalCleanUpCode: finalCleanUpCode,
schemaHasRules: schemaHasRules,
schemaHasRulesExcept: schemaHasRulesExcept,
schemaUnknownRules: schemaUnknownRules,
toQuotedString: toQuotedString,
getPathExpr: getPathExpr,
@@ -34,11 +32,11 @@
for (var key in o) to[key] = o[key];
return to;
}
-function checkDataType(dataType, data, negate) {
+function checkDataType(dataType, data, strictNumbers, negate) {
var EQUAL = negate ? ' !== ' : ' === '
, AND = negate ? ' || ' : ' && '
, OK = negate ? '!' : ''
, NOT = negate ? '' : '!';
switch (dataType) {
@@ -47,19 +45,22 @@
case 'object': return '(' + OK + data + AND +
'typeof ' + data + EQUAL + '"object"' + AND +
NOT + 'Array.isArray(' + data + '))';
case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND +
NOT + '(' + data + ' % 1)' +
- AND + data + EQUAL + data + ')';
+ AND + data + EQUAL + data +
+ (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';
+ case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' +
+ (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';
default: return 'typeof ' + data + EQUAL + '"' + dataType + '"';
}
}
-function checkDataTypes(dataTypes, data) {
+function checkDataTypes(dataTypes, data, strictNumbers) {
switch (dataTypes.length) {
- case 1: return checkDataType(dataTypes[0], data, true);
+ case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);
default:
var code = '';
var types = toHash(dataTypes);
if (types.array && types.object) {
code = types.null ? '(': '(!' + data + ' || ';
@@ -68,11 +69,11 @@
delete types.array;
delete types.object;
}
if (types.number) delete types.integer;
for (var t in types)
- code += (code ? ' && ' : '' ) + checkDataType(t, data, true);
+ code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);
return code;
}
}
@@ -134,46 +135,10 @@
expr = expr.replace(/\$/g, '$$$$');
return str.replace(new RegExp(dataVar, 'g'), expr + '$1');
}
-var EMPTY_ELSE = /else\s*{\s*}/g
- , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g
- , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;
-function cleanUpCode(out) {
- return out.replace(EMPTY_ELSE, '')
- .replace(EMPTY_IF_NO_ELSE, '')
- .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');
-}
-
-
-var ERRORS_REGEXP = /[^v.]errors/g
- , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g
- , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g
- , RETURN_VALID = 'return errors === 0;'
- , RETURN_TRUE = 'validate.errors = null; return true;'
- , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/
- , RETURN_DATA_ASYNC = 'return data;'
- , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g
- , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/;
-
-function finalCleanUpCode(out, async) {
- var matches = out.match(ERRORS_REGEXP);
- if (matches && matches.length == 2) {
- out = async
- ? out.replace(REMOVE_ERRORS_ASYNC, '')
- .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)
- : out.replace(REMOVE_ERRORS, '')
- .replace(RETURN_VALID, RETURN_TRUE);
- }
-
- matches = out.match(ROOTDATA_REGEXP);
- if (!matches || matches.length !== 3) return out;
- return out.replace(REMOVE_ROOTDATA, '');
-}
-
-
function schemaHasRules(schema, rules) {
if (typeof schema == 'boolean') return !schema;
for (var key in schema) if (rules[key]) return true;
}
@@ -248,10 +213,10 @@
}
function joinPaths (a, b) {
if (a == '""') return b;
- return (a + ' + ' + b).replace(/' \+ '/g, '');
+ return (a + ' + ' + b).replace(/([^\\])' \+ '/g, '$1');
}
function unescapeFragment(str) {
return unescapeJsonPointer(decodeURIComponent(str));