@hpcc-js/marshaller 2.23.105 → 2.23.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es6.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Result, Workunit, createConnection, Query } from '@hpcc-js/comms';
2
2
  export { hookSend } from '@hpcc-js/comms';
3
3
  import { PropertyExt, publish, tsvParse, csvParse, nest, min, max, mean, median, variance, deviation, sum, Utility, descending, ascending, ToggleButton, Spacer, EntityRectList, Database, publishProxy, Widget, select, Button, SelectionButton, SelectionBar } from '@hpcc-js/common';
4
- import { hashSum, update, isArray as isArray$1, debounce, AsyncOrderedQueue, compare, find, scopedLogger, classID2Meta } from '@hpcc-js/util';
4
+ import { hashSum, update, isArray, debounce, AsyncOrderedQueue, compare, find, scopedLogger, classID2Meta } from '@hpcc-js/util';
5
5
  import { Area, Bubble, Bar, Column, Contour, HexBin, Line, Pie, Radar, RadialBar, Scatter, Step, WordCloud } from '@hpcc-js/chart';
6
6
  import { Table, DatasourceTable } from '@hpcc-js/dgrid';
7
7
  import { FieldForm } from '@hpcc-js/form';
@@ -13,8 +13,8 @@ import { JSONEditor, JSEditor } from '@hpcc-js/codemirror';
13
13
  import { PropertyEditor } from '@hpcc-js/other';
14
14
 
15
15
  var PKG_NAME = "@hpcc-js/marshaller";
16
- var PKG_VERSION = "2.23.105";
17
- var BUILD_VERSION = "2.99.0";
16
+ var PKG_VERSION = "2.23.109";
17
+ var BUILD_VERSION = "2.101.2";
18
18
 
