@sanity/validation 2.30.0 → 2.30.1-dev-preview.1013
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/dts → lib/dts/src}/Rule.d.ts +3 -3
- package/lib/dts/src/Rule.d.ts.map +1 -0
- package/lib/dts/src/Rule.js +336 -0
- package/lib/dts/src/Rule.js.map +1 -0
- package/{dist/dts → lib/dts/src}/ValidationError.d.ts +3 -3
- package/lib/dts/src/ValidationError.d.ts.map +1 -0
- package/lib/dts/src/ValidationError.js +18 -0
- package/lib/dts/src/ValidationError.js.map +1 -0
- package/{dist/dts → lib/dts/src}/index.d.ts +12 -12
- package/lib/dts/src/index.d.ts.map +1 -0
- package/lib/dts/src/index.js +7 -0
- package/lib/dts/src/index.js.map +1 -0
- package/{dist/dts → lib/dts/src}/inferFromSchema.d.ts +3 -3
- package/lib/dts/src/inferFromSchema.d.ts.map +1 -0
- package/lib/dts/src/inferFromSchema.js +14 -0
- package/lib/dts/src/inferFromSchema.js.map +1 -0
- package/{dist/dts → lib/dts/src}/inferFromSchemaType.d.ts +4 -4
- package/lib/dts/src/inferFromSchemaType.d.ts.map +1 -0
- package/lib/dts/src/inferFromSchemaType.js +33 -0
- package/lib/dts/src/inferFromSchemaType.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/convertToValidationMarker.d.ts +5 -5
- package/lib/dts/src/util/convertToValidationMarker.d.ts.map +1 -0
- package/lib/dts/src/util/convertToValidationMarker.js +51 -0
- package/lib/dts/src/util/convertToValidationMarker.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/deepEquals.d.ts +5 -5
- package/lib/dts/src/util/deepEquals.d.ts.map +1 -0
- package/lib/dts/src/util/deepEquals.js +65 -0
- package/lib/dts/src/util/deepEquals.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/escapeRegex.d.ts +2 -2
- package/lib/dts/src/util/escapeRegex.d.ts.map +1 -0
- package/lib/dts/src/util/escapeRegex.js +6 -0
- package/lib/dts/src/util/escapeRegex.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/normalizeValidationRules.d.ts +5 -5
- package/lib/dts/src/util/normalizeValidationRules.d.ts.map +1 -0
- package/lib/dts/src/util/normalizeValidationRules.js +104 -0
- package/lib/dts/src/util/normalizeValidationRules.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/normalizeValidationRules.test.d.ts +0 -0
- package/lib/dts/src/util/normalizeValidationRules.test.d.ts.map +1 -0
- package/lib/dts/src/util/normalizeValidationRules.test.js +150 -0
- package/lib/dts/src/util/normalizeValidationRules.test.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/pathToString.d.ts +2 -2
- package/lib/dts/src/util/pathToString.d.ts.map +1 -0
- package/lib/dts/src/util/pathToString.js +18 -0
- package/lib/dts/src/util/pathToString.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/typeString.d.ts +1 -1
- package/lib/dts/src/util/typeString.d.ts.map +1 -0
- package/lib/dts/src/util/typeString.js +23 -0
- package/lib/dts/src/util/typeString.js.map +1 -0
- package/{dist/dts → lib/dts/src}/util/typeString.test.d.ts +0 -0
- package/lib/dts/src/util/typeString.test.d.ts.map +1 -0
- package/lib/dts/src/util/typeString.test.js +24 -0
- package/lib/dts/src/util/typeString.test.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validateDocument.d.ts +22 -21
- package/lib/dts/src/validateDocument.d.ts.map +1 -0
- package/lib/dts/src/validateDocument.js +142 -0
- package/lib/dts/src/validateDocument.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validateDocument.test.d.ts +0 -0
- package/lib/dts/src/validateDocument.test.d.ts.map +1 -0
- package/lib/dts/src/validateDocument.test.js +703 -0
- package/lib/dts/src/validateDocument.test.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/arrayValidator.d.ts +3 -3
- package/lib/dts/src/validators/arrayValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/arrayValidator.js +79 -0
- package/lib/dts/src/validators/arrayValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/booleanValidator.d.ts +3 -3
- package/lib/dts/src/validators/booleanValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/booleanValidator.js +12 -0
- package/lib/dts/src/validators/booleanValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/dateValidator.d.ts +4 -4
- package/lib/dts/src/validators/dateValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/dateValidator.js +83 -0
- package/lib/dts/src/validators/dateValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/genericValidator.d.ts +3 -3
- package/lib/dts/src/validators/genericValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/genericValidator.js +93 -0
- package/lib/dts/src/validators/genericValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/numberValidator.d.ts +3 -3
- package/lib/dts/src/validators/numberValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/numberValidator.js +47 -0
- package/lib/dts/src/validators/numberValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/objectValidator.d.ts +3 -3
- package/lib/dts/src/validators/objectValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/objectValidator.js +48 -0
- package/lib/dts/src/validators/objectValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/slugValidator.d.ts +8 -8
- package/lib/dts/src/validators/slugValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/slugValidator.js +83 -0
- package/lib/dts/src/validators/slugValidator.js.map +1 -0
- package/{dist/dts → lib/dts/src}/validators/stringValidator.d.ts +3 -3
- package/lib/dts/src/validators/stringValidator.d.ts.map +1 -0
- package/lib/dts/src/validators/stringValidator.js +94 -0
- package/lib/dts/src/validators/stringValidator.js.map +1 -0
- package/lib/dts/test/array.test.d.ts +2 -0
- package/lib/dts/test/array.test.d.ts.map +1 -0
- package/lib/dts/test/array.test.js +55 -0
- package/lib/dts/test/array.test.js.map +1 -0
- package/lib/dts/test/children.test.d.ts +2 -0
- package/lib/dts/test/children.test.d.ts.map +1 -0
- package/lib/dts/test/children.test.js +70 -0
- package/lib/dts/test/children.test.js.map +1 -0
- package/lib/dts/test/createSchema.d.ts +6 -0
- package/lib/dts/test/createSchema.d.ts.map +1 -0
- package/lib/dts/test/createSchema.js +19 -0
- package/lib/dts/test/createSchema.js.map +1 -0
- package/lib/dts/test/generics.test.d.ts +2 -0
- package/lib/dts/test/generics.test.d.ts.map +1 -0
- package/lib/dts/test/generics.test.js +60 -0
- package/lib/dts/test/generics.test.js.map +1 -0
- package/lib/dts/test/infer.test.d.ts +2 -0
- package/lib/dts/test/infer.test.d.ts.map +1 -0
- package/lib/dts/test/infer.test.js +243 -0
- package/lib/dts/test/infer.test.js.map +1 -0
- package/lib/dts/test/mocks/mockSanityClient.d.ts +6 -0
- package/lib/dts/test/mocks/mockSanityClient.d.ts.map +1 -0
- package/lib/dts/test/mocks/mockSanityClient.js +8 -0
- package/lib/dts/test/mocks/mockSanityClient.js.map +1 -0
- package/lib/dts/test/nullExport.d.ts +3 -0
- package/lib/dts/test/nullExport.d.ts.map +1 -0
- package/lib/dts/test/nullExport.js +4 -0
- package/lib/dts/test/nullExport.js.map +1 -0
- package/lib/dts/test/numbers.test.d.ts +2 -0
- package/lib/dts/test/numbers.test.d.ts.map +1 -0
- package/lib/dts/test/numbers.test.js +57 -0
- package/lib/dts/test/numbers.test.js.map +1 -0
- package/lib/dts/test/strings.test.d.ts +2 -0
- package/lib/dts/test/strings.test.d.ts.map +1 -0
- package/lib/dts/test/strings.test.js +100 -0
- package/lib/dts/test/strings.test.js.map +1 -0
- package/lib/dts/tsconfig.lib.tsbuildinfo +1 -0
- package/lib/dts/tsconfig.tsbuildinfo +1 -0
- package/lib/index.cjs +1318 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.js +1308 -48
- package/lib/index.js.map +1 -0
- package/package.json +21 -11
- package/src/Rule.ts +6 -2
- package/src/inferFromSchema.ts +7 -1
- package/src/util/convertToValidationMarker.ts +5 -3
- package/src/validateDocument.test.ts +22 -23
- package/src/validateDocument.ts +3 -1
- package/src/validators/dateValidator.ts +4 -4
- package/src/validators/slugValidator.ts +3 -3
- package/src/validators/stringValidator.ts +2 -1
- package/dist/dts/Rule.d.ts.map +0 -1
- package/dist/dts/ValidationError.d.ts.map +0 -1
- package/dist/dts/getClient.d.ts +0 -3
- package/dist/dts/getClient.d.ts.map +0 -1
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/inferFromSchema.d.ts.map +0 -1
- package/dist/dts/inferFromSchemaType.d.ts.map +0 -1
- package/dist/dts/util/convertToValidationMarker.d.ts.map +0 -1
- package/dist/dts/util/deepEquals.d.ts.map +0 -1
- package/dist/dts/util/escapeRegex.d.ts.map +0 -1
- package/dist/dts/util/normalizeValidationRules.d.ts.map +0 -1
- package/dist/dts/util/normalizeValidationRules.test.d.ts.map +0 -1
- package/dist/dts/util/pathToString.d.ts.map +0 -1
- package/dist/dts/util/typeString.d.ts.map +0 -1
- package/dist/dts/util/typeString.test.d.ts.map +0 -1
- package/dist/dts/validateDocument.d.ts.map +0 -1
- package/dist/dts/validateDocument.test.d.ts.map +0 -1
- package/dist/dts/validators/arrayValidator.d.ts.map +0 -1
- package/dist/dts/validators/booleanValidator.d.ts.map +0 -1
- package/dist/dts/validators/dateValidator.d.ts.map +0 -1
- package/dist/dts/validators/genericValidator.d.ts.map +0 -1
- package/dist/dts/validators/numberValidator.d.ts.map +0 -1
- package/dist/dts/validators/objectValidator.d.ts.map +0 -1
- package/dist/dts/validators/slugValidator.d.ts.map +0 -1
- package/dist/dts/validators/stringValidator.d.ts.map +0 -1
- package/jest.config.js +0 -5
- package/lib/Rule.js +0 -491
- package/lib/ValidationError.js +0 -39
- package/lib/getClient.js +0 -20
- package/lib/inferFromSchema.js +0 -22
- package/lib/inferFromSchemaType.js +0 -86
- package/lib/util/convertToValidationMarker.js +0 -65
- package/lib/util/deepEquals.js +0 -87
- package/lib/util/escapeRegex.js +0 -14
- package/lib/util/normalizeValidationRules.js +0 -115
- package/lib/util/pathToString.js +0 -30
- package/lib/util/typeString.js +0 -29
- package/lib/validateDocument.js +0 -231
- package/lib/validators/arrayValidator.js +0 -123
- package/lib/validators/booleanValidator.js +0 -29
- package/lib/validators/dateValidator.js +0 -120
- package/lib/validators/genericValidator.js +0 -135
- package/lib/validators/numberValidator.js +0 -70
- package/lib/validators/objectValidator.js +0 -93
- package/lib/validators/slugValidator.js +0 -133
- package/lib/validators/stringValidator.js +0 -131
- package/src/getClient.ts +0 -13
- package/tsconfig.json +0 -10
package/lib/validateDocument.js
DELETED
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = validateDocument;
|
|
7
|
-
exports.resolveTypeForArrayItem = resolveTypeForArrayItem;
|
|
8
|
-
exports.validateItem = validateItem;
|
|
9
|
-
|
|
10
|
-
var _uniqBy2 = _interopRequireDefault(require("lodash/uniqBy"));
|
|
11
|
-
|
|
12
|
-
var _types = require("@sanity/types");
|
|
13
|
-
|
|
14
|
-
var _typeString = _interopRequireDefault(require("./util/typeString"));
|
|
15
|
-
|
|
16
|
-
var _ValidationError = _interopRequireDefault(require("./ValidationError"));
|
|
17
|
-
|
|
18
|
-
var _normalizeValidationRules = _interopRequireDefault(require("./util/normalizeValidationRules"));
|
|
19
|
-
|
|
20
|
-
var _excluded = ["value", "type", "path", "parent"];
|
|
21
|
-
|
|
22
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
-
|
|
24
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
25
|
-
|
|
26
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
27
|
-
|
|
28
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
29
|
-
|
|
30
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
31
|
-
|
|
32
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
33
|
-
|
|
34
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
35
|
-
|
|
36
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
37
|
-
|
|
38
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
39
|
-
|
|
40
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
41
|
-
|
|
42
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
43
|
-
|
|
44
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
45
|
-
|
|
46
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
47
|
-
|
|
48
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
49
|
-
|
|
50
|
-
var isRecord = maybeRecord => typeof maybeRecord === 'object' && maybeRecord !== null && !Array.isArray(maybeRecord);
|
|
51
|
-
|
|
52
|
-
var isNonNullable = value => value !== null && value !== undefined;
|
|
53
|
-
/**
|
|
54
|
-
* @internal
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
function resolveTypeForArrayItem(item, candidates) {
|
|
59
|
-
// if there is only one type available, assume that it's the correct one
|
|
60
|
-
if (candidates.length === 1) return candidates[0];
|
|
61
|
-
|
|
62
|
-
var itemType = (0, _types.isTypedObject)(item) && item._type;
|
|
63
|
-
|
|
64
|
-
var primitive = item === undefined || item === null || !itemType && (0, _typeString.default)(item).toLowerCase();
|
|
65
|
-
|
|
66
|
-
if (primitive && primitive !== 'object') {
|
|
67
|
-
return candidates.find(candidate => candidate.jsonType === primitive);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return candidates.find(candidate => {
|
|
71
|
-
var _candidate$type;
|
|
72
|
-
|
|
73
|
-
return ((_candidate$type = candidate.type) === null || _candidate$type === void 0 ? void 0 : _candidate$type.name) === itemType;
|
|
74
|
-
}) || candidates.find(candidate => candidate.name === itemType) || candidates.find(candidate => candidate.name === 'object' && primitive === 'object');
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function validateDocument(_x, _x2, _x3) {
|
|
78
|
-
return _validateDocument.apply(this, arguments);
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* this is used make optional properties required by replacing optionals with
|
|
82
|
-
* `T[P] | undefined`. this is used to prevent errors in `validateItem` where
|
|
83
|
-
* an option from a previous invocation would be incorrectly passed down.
|
|
84
|
-
*
|
|
85
|
-
* https://medium.com/terria/typescript-transforming-optional-properties-to-required-properties-that-may-be-undefined-7482cb4e1585
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
function _validateDocument() {
|
|
90
|
-
_validateDocument = _asyncToGenerator(function* (doc, schema, context) {
|
|
91
|
-
var documentType = schema.get(doc._type);
|
|
92
|
-
|
|
93
|
-
if (!documentType) {
|
|
94
|
-
console.warn('Schema type for object type "%s" not found, skipping validation', doc._type);
|
|
95
|
-
return [];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
try {
|
|
99
|
-
return yield validateItem({
|
|
100
|
-
parent: undefined,
|
|
101
|
-
value: doc,
|
|
102
|
-
path: [],
|
|
103
|
-
document: doc,
|
|
104
|
-
type: documentType,
|
|
105
|
-
getDocumentExists: context === null || context === void 0 ? void 0 : context.getDocumentExists
|
|
106
|
-
});
|
|
107
|
-
} catch (err) {
|
|
108
|
-
console.error(err);
|
|
109
|
-
return [{
|
|
110
|
-
type: 'validation',
|
|
111
|
-
level: 'error',
|
|
112
|
-
path: [],
|
|
113
|
-
item: new _ValidationError.default(err === null || err === void 0 ? void 0 : err.message)
|
|
114
|
-
}];
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
return _validateDocument.apply(this, arguments);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function validateItem(_x4) {
|
|
121
|
-
return _validateItem.apply(this, arguments);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function _validateItem() {
|
|
125
|
-
_validateItem = _asyncToGenerator(function* (_ref) {
|
|
126
|
-
var value = _ref.value,
|
|
127
|
-
type = _ref.type,
|
|
128
|
-
_ref$path = _ref.path,
|
|
129
|
-
path = _ref$path === void 0 ? [] : _ref$path,
|
|
130
|
-
parent = _ref.parent,
|
|
131
|
-
restOfContext = _objectWithoutProperties(_ref, _excluded);
|
|
132
|
-
|
|
133
|
-
var rules = (0, _normalizeValidationRules.default)(type); // run validation for the current value
|
|
134
|
-
|
|
135
|
-
var selfChecks = rules.map(rule => rule.validate(value, _objectSpread(_objectSpread({}, restOfContext), {}, {
|
|
136
|
-
parent,
|
|
137
|
-
path,
|
|
138
|
-
type
|
|
139
|
-
}))); // run validation for nested values (conditionally)
|
|
140
|
-
|
|
141
|
-
var nestedChecks = [];
|
|
142
|
-
var selfIsRequired = rules.some(rule => rule.isRequired());
|
|
143
|
-
var shouldRunNestedObjectValidation = // run nested validation for objects
|
|
144
|
-
(type === null || type === void 0 ? void 0 : type.jsonType) === 'object' && ( // if the value is truthy
|
|
145
|
-
!!value || // or
|
|
146
|
-
// (the value is null or undefined) and the top-level value is required
|
|
147
|
-
(value === null || value === undefined) && selfIsRequired);
|
|
148
|
-
|
|
149
|
-
if (shouldRunNestedObjectValidation) {
|
|
150
|
-
var fieldTypes = type.fields.reduce((acc, field) => {
|
|
151
|
-
acc[field.name] = field.type;
|
|
152
|
-
return acc;
|
|
153
|
-
}, {}); // Validation for rules set at the object level with `Rule.fields({/* ... */})`
|
|
154
|
-
|
|
155
|
-
nestedChecks = nestedChecks.concat(rules.map(rule => rule._fieldRules).filter(isNonNullable).flatMap(fieldResults => Object.entries(fieldResults)).flatMap(_ref2 => {
|
|
156
|
-
var _ref3 = _slicedToArray(_ref2, 2),
|
|
157
|
-
name = _ref3[0],
|
|
158
|
-
validation = _ref3[1];
|
|
159
|
-
|
|
160
|
-
var fieldType = fieldTypes[name];
|
|
161
|
-
return (0, _normalizeValidationRules.default)(_objectSpread(_objectSpread({}, fieldType), {}, {
|
|
162
|
-
validation
|
|
163
|
-
})).map(subRule => {
|
|
164
|
-
var nestedValue = isRecord(value) ? value[name] : undefined;
|
|
165
|
-
return subRule.validate(nestedValue, _objectSpread(_objectSpread({}, restOfContext), {}, {
|
|
166
|
-
parent: value,
|
|
167
|
-
path: path.concat(name),
|
|
168
|
-
type: fieldType
|
|
169
|
-
}));
|
|
170
|
-
});
|
|
171
|
-
})); // Validation from each field's schema `validation: Rule => {/* ... */}` function
|
|
172
|
-
|
|
173
|
-
nestedChecks = nestedChecks.concat(type.fields.map(field => validateItem(_objectSpread(_objectSpread({}, restOfContext), {}, {
|
|
174
|
-
parent: value,
|
|
175
|
-
value: isRecord(value) ? value[field.name] : undefined,
|
|
176
|
-
path: path.concat(field.name),
|
|
177
|
-
type: field.type
|
|
178
|
-
}))));
|
|
179
|
-
} // note: unlike objects, arrays should not run nested validation for undefined
|
|
180
|
-
// values because we won't have a valid path to put a marker (i.e. missing the
|
|
181
|
-
// key or index in the path) and the downstream form builder won't have a
|
|
182
|
-
// valid target component
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
var shouldRunNestedValidationForArrays = (type === null || type === void 0 ? void 0 : type.jsonType) === 'array' && Array.isArray(value);
|
|
186
|
-
|
|
187
|
-
if (shouldRunNestedValidationForArrays) {
|
|
188
|
-
nestedChecks = nestedChecks.concat(value.map(item => validateItem(_objectSpread(_objectSpread({}, restOfContext), {}, {
|
|
189
|
-
parent: value,
|
|
190
|
-
value: item,
|
|
191
|
-
path: path.concat((0, _types.isKeyedObject)(item) ? {
|
|
192
|
-
_key: item._key
|
|
193
|
-
} : value.indexOf(item)),
|
|
194
|
-
type: resolveTypeForArrayItem(item, type.of)
|
|
195
|
-
}))));
|
|
196
|
-
} // markDefs also do no run nested validation if the parent object is undefined
|
|
197
|
-
// for a similar reason to arrays
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
var shouldRunNestedValidationForMarkDefs = (0, _types.isBlock)(value) && value.markDefs.length && (0, _types.isBlockSchemaType)(type);
|
|
201
|
-
|
|
202
|
-
if (shouldRunNestedValidationForMarkDefs) {
|
|
203
|
-
var _type$fields = _slicedToArray(type.fields, 1),
|
|
204
|
-
spanChildrenField = _type$fields[0];
|
|
205
|
-
|
|
206
|
-
var spanType = spanChildrenField.type.of.find(_types.isSpanSchemaType);
|
|
207
|
-
var annotations = ((spanType === null || spanType === void 0 ? void 0 : spanType.annotations) || []).reduce((map, annotationType) => {
|
|
208
|
-
map.set(annotationType.name, annotationType);
|
|
209
|
-
return map;
|
|
210
|
-
}, new Map());
|
|
211
|
-
nestedChecks = nestedChecks.concat(value.markDefs.map(markDef => validateItem(_objectSpread(_objectSpread({}, restOfContext), {}, {
|
|
212
|
-
parent: value,
|
|
213
|
-
value: markDef,
|
|
214
|
-
path: path.concat(['markDefs', {
|
|
215
|
-
_key: markDef._key
|
|
216
|
-
}]),
|
|
217
|
-
type: annotations.get(markDef._type)
|
|
218
|
-
}))));
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
var results = (yield Promise.all([...selfChecks, ...nestedChecks])).flat(); // run `uniqBy` if `_fieldRules` are present because they can
|
|
222
|
-
// cause repeat markers
|
|
223
|
-
|
|
224
|
-
if (rules.some(rule => rule._fieldRules)) {
|
|
225
|
-
return (0, _uniqBy2.default)(results, rule => JSON.stringify(rule));
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return results;
|
|
229
|
-
});
|
|
230
|
-
return _validateItem.apply(this, arguments);
|
|
231
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _deepEquals = _interopRequireDefault(require("../util/deepEquals"));
|
|
9
|
-
|
|
10
|
-
var _ValidationError = _interopRequireDefault(require("../ValidationError"));
|
|
11
|
-
|
|
12
|
-
var _genericValidator = _interopRequireDefault(require("./genericValidator"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
|
|
20
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
21
|
-
|
|
22
|
-
var arrayValidators = _objectSpread(_objectSpread({}, _genericValidator.default), {}, {
|
|
23
|
-
min: (minLength, value, message) => {
|
|
24
|
-
if (!value || value.length >= minLength) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return message || "Must have at least ".concat(minLength, " items");
|
|
29
|
-
},
|
|
30
|
-
max: (maxLength, value, message) => {
|
|
31
|
-
if (!value || value.length <= maxLength) {
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return message || "Must have at most ".concat(maxLength, " items");
|
|
36
|
-
},
|
|
37
|
-
length: (wantedLength, value, message) => {
|
|
38
|
-
if (!value || value.length === wantedLength) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return message || "Must have exactly ".concat(wantedLength, " items");
|
|
43
|
-
},
|
|
44
|
-
presence: (flag, value, message) => {
|
|
45
|
-
if (flag === 'required' && !value) {
|
|
46
|
-
return message || 'Required';
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return true;
|
|
50
|
-
},
|
|
51
|
-
valid: (allowedValues, values, message) => {
|
|
52
|
-
var valueType = typeof values;
|
|
53
|
-
|
|
54
|
-
if (valueType === 'undefined') {
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
var paths = [];
|
|
59
|
-
|
|
60
|
-
var _loop = function _loop(i) {
|
|
61
|
-
var value = values[i];
|
|
62
|
-
|
|
63
|
-
if (allowedValues.some(expected => (0, _deepEquals.default)(expected, value))) {
|
|
64
|
-
return "continue";
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
var pathSegment = value && value._key ? {
|
|
68
|
-
_key: value._key
|
|
69
|
-
} : i;
|
|
70
|
-
paths.push([pathSegment]);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
for (var i = 0; i < values.length; i++) {
|
|
74
|
-
var _ret = _loop(i);
|
|
75
|
-
|
|
76
|
-
if (_ret === "continue") continue;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return paths.length === 0 ? true : new _ValidationError.default(message || 'Value did not match any allowed values', {
|
|
80
|
-
paths
|
|
81
|
-
});
|
|
82
|
-
},
|
|
83
|
-
unique: (_unused, value, message) => {
|
|
84
|
-
var dupeIndices = [];
|
|
85
|
-
|
|
86
|
-
if (!value) {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
for (var x = 0; x < value.length; x++) {
|
|
91
|
-
for (var y = x + 1; y < value.length; y++) {
|
|
92
|
-
var itemA = value[x];
|
|
93
|
-
var itemB = value[y];
|
|
94
|
-
|
|
95
|
-
if (!(0, _deepEquals.default)(itemA, itemB)) {
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (dupeIndices.indexOf(x) === -1) {
|
|
100
|
-
dupeIndices.push(x);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (dupeIndices.indexOf(y) === -1) {
|
|
104
|
-
dupeIndices.push(y);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
var paths = dupeIndices.map(idx => {
|
|
110
|
-
var item = value[idx];
|
|
111
|
-
var pathSegment = item && item._key ? {
|
|
112
|
-
_key: item._key
|
|
113
|
-
} : idx;
|
|
114
|
-
return [pathSegment];
|
|
115
|
-
});
|
|
116
|
-
return dupeIndices.length > 0 ? new _ValidationError.default(message || "Can't be a duplicate", {
|
|
117
|
-
paths
|
|
118
|
-
}) : true;
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
var _default = arrayValidators;
|
|
123
|
-
exports.default = _default;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _genericValidator = _interopRequireDefault(require("./genericValidator"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
-
|
|
14
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
15
|
-
|
|
16
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
-
|
|
18
|
-
var booleanValidators = _objectSpread(_objectSpread({}, _genericValidator.default), {}, {
|
|
19
|
-
presence: (flag, value, message) => {
|
|
20
|
-
if (flag === 'required' && typeof value !== 'boolean') {
|
|
21
|
-
return message || 'Required';
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
var _default = booleanValidators;
|
|
29
|
-
exports.default = _default;
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
exports.isRecord = isRecord;
|
|
8
|
-
|
|
9
|
-
var _format = _interopRequireDefault(require("date-fns/format"));
|
|
10
|
-
|
|
11
|
-
var _genericValidator = _interopRequireDefault(require("./genericValidator"));
|
|
12
|
-
|
|
13
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
|
|
15
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
-
|
|
17
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
|
-
|
|
19
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
|
-
|
|
21
|
-
function isRecord(obj) {
|
|
22
|
-
return typeof obj === 'object' && obj !== null && !Array.isArray(obj);
|
|
23
|
-
} // eslint-disable-next-line no-useless-escape
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var isoDate = /^(?:[-+]\d{2})?(?:\d{4}(?!\d{2}\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\1(?:[12]\d|0[1-9]|3[01]))?|W(?:[0-4]\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[1-6])))(?![T]$|[T][\d]+Z$)(?:[T\s](?:(?:(?:[01]\d|2[0-3])(?:(:?)[0-5]\d)?|24\:?00)(?:[.,]\d+(?!:))?)(?:\2[0-5]\d(?:[.,]\d+)?)?(?:[Z]|(?:[+-])(?:[01]\d|2[0-3])(?::?[0-5]\d)?)?)?)?$/; // eslint-disable-next-line no-warning-comments
|
|
27
|
-
// TODO (eventually): move these to schema type package
|
|
28
|
-
|
|
29
|
-
var getFormattedDate = function getFormattedDate() {
|
|
30
|
-
var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
31
|
-
var value = arguments.length > 1 ? arguments[1] : undefined;
|
|
32
|
-
var options = arguments.length > 2 ? arguments[2] : undefined;
|
|
33
|
-
var format = 'yyyy-MM-dd';
|
|
34
|
-
|
|
35
|
-
if (options && options.dateFormat) {
|
|
36
|
-
format = options.dateFormat;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (type === 'date') {
|
|
40
|
-
// If the type is date only
|
|
41
|
-
return (0, _format.default)(new Date(value), format);
|
|
42
|
-
} // If the type is datetime
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (options && options.timeFormat) {
|
|
46
|
-
format += " ".concat(options.timeFormat);
|
|
47
|
-
} else {
|
|
48
|
-
format += ' HH:mm';
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return (0, _format.default)(new Date(value), format);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
function parseDate(date) {
|
|
55
|
-
var throwOnError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
56
|
-
if (!date) return null;
|
|
57
|
-
if (date === 'now') return new Date(); // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
-
|
|
59
|
-
var parsed = new Date(date);
|
|
60
|
-
var isInvalid = isNaN(parsed.getTime());
|
|
61
|
-
|
|
62
|
-
if (isInvalid && throwOnError) {
|
|
63
|
-
throw new Error("Unable to parse \"".concat(date, "\" to a date"));
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return isInvalid ? null : parsed;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var dateValidators = _objectSpread(_objectSpread({}, _genericValidator.default), {}, {
|
|
70
|
-
type: (_unused, value, message) => {
|
|
71
|
-
var strVal = "".concat(value);
|
|
72
|
-
|
|
73
|
-
if (!strVal || isoDate.test(value)) {
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return message || 'Must be a valid ISO-8601 formatted date string';
|
|
78
|
-
},
|
|
79
|
-
min: (minDate, value, message, context) => {
|
|
80
|
-
var dateVal = parseDate(value);
|
|
81
|
-
|
|
82
|
-
if (!dateVal) {
|
|
83
|
-
return true; // `type()` should catch parse errors
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (!value || dateVal >= parseDate(minDate, true)) {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (!context.type) {
|
|
91
|
-
throw new Error("`type` was not provided in validation context.");
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
var dateTimeOptions = isRecord(context.type.options) ? context.type.options : {};
|
|
95
|
-
var date = getFormattedDate(context.type.name, minDate, dateTimeOptions);
|
|
96
|
-
return message || "Must be at or after ".concat(date);
|
|
97
|
-
},
|
|
98
|
-
max: (maxDate, value, message, context) => {
|
|
99
|
-
var dateVal = parseDate(value);
|
|
100
|
-
|
|
101
|
-
if (!dateVal) {
|
|
102
|
-
return true; // `type()` should catch parse errors
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
if (!value || dateVal <= parseDate(maxDate, true)) {
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
if (!context.type) {
|
|
110
|
-
throw new Error("`type` was not provided in validation context.");
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
var dateTimeOptions = isRecord(context.type.options) ? context.type.options : {};
|
|
114
|
-
var date = getFormattedDate(context.type.name, maxDate, dateTimeOptions);
|
|
115
|
-
return message || "Must be at or before ".concat(date);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
var _default = dateValidators;
|
|
120
|
-
exports.default = _default;
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _typeString = _interopRequireDefault(require("../util/typeString"));
|
|
9
|
-
|
|
10
|
-
var _deepEquals = _interopRequireDefault(require("../util/deepEquals"));
|
|
11
|
-
|
|
12
|
-
var _pathToString = _interopRequireDefault(require("../util/pathToString"));
|
|
13
|
-
|
|
14
|
-
var _ValidationError = _interopRequireDefault(require("../ValidationError"));
|
|
15
|
-
|
|
16
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
19
|
-
|
|
20
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
21
|
-
|
|
22
|
-
var SLOW_VALIDATOR_TIMEOUT = 5000;
|
|
23
|
-
|
|
24
|
-
var formatValidationErrors = options => {
|
|
25
|
-
var message;
|
|
26
|
-
|
|
27
|
-
if (options.message) {
|
|
28
|
-
message = options.message;
|
|
29
|
-
} else if (options.results.length === 1) {
|
|
30
|
-
var _options$results$;
|
|
31
|
-
|
|
32
|
-
message = (_options$results$ = options.results[0]) === null || _options$results$ === void 0 ? void 0 : _options$results$.item.message;
|
|
33
|
-
} else {
|
|
34
|
-
message = "[".concat(options.results.map(err => err.item.message).join(" - ".concat(options.operation, " - ")), "]");
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return new _ValidationError.default(message, {
|
|
38
|
-
children: options.results.length > 1 ? options.results : undefined,
|
|
39
|
-
operation: options.operation
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
var genericValidators = {
|
|
44
|
-
type: (expected, value, message) => {
|
|
45
|
-
var actualType = (0, _typeString.default)(value);
|
|
46
|
-
|
|
47
|
-
if (actualType !== expected && actualType !== 'undefined') {
|
|
48
|
-
return message || "Expected type \"".concat(expected, "\", got \"").concat(actualType, "\"");
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return true;
|
|
52
|
-
},
|
|
53
|
-
presence: (expected, value, message) => {
|
|
54
|
-
if (value === undefined && expected === 'required') {
|
|
55
|
-
return message || 'Value is required';
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return true;
|
|
59
|
-
},
|
|
60
|
-
all: function () {
|
|
61
|
-
var _all = _asyncToGenerator(function* (children, value, message, context) {
|
|
62
|
-
var resolved = yield Promise.all(children.map(child => child.validate(value, context)));
|
|
63
|
-
var results = resolved.flat();
|
|
64
|
-
if (!results.length) return true;
|
|
65
|
-
return formatValidationErrors({
|
|
66
|
-
message,
|
|
67
|
-
results,
|
|
68
|
-
operation: 'AND'
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
function all(_x, _x2, _x3, _x4) {
|
|
73
|
-
return _all.apply(this, arguments);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return all;
|
|
77
|
-
}(),
|
|
78
|
-
either: function () {
|
|
79
|
-
var _either = _asyncToGenerator(function* (children, value, message, context) {
|
|
80
|
-
var resolved = yield Promise.all(children.map(child => child.validate(value, context)));
|
|
81
|
-
var results = resolved.flat(); // Read: There is at least one rule that matched
|
|
82
|
-
|
|
83
|
-
if (results.length < children.length) return true;
|
|
84
|
-
return formatValidationErrors({
|
|
85
|
-
message,
|
|
86
|
-
results,
|
|
87
|
-
operation: 'OR'
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
function either(_x5, _x6, _x7, _x8) {
|
|
92
|
-
return _either.apply(this, arguments);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return either;
|
|
96
|
-
}(),
|
|
97
|
-
valid: (allowedValues, actual, message) => {
|
|
98
|
-
var valueType = typeof actual;
|
|
99
|
-
|
|
100
|
-
if (valueType === 'undefined') {
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
var value = (valueType === 'number' || valueType === 'string') && "".concat(actual);
|
|
105
|
-
var strValue = value && value.length > 30 ? "".concat(value.slice(0, 30), "\u2026") : value;
|
|
106
|
-
var defaultMessage = value ? "Value \"".concat(strValue, "\" did not match any allowed values") : 'Value did not match any allowed values';
|
|
107
|
-
return allowedValues.some(expected => (0, _deepEquals.default)(expected, actual)) ? true : message || defaultMessage;
|
|
108
|
-
},
|
|
109
|
-
custom: function () {
|
|
110
|
-
var _custom = _asyncToGenerator(function* (fn, value, message, context) {
|
|
111
|
-
var slowTimer = setTimeout(() => {
|
|
112
|
-
// eslint-disable-next-line no-console
|
|
113
|
-
console.warn("Custom validator at ".concat((0, _pathToString.default)(context.path), " has taken more than ").concat(SLOW_VALIDATOR_TIMEOUT, "ms to respond"));
|
|
114
|
-
}, SLOW_VALIDATOR_TIMEOUT);
|
|
115
|
-
var result;
|
|
116
|
-
|
|
117
|
-
try {
|
|
118
|
-
result = yield fn(value, context);
|
|
119
|
-
} finally {
|
|
120
|
-
clearTimeout(slowTimer);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (typeof result === 'string') return message || result;
|
|
124
|
-
return result;
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
function custom(_x9, _x10, _x11, _x12) {
|
|
128
|
-
return _custom.apply(this, arguments);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return custom;
|
|
132
|
-
}()
|
|
133
|
-
};
|
|
134
|
-
var _default = genericValidators;
|
|
135
|
-
exports.default = _default;
|