19
19
  /*! *****************************************************************************
20
20
  Copyright (c) Microsoft Corporation.
@@ -665,7 +665,7 @@ var Form = /** @class */ (function (_super) {
665
665
  Form.prototype._class += " Form";
666
666
 
667
667
  function fieldType(field) {
668
- if (isArray$1(field)) {
668
+ if (isArray(field)) {
669
669
  return "dataset";
670
670
  }
671
671
  var type = typeof field;
@@ -2326,7 +2326,7 @@ var DSPicker = /** @class */ (function (_super) {
2326
2326
  DSPicker.prototype._class += " DSPicker";
2327
2327
 
2328
2328
  var PKG_NAME$1 = "@hpcc-js/ddl-shim";
2329
- var PKG_VERSION$1 = "2.17.23";
2329
+ var PKG_VERSION$1 = "2.17.25";
2330
2330
 
2331
2331
  function isWorkunitDatasource(ref) {
2332
2332
  return ref.WUID !== undefined;
@@ -4796,21 +4796,18 @@ Object.defineProperty(exports, '__esModule', { value: true });
4796
4796
 
4797
4797
  unwrapExports(uri_all);
4798
4798
 
4799
- var isArray = Array.isArray;
4800
- var keyList = Object.keys;
4801
- var hasProp = Object.prototype.hasOwnProperty;
4799
+ // do not edit .js files directly - edit src/index.jst
4800
+
4801
+
4802
4802
 
4803
4803
  var fastDeepEqual = function equal(a, b) {
4804
4804
  if (a === b) return true;
4805
4805
 
4806
4806
  if (a && b && typeof a == 'object' && typeof b == 'object') {
4807
- var arrA = isArray(a)
4808
- , arrB = isArray(b)
4809
- , i
4810
- , length
4811
- , key;
4807
+ if (a.constructor !== b.constructor) return false;
4812
4808
 
4813
- if (arrA && arrB) {
4809
+ var length, i, keys;
4810
+ if (Array.isArray(a)) {
4814
4811
  length = a.length;
4815
4812
  if (length != b.length) return false;
4816
4813
  for (i = length; i-- !== 0;)
@@ -4818,35 +4815,29 @@ var fastDeepEqual = function equal(a, b) {
4818
4815
  return true;
4819
4816
  }
4820
4817
 
4821
- if (arrA != arrB) return false;
4822
4818
 
4823
- var dateA = a instanceof Date
4824
- , dateB = b instanceof Date;
4825
- if (dateA != dateB) return false;
4826
- if (dateA && dateB) return a.getTime() == b.getTime();
4827
4819
 
4828
- var regexpA = a instanceof RegExp
4829
- , regexpB = b instanceof RegExp;
4830
- if (regexpA != regexpB) return false;
4831
- if (regexpA && regexpB) return a.toString() == b.toString();
4820
+ if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
4821
+ if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
4822
+ if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
4832
4823
 
4833
- var keys = keyList(a);
4824
+ keys = Object.keys(a);
4834
4825
  length = keys.length;
4835
-
4836
- if (length !== keyList(b).length)
4837
- return false;
4826
+ if (length !== Object.keys(b).length) return false;
4838
4827
 
4839
4828
  for (i = length; i-- !== 0;)
4840
- if (!hasProp.call(b, keys[i])) return false;
4829
+ if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
4841
4830
 
4842
4831
  for (i = length; i-- !== 0;) {
4843
- key = keys[i];
4832
+ var key = keys[i];
4833
+
4844
4834
  if (!equal(a[key], b[key])) return false;
4845
4835
  }
4846
4836
 
4847
4837
  return true;
4848
4838
  }
4849
4839
 
4840
+ // true if both NaN, false otherwise
4850
4841
  return a!==a && b!==b;
4851
4842
  };
4852
4843
 
@@ -4881,8 +4872,6 @@ var util = {
4881
4872
  ucs2length: ucs2length,
4882
4873
  varOccurences: varOccurences,
4883
4874
  varReplace: varReplace,
4884
- cleanUpCode: cleanUpCode,
4885
- finalCleanUpCode: finalCleanUpCode,
4886
4875
  schemaHasRules: schemaHasRules,
4887
4876
  schemaHasRulesExcept: schemaHasRulesExcept,
4888
4877
  schemaUnknownRules: schemaUnknownRules,
@@ -4904,7 +4893,7 @@ function copy(o, to) {
4904
4893
  }
4905
4894
 
4906
4895
 
4907
- function checkDataType(dataType, data, negate) {
4896
+ function checkDataType(dataType, data, strictNumbers, negate) {
4908
4897
  var EQUAL = negate ? ' !== ' : ' === '
4909
4898
  , AND = negate ? ' || ' : ' && '
4910
4899
  , OK = negate ? '!' : ''
@@ -4917,15 +4906,18 @@ function checkDataType(dataType, data, negate) {
4917
4906
  NOT + 'Array.isArray(' + data + '))';
4918
4907
  case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND +
4919
4908
  NOT + '(' + data + ' % 1)' +
4920
- AND + data + EQUAL + data + ')';
4909
+ AND + data + EQUAL + data +
4910
+ (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';
4911
+ case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' +
4912
+ (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';
4921
4913
  default: return 'typeof ' + data + EQUAL + '"' + dataType + '"';
4922
4914
  }
4923
4915
  }
4924
4916
 
4925
4917
 
4926
- function checkDataTypes(dataTypes, data) {
4918
+ function checkDataTypes(dataTypes, data, strictNumbers) {
4927
4919
  switch (dataTypes.length) {
4928
- case 1: return checkDataType(dataTypes[0], data, true);
4920
+ case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);
4929
4921
  default:
4930
4922
  var code = '';
4931
4923
  var types = toHash(dataTypes);
@@ -4938,7 +4930,7 @@ function checkDataTypes(dataTypes, data) {
4938
4930
  }
4939
4931
  if (types.number) delete types.integer;
4940
4932
  for (var t in types)
4941
- code += (code ? ' && ' : '' ) + checkDataType(t, data, true);
4933
+ code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);
4942
4934
 
4943
4935
  return code;
4944
4936
  }
@@ -5004,42 +4996,6 @@ function varReplace(str, dataVar, expr) {
5004
4996
  }
5005
4997
 
5006
4998
 
5007
- var EMPTY_ELSE = /else\s*{\s*}/g
5008
- , EMPTY_IF_NO_ELSE = /if\s*\([^)]+\)\s*\{\s*\}(?!\s*else)/g
5009
- , EMPTY_IF_WITH_ELSE = /if\s*\(([^)]+)\)\s*\{\s*\}\s*else(?!\s*if)/g;
5010
- function cleanUpCode(out) {
5011
- return out.replace(EMPTY_ELSE, '')
5012
- .replace(EMPTY_IF_NO_ELSE, '')
5013
- .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');
5014
- }
5015
-
5016
-
5017
- var ERRORS_REGEXP = /[^v.]errors/g
5018
- , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g
5019
- , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g
5020
- , RETURN_VALID = 'return errors === 0;'
5021
- , RETURN_TRUE = 'validate.errors = null; return true;'
5022
- , RETURN_ASYNC = /if \(errors === 0\) return data;\s*else throw new ValidationError\(vErrors\);/
5023
- , RETURN_DATA_ASYNC = 'return data;'
5024
- , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g
5025
- , REMOVE_ROOTDATA = /if \(rootData === undefined\) rootData = data;/;
5026
-
5027
- function finalCleanUpCode(out, async) {
5028
- var matches = out.match(ERRORS_REGEXP);
5029
- if (matches && matches.length == 2) {
5030
- out = async
5031
- ? out.replace(REMOVE_ERRORS_ASYNC, '')
5032
- .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)
5033
- : out.replace(REMOVE_ERRORS, '')
5034
- .replace(RETURN_VALID, RETURN_TRUE);
5035
- }
5036
-
5037
- matches = out.match(ROOTDATA_REGEXP);
5038
- if (!matches || matches.length !== 3) return out;
5039
- return out.replace(REMOVE_ROOTDATA, '');
5040
- }
5041
-
5042
-
5043
4999
  function schemaHasRules(schema, rules) {
5044
5000
  if (typeof schema == 'boolean') return !schema;
5045
5001
  for (var key in schema) if (rules[key]) return true;
@@ -5118,7 +5074,7 @@ function getData($data, lvl, paths) {
5118
5074
 
5119
5075
  function joinPaths (a, b) {
5120
5076
  if (a == '""') return b;
5121
- return (a + ' + ' + b).replace(/' \+ '/g, '');
5077
+ return (a + ' + ' + b).replace(/([^\\])' \+ '/g, '$1');
5122
5078
  }
5123
5079
 
5124
5080
 
@@ -5682,7 +5638,7 @@ var validate = function generate_validate(it, $keyword, $ruleType) {
5682
5638
  it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));
5683
5639
  it.baseId = it.baseId || it.rootId;
5684
5640
  delete it.isTop;
5685
- it.dataPathArr = [undefined];
5641
+ it.dataPathArr = [""];
5686
5642
  if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {
5687
5643
  var $defaultMsg = 'default is ignored in the schema root';
5688
5644
  if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);
@@ -5740,47 +5696,39 @@ var validate = function generate_validate(it, $keyword, $ruleType) {
5740
5696
  var $schemaPath = it.schemaPath + '.type',
5741
5697
  $errSchemaPath = it.errSchemaPath + '/type',
5742
5698
  $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';
5743
- out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { ';
5699
+ out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';
5744
5700
  if ($coerceToTypes) {
5745
5701
  var $dataType = 'dataType' + $lvl,
5746
5702
  $coerced = 'coerced' + $lvl;
5747
- out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';
5703
+ out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';
5748
5704
  if (it.opts.coerceTypes == 'array') {
5749
- out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \'array\'; ';
5705
+ out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';
5750
5706
  }
5751
- out += ' var ' + ($coerced) + ' = undefined; ';
5752
- var $bracesCoercion = '';
5707
+ out += ' if (' + ($coerced) + ' !== undefined) ; ';
5753
5708
  var arr1 = $coerceToTypes;
5754
5709
  if (arr1) {
5755
5710
  var $type, $i = -1,
5756
5711
  l1 = arr1.length - 1;
5757
5712
  while ($i < l1) {
5758
5713
  $type = arr1[$i += 1];
5759
- if ($i) {
5760
- out += ' if (' + ($coerced) + ' === undefined) { ';
5761
- $bracesCoercion += '}';
5762
- }
5763
- if (it.opts.coerceTypes == 'array' && $type != 'array') {
5764
- out += ' if (' + ($dataType) + ' == \'array\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } ';
5765
- }
5766
5714
  if ($type == 'string') {
5767
- out += ' if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; ';
5715
+ out += ' else if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; ';
5768
5716
  } else if ($type == 'number' || $type == 'integer') {
5769
- out += ' if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';
5717
+ out += ' else if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';
5770
5718
  if ($type == 'integer') {
5771
5719
  out += ' && !(' + ($data) + ' % 1)';
5772
5720
  }
5773
5721
  out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';
5774
5722
  } else if ($type == 'boolean') {
5775
- out += ' if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';
5723
+ out += ' else if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';
5776
5724
  } else if ($type == 'null') {
5777
- out += ' if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';
5725
+ out += ' else if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';
5778
5726
  } else if (it.opts.coerceTypes == 'array' && $type == 'array') {
5779
- out += ' if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';
5727
+ out += ' else if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';
5780
5728
  }
5781
5729
  }
5782
5730
  }
5783
- out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { ';
5731
+ out += ' else { ';
5784
5732
  var $$outStack = $$outStack || [];
5785
5733
  $$outStack.push(out);
5786
5734
  out = ''; /* istanbul ignore else */
@@ -5820,7 +5768,7 @@ var validate = function generate_validate(it, $keyword, $ruleType) {
5820
5768
  } else {
5821
5769
  out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
5822
5770
  }
5823
- out += ' } else { ';
5771
+ out += ' } if (' + ($coerced) + ' !== undefined) { ';
5824
5772
  var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
5825
5773
  $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
5826
5774
  out += ' ' + ($data) + ' = ' + ($coerced) + '; ';
@@ -5893,7 +5841,7 @@ var validate = function generate_validate(it, $keyword, $ruleType) {
5893
5841
  $rulesGroup = arr2[i2 += 1];
5894
5842
  if ($shouldUseGroup($rulesGroup)) {
5895
5843
  if ($rulesGroup.type) {
5896
- out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { ';
5844
+ out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';
5897
5845
  }
5898
5846
  if (it.opts.useDefaults) {
5899
5847
  if ($rulesGroup.type == 'object' && it.schema.properties) {
@@ -6061,10 +6009,6 @@ var validate = function generate_validate(it, $keyword, $ruleType) {
6061
6009
  } else {
6062
6010
  out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';
6063
6011
  }
6064
- out = it.util.cleanUpCode(out);
6065
- if ($top) {
6066
- out = it.util.finalCleanUpCode(out, $async);
6067
- }
6068
6012
 
6069
6013
  function $shouldUseGroup($rulesGroup) {
6070
6014
  var rules = $rulesGroup.rules;
@@ -6190,7 +6134,7 @@ function compile(schema, root, localRefs, baseId) {
6190
6134
  + vars(defaults, defaultCode) + vars(customRules, customRuleCode)
6191
6135
  + sourceCode;
6192
6136
 
6193
- if (opts.processCode) sourceCode = opts.processCode(sourceCode);
6137
+ if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);
6194
6138
  // console.log('\n\n\n *** \n', JSON.stringify(sourceCode));
6195
6139
  var validate$1;
6196
6140
  try {
@@ -6493,8 +6437,8 @@ Cache.prototype.clear = function Cache_clear() {
6493
6437
 
6494
6438
  var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
6495
6439
  var DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];
6496
- var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i;
6497
- var HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;
6440
+ var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i;
6441
+ var HOSTNAME = /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i;
6498
6442
  var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
6499
6443
  var URIREF = /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
6500
6444
  // uri-template: https://tools.ietf.org/html/rfc6570
@@ -6502,8 +6446,8 @@ var URITEMPLATE = /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|
6502
6446
  // For the source: https://gist.github.com/dperini/729294
6503
6447
  // For test cases: https://mathiasbynens.be/demo/url-regex
6504
6448
  // @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.
6505
- // var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
6506
- var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;
6449
+ // var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
6450
+ var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i;
6507
6451
  var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;
6508
6452
  var JSON_POINTER$1 = /^(?:\/(?:[^~/]|~0|~1)*)*$/;
6509
6453
  var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;
@@ -6522,11 +6466,11 @@ formats.fast = {
6522
6466
  // date: http://tools.ietf.org/html/rfc3339#section-5.6
6523
6467
  date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/,
6524
6468
  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6
6525
- time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,
6526
- 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d:\d\d)$/i,
6469
+ time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,
6470
+ 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,
6527
6471
  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
6528
- uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,
6529
- 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
6472
+ uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,
6473
+ 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,
6530
6474
  'uri-template': URITEMPLATE,
6531
6475
  url: URL,
6532
6476
  // email (sources from jsen validator):
@@ -6559,7 +6503,7 @@ formats.full = {
6559
6503
  'uri-template': URITEMPLATE,
6560
6504
  url: URL,
6561
6505
  email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,
6562
- hostname: hostname,
6506
+ hostname: HOSTNAME,
6563
6507
  ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,
6564
6508
  ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,
6565
6509
  regex: regex,
@@ -6612,13 +6556,6 @@ function date_time(str) {
6612
6556
  }
6613
6557
 
6614
6558
 
6615
- function hostname(str) {
6616
- // https://tools.ietf.org/html/rfc1034#section-3.5
6617
- // https://tools.ietf.org/html/rfc1123#section-2
6618
- return str.length <= 255 && HOSTNAME.test(str);
6619
- }
6620
-
6621
-
6622
6559
  var NOT_URI_FRAGMENT = /\/|:/;
6623
6560
  function uri(str) {
6624
6561
  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
@@ -6779,7 +6716,7 @@ var allOf = function generate_allOf(it, $keyword, $ruleType) {
6779
6716
  l1 = arr1.length - 1;
6780
6717
  while ($i < l1) {
6781
6718
  $sch = arr1[$i += 1];
6782
- if (it.util.schemaHasRules($sch, it.RULES.all)) {
6719
+ if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
6783
6720
  $allSchemasEmpty = false;
6784
6721
  $it.schema = $sch;
6785
6722
  $it.schemaPath = $schemaPath + '[' + $i + ']';
@@ -6800,7 +6737,6 @@ var allOf = function generate_allOf(it, $keyword, $ruleType) {
6800
6737
  out += ' ' + ($closingBraces.slice(0, -1)) + ' ';
6801
6738
  }
6802
6739
  }
6803
- out = it.util.cleanUpCode(out);
6804
6740
  return out;
6805
6741
  };
6806
6742
 
@@ -6820,7 +6756,7 @@ var anyOf = function generate_anyOf(it, $keyword, $ruleType) {
6820
6756
  $it.level++;
6821
6757
  var $nextValid = 'valid' + $it.level;
6822
6758
  var $noEmptySchema = $schema.every(function($sch) {
6823
- return it.util.schemaHasRules($sch, it.RULES.all);
6759
+ return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));
6824
6760
  });
6825
6761
  if ($noEmptySchema) {
6826
6762
  var $currentBaseId = $it.baseId;
@@ -6869,7 +6805,6 @@ var anyOf = function generate_anyOf(it, $keyword, $ruleType) {
6869
6805
  if (it.opts.allErrors) {
6870
6806
  out += ' } ';
6871
6807
  }
6872
- out = it.util.cleanUpCode(out);
6873
6808
  } else {
6874
6809
  if ($breakOnError) {
6875
6810
  out += ' if (true) { ';
@@ -6963,7 +6898,7 @@ var contains = function generate_contains(it, $keyword, $ruleType) {
6963
6898
  $dataNxt = $it.dataLevel = it.dataLevel + 1,
6964
6899
  $nextData = 'data' + $dataNxt,
6965
6900
  $currentBaseId = it.baseId,
6966
- $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all);
6901
+ $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));
6967
6902
  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
6968
6903
  if ($nonEmptySchema) {
6969
6904
  var $wasComposite = it.compositeRule;
@@ -7022,7 +6957,6 @@ var contains = function generate_contains(it, $keyword, $ruleType) {
7022
6957
  if (it.opts.allErrors) {
7023
6958
  out += ' } ';
7024
6959
  }
7025
- out = it.util.cleanUpCode(out);
7026
6960
  return out;
7027
6961
  };
7028
6962
 
@@ -7044,6 +6978,7 @@ var dependencies = function generate_dependencies(it, $keyword, $ruleType) {
7044
6978
  $propertyDeps = {},
7045
6979
  $ownProperties = it.opts.ownProperties;
7046
6980
  for ($property in $schema) {
6981
+ if ($property == '__proto__') continue;
7047
6982
  var $sch = $schema[$property];
7048
6983
  var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;
7049
6984
  $deps[$property] = $sch;
@@ -7169,7 +7104,7 @@ var dependencies = function generate_dependencies(it, $keyword, $ruleType) {
7169
7104
  var $currentBaseId = $it.baseId;
7170
7105
  for (var $property in $schemaDeps) {
7171
7106
  var $sch = $schemaDeps[$property];
7172
- if (it.util.schemaHasRules($sch, it.RULES.all)) {
7107
+ if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
7173
7108
  out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';
7174
7109
  if ($ownProperties) {
7175
7110
  out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') ';
@@ -7190,7 +7125,6 @@ var dependencies = function generate_dependencies(it, $keyword, $ruleType) {
7190
7125
  if ($breakOnError) {
7191
7126
  out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
7192
7127
  }
7193
- out = it.util.cleanUpCode(out);
7194
7128
  return out;
7195
7129
  };
7196
7130
 
@@ -7422,8 +7356,8 @@ var _if = function generate_if(it, $keyword, $ruleType) {
7422
7356
  var $nextValid = 'valid' + $it.level;
7423
7357
  var $thenSch = it.schema['then'],
7424
7358
  $elseSch = it.schema['else'],
7425
- $thenPresent = $thenSch !== undefined && it.util.schemaHasRules($thenSch, it.RULES.all),
7426
- $elsePresent = $elseSch !== undefined && it.util.schemaHasRules($elseSch, it.RULES.all),
7359
+ $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),
7360
+ $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),
7427
7361
  $currentBaseId = $it.baseId;
7428
7362
  if ($thenPresent || $elsePresent) {
7429
7363
  var $ifClause;
@@ -7501,7 +7435,6 @@ var _if = function generate_if(it, $keyword, $ruleType) {
7501
7435
  if ($breakOnError) {
7502
7436
  out += ' else { ';
7503
7437
  }
7504
- out = it.util.cleanUpCode(out);
7505
7438
  } else {
7506
7439
  if ($breakOnError) {
7507
7440
  out += ' if (true) { ';
@@ -7577,7 +7510,7 @@ var items = function generate_items(it, $keyword, $ruleType) {
7577
7510
  l1 = arr1.length - 1;
7578
7511
  while ($i < l1) {
7579
7512
  $sch = arr1[$i += 1];
7580
- if (it.util.schemaHasRules($sch, it.RULES.all)) {
7513
+ if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
7581
7514
  out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';
7582
7515
  var $passData = $data + '[' + $i + ']';
7583
7516
  $it.schema = $sch;
@@ -7600,7 +7533,7 @@ var items = function generate_items(it, $keyword, $ruleType) {
7600
7533
  }
7601
7534
  }
7602
7535
  }
7603
- if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) {
7536
+ if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {
7604
7537
  $it.schema = $additionalItems;
7605
7538
  $it.schemaPath = it.schemaPath + '.additionalItems';
7606
7539
  $it.errSchemaPath = it.errSchemaPath + '/additionalItems';
@@ -7624,7 +7557,7 @@ var items = function generate_items(it, $keyword, $ruleType) {
7624
7557
  $closingBraces += '}';
7625
7558
  }
7626
7559
  }
7627
- } else if (it.util.schemaHasRules($schema, it.RULES.all)) {
7560
+ } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {
7628
7561
  $it.schema = $schema;
7629
7562
  $it.schemaPath = $schemaPath;
7630
7563
  $it.errSchemaPath = $errSchemaPath;
@@ -7647,7 +7580,6 @@ var items = function generate_items(it, $keyword, $ruleType) {
7647
7580
  if ($breakOnError) {
7648
7581
  out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
7649
7582
  }
7650
- out = it.util.cleanUpCode(out);
7651
7583
  return out;
7652
7584
  };
7653
7585
 
@@ -7676,6 +7608,12 @@ var _limit = function generate__limit(it, $keyword, $ruleType) {
7676
7608
  $op = $isMax ? '<' : '>',
7677
7609
  $notOp = $isMax ? '>' : '<',
7678
7610
  $errorKeyword = undefined;
7611
+ if (!($isData || typeof $schema == 'number' || $schema === undefined)) {
7612
+ throw new Error($keyword + ' must be number');
7613
+ }
7614
+ if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {
7615
+ throw new Error($exclusiveKeyword + ' must be number or boolean');
7616
+ }
7679
7617
  if ($isDataExcl) {
7680
7618
  var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),
7681
7619
  $exclusive = 'exclusive' + $lvl,
@@ -7826,6 +7764,9 @@ var _limitItems = function generate__limitItems(it, $keyword, $ruleType) {
7826
7764
  } else {
7827
7765
  $schemaValue = $schema;
7828
7766
  }
7767
+ if (!($isData || typeof $schema == 'number')) {
7768
+ throw new Error($keyword + ' must be number');
7769
+ }
7829
7770
  var $op = $keyword == 'maxItems' ? '>' : '<';
7830
7771
  out += 'if ( ';
7831
7772
  if ($isData) {
@@ -7903,6 +7844,9 @@ var _limitLength = function generate__limitLength(it, $keyword, $ruleType) {
7903
7844
  } else {
7904
7845
  $schemaValue = $schema;
7905
7846
  }
7847
+ if (!($isData || typeof $schema == 'number')) {
7848
+ throw new Error($keyword + ' must be number');
7849
+ }
7906
7850
  var $op = $keyword == 'maxLength' ? '>' : '<';
7907
7851
  out += 'if ( ';
7908
7852
  if ($isData) {
@@ -7985,6 +7929,9 @@ var _limitProperties = function generate__limitProperties(it, $keyword, $ruleTyp
7985
7929
  } else {
7986
7930
  $schemaValue = $schema;
7987
7931
  }
7932
+ if (!($isData || typeof $schema == 'number')) {
7933
+ throw new Error($keyword + ' must be number');
7934
+ }
7988
7935
  var $op = $keyword == 'maxProperties' ? '>' : '<';
7989
7936
  out += 'if ( ';
7990
7937
  if ($isData) {
@@ -8061,6 +8008,9 @@ var multipleOf = function generate_multipleOf(it, $keyword, $ruleType) {
8061
8008
  } else {
8062
8009
  $schemaValue = $schema;
8063
8010
  }
8011
+ if (!($isData || typeof $schema == 'number')) {
8012
+ throw new Error($keyword + ' must be number');
8013
+ }
8064
8014
  out += 'var division' + ($lvl) + ';if (';
8065
8015
  if ($isData) {
8066
8016
  out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || ';
@@ -8134,7 +8084,7 @@ var not = function generate_not(it, $keyword, $ruleType) {
8134
8084
  var $it = it.util.copy(it);
8135
8085
  $it.level++;
8136
8086
  var $nextValid = 'valid' + $it.level;
8137
- if (it.util.schemaHasRules($schema, it.RULES.all)) {
8087
+ if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {
8138
8088
  $it.schema = $schema;
8139
8089
  $it.schemaPath = $schemaPath;
8140
8090
  $it.errSchemaPath = $errSchemaPath;
@@ -8232,7 +8182,7 @@ var oneOf = function generate_oneOf(it, $keyword, $ruleType) {
8232
8182
  l1 = arr1.length - 1;
8233
8183
  while ($i < l1) {
8234
8184
  $sch = arr1[$i += 1];
8235
- if (it.util.schemaHasRules($sch, it.RULES.all)) {
8185
+ if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
8236
8186
  $it.schema = $sch;
8237
8187
  $it.schemaPath = $schemaPath + '[' + $i + ']';
8238
8188
  $it.errSchemaPath = $errSchemaPath + '/' + $i;
@@ -8372,9 +8322,9 @@ var properties = function generate_properties(it, $keyword, $ruleType) {
8372
8322
  $dataNxt = $it.dataLevel = it.dataLevel + 1,
8373
8323
  $nextData = 'data' + $dataNxt,
8374
8324
  $dataProperties = 'dataProperties' + $lvl;
8375
- var $schemaKeys = Object.keys($schema || {}),
8325
+ var $schemaKeys = Object.keys($schema || {}).filter(notProto),
8376
8326
  $pProperties = it.schema.patternProperties || {},
8377
- $pPropertyKeys = Object.keys($pProperties),
8327
+ $pPropertyKeys = Object.keys($pProperties).filter(notProto),
8378
8328
  $aProperties = it.schema.additionalProperties,
8379
8329
  $someProperties = $schemaKeys.length || $pPropertyKeys.length,
8380
8330
  $noAdditional = $aProperties === false,
@@ -8384,7 +8334,13 @@ var properties = function generate_properties(it, $keyword, $ruleType) {
8384
8334
  $ownProperties = it.opts.ownProperties,
8385
8335
  $currentBaseId = it.baseId;
8386
8336
  var $required = it.schema.required;
8387
- if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);
8337
+ if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {
8338
+ var $requiredHash = it.util.toHash($required);
8339
+ }
8340
+
8341
+ function notProto(p) {
8342
+ return p !== '__proto__';
8343
+ }
8388
8344
  out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';
8389
8345
  if ($ownProperties) {
8390
8346
  out += ' var ' + ($dataProperties) + ' = undefined;';
@@ -8537,7 +8493,7 @@ var properties = function generate_properties(it, $keyword, $ruleType) {
8537
8493
  while (i3 < l3) {
8538
8494
  $propertyKey = arr3[i3 += 1];
8539
8495
  var $sch = $schema[$propertyKey];
8540
- if (it.util.schemaHasRules($sch, it.RULES.all)) {
8496
+ if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
8541
8497
  var $prop = it.util.getProperty($propertyKey),
8542
8498
  $passData = $data + $prop,
8543
8499
  $hasDefault = $useDefaults && $sch.default !== undefined;
@@ -8640,7 +8596,7 @@ var properties = function generate_properties(it, $keyword, $ruleType) {
8640
8596
  while (i4 < l4) {
8641
8597
  $pProperty = arr4[i4 += 1];
8642
8598
  var $sch = $pProperties[$pProperty];
8643
- if (it.util.schemaHasRules($sch, it.RULES.all)) {
8599
+ if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {
8644
8600
  $it.schema = $sch;
8645
8601
  $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
8646
8602
  $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);
@@ -8679,7 +8635,6 @@ var properties = function generate_properties(it, $keyword, $ruleType) {
8679
8635
  if ($breakOnError) {
8680
8636
  out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
8681
8637
  }
8682
- out = it.util.cleanUpCode(out);
8683
8638
  return out;
8684
8639
  };
8685
8640
 
@@ -8698,7 +8653,7 @@ var propertyNames = function generate_propertyNames(it, $keyword, $ruleType) {
8698
8653
  $it.level++;
8699
8654
  var $nextValid = 'valid' + $it.level;
8700
8655
  out += 'var ' + ($errs) + ' = errors;';
8701
- if (it.util.schemaHasRules($schema, it.RULES.all)) {
8656
+ if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {
8702
8657
  $it.schema = $schema;
8703
8658
  $it.schemaPath = $schemaPath;
8704
8659
  $it.errSchemaPath = $errSchemaPath;
@@ -8761,7 +8716,6 @@ var propertyNames = function generate_propertyNames(it, $keyword, $ruleType) {
8761
8716
  if ($breakOnError) {
8762
8717
  out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';
8763
8718
  }
8764
- out = it.util.cleanUpCode(out);
8765
8719
  return out;
8766
8720
  };
8767
8721
 
@@ -8790,7 +8744,7 @@ var required = function generate_required(it, $keyword, $ruleType) {
8790
8744
  while (i1 < l1) {
8791
8745
  $property = arr1[i1 += 1];
8792
8746
  var $propertySch = it.schema.properties[$property];
8793
- if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) {
8747
+ if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {
8794
8748
  $required[$required.length] = $property;
8795
8749
  }
8796
8750
  }
@@ -9061,7 +9015,7 @@ var uniqueItems = function generate_uniqueItems(it, $keyword, $ruleType) {
9061
9015
  } else {
9062
9016
  out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';
9063
9017
  var $method = 'checkDataType' + ($typeIsArray ? 's' : '');
9064
- out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; ';
9018
+ out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';
9065
9019
  if ($typeIsArray) {
9066
9020
  out += ' if (typeof item == \'string\') item = \'"\' + item; ';
9067
9021
  }
@@ -9251,7 +9205,7 @@ var data = function (metaSchema, keywordsJsonPointers) {
9251
9205
  keywords[key] = {
9252
9206
  anyOf: [
9253
9207
  schema,
9254
- { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
9208
+ { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }
9255
9209
  ]
9256
9210
  };
9257
9211
  }
@@ -9843,20 +9797,10 @@ var jsonSchemaDraft07$1 = /*#__PURE__*/Object.freeze({
9843
9797
 
9844
9798
  var require$$2 = getCjsExportFromNamespace(jsonSchemaDraft07$1);
9845
9799
 
9846
- var IDENTIFIER$1 = /^[a-z_$][a-z0-9_$-]*$/i;
9847
-
9848
- var metaSchema = require$$2;
9849
-
9850
- var keyword = {
9851
- add: addKeyword,
9852
- get: getKeyword,
9853
- remove: removeKeyword,
9854
- validate: validateKeyword
9855
- };
9856
-
9857
- var definitionSchema = {
9800
+ var definition_schema = {
9801
+ $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js',
9858
9802
  definitions: {
9859
- simpleTypes: metaSchema.definitions.simpleTypes
9803
+ simpleTypes: require$$2.definitions.simpleTypes
9860
9804
  },
9861
9805
  type: 'object',
9862
9806
  dependencies: {
@@ -9866,7 +9810,7 @@ var definitionSchema = {
9866
9810
  valid: {not: {required: ['macro']}}
9867
9811
  },
9868
9812
  properties: {
9869
- type: metaSchema.properties.type,
9813
+ type: require$$2.properties.type,
9870
9814
  schema: {type: 'boolean'},
9871
9815
  statements: {type: 'boolean'},
9872
9816
  dependencies: {
@@ -9887,6 +9831,18 @@ var definitionSchema = {
9887
9831
  }
9888
9832
  };
9889
9833
 
9834
+ var IDENTIFIER$1 = /^[a-z_$][a-z0-9_$-]*$/i;
9835
+
9836
+
9837
+
9838
+ var keyword = {
9839
+ add: addKeyword,
9840
+ get: getKeyword,
9841
+ remove: removeKeyword,
9842
+ validate: validateKeyword
9843
+ };
9844
+
9845
+
9890
9846
  /**
9891
9847
  * Define custom keyword
9892
9848
  * @this Ajv
@@ -9921,7 +9877,7 @@ function addKeyword(keyword, definition) {
9921
9877
  metaSchema = {
9922
9878
  anyOf: [
9923
9879
  metaSchema,
9924
- { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }
9880
+ { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }
9925
9881
  ]
9926
9882
  };
9927
9883
  }
@@ -10010,7 +9966,7 @@ function removeKeyword(keyword) {
10010
9966
  function validateKeyword(definition, throwError) {
10011
9967
  validateKeyword.errors = null;
10012
9968
  var v = this._validateKeyword = this._validateKeyword
10013
- || this.compile(definitionSchema, true);
9969
+ || this.compile(definition_schema, true);
10014
9970
 
10015
9971
  if (v(definition)) return true;
10016
9972
  validateKeyword.errors = v.errors;
@@ -10021,7 +9977,7 @@ function validateKeyword(definition, throwError) {
10021
9977
  }
10022
9978
 
10023
9979
  var $schema$1 = "http://json-schema.org/draft-07/schema#";
10024
- var $id$1 = "https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#";
9980
+ var $id$1 = "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#";
10025
9981
  var description = "Meta-schema for $data reference (JSON Schema extension proposal)";
10026
9982
  var type$1 = "object";
10027
9983
  var required$1 = [
@@ -10124,6 +10080,7 @@ function Ajv(opts) {
10124
10080
  this._metaOpts = getMetaSchemaOptions(this);
10125
10081
 
10126
10082
  if (opts.formats) addInitialFormats(this);
10083
+ if (opts.keywords) addInitialKeywords(this);
10127
10084
  addDefaultMetaSchema(this);
10128
10085
  if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);
10129
10086
  if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});
@@ -10522,6 +10479,14 @@ function addInitialFormats(self) {
10522
10479
  }
10523
10480
 
10524
10481
 
10482
+ function addInitialKeywords(self) {
10483
+ for (var name in self._opts.keywords) {
10484
+ var keyword = self._opts.keywords[name];
10485
+ self.addKeyword(name, keyword);
10486
+ }
10487
+ }
10488
+
10489
+
10525
10490
  function checkUnique(self, id) {
10526
10491
  if (self._schemas[id] || self._refs[id])
10527
10492
  throw new Error('schema with key or id "' + id + '" already exists');
@@ -13446,7 +13411,7 @@ var ComputedField = /** @class */ (function (_super) {
13446
13411
  if (this.hasChildFields()) {
13447
13412
  return function (row) {
13448
13413
  // TODO Move to function factory ---
13449
- var r = row[column1].Row && isArray$1(row[column1].Row) ? row[column1].Row : row[column1];
13414
+ var r = row[column1].Row && isArray(row[column1].Row) ? row[column1].Row : row[column1];
13450
13415
  return r.map(_this.projection(trim));
13451
13416
  };
13452
13417
  }
@@ -14523,7 +14488,7 @@ var Visualization = /** @class */ (function (_super) {
14523
14488
  };
14524
14489
  Visualization.prototype.toDBData = function (fields, data) {
14525
14490
  var _this = this;
14526
- var _data = isArray$1(data) ? data : [data];
14491
+ var _data = isArray(data) ? data : [data];
14527
14492
  return _data.map(function (row) {
14528
14493
  var retVal = [];
14529
14494
  for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {
@@ -14680,12 +14645,12 @@ var Element = /** @class */ (function (_super) {
14680
14645
  _this.selection(sel ? more.selection.map(function (r) { return r.__lparam || r; }) : []);
14681
14646
  }
14682
14647
  else {
14683
- var row = isArray$1(_row) ? _row : [_row];
14648
+ var row = isArray(_row) ? _row : [_row];
14684
14649
  _this.selection(sel ? row.map(function (r) { return r.__lparam || r; }) : []);
14685
14650
  }
14686
14651
  })
14687
14652
  .on("vertex_click", function (_row, col, sel) {
14688
- var row = isArray$1(_row) ? _row : [_row];
14653
+ var row = isArray(_row) ? _row : [_row];
14689
14654
  _this.selection(sel ? row.map(function (r) { return r.__lparam || r; }) : []);
14690
14655
  });
14691
14656
  return this;
@@ -15900,7 +15865,7 @@ var JavaScriptAdapter = /** @class */ (function () {
15900
15865
  }
15901
15866
  for (var prop in props) {
15902
15867
  if (prop === "__class") ;
15903
- else if (isArray$1(props[prop])) {
15868
+ else if (isArray(props[prop])) {
15904
15869
  var arr = "" + props[prop].map(function (item) { return _this.joinWithPrefix(item, imports, joinStr + " ", ""); }).join("," + joinStr + " ");
15905
15870
  if (arr) {
15906
15871
  retVal += joinStr + " ." + prop + "([" + joinStr + " " + arr + joinStr + " ])" + postFix;