1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | exports.schemaPrimitiveValues = {
|
5 | boolean: false,
|
6 | requiredBoolean: true,
|
7 | string: '',
|
8 | requiredString: 'REQUIRED',
|
9 | };
|
10 | var schemaRequiredValues = new Set([
|
11 | exports.schemaPrimitiveValues.requiredBoolean,
|
12 | exports.schemaPrimitiveValues.requiredString,
|
13 | ]);
|
14 | function checkSchemaMatch(value, schema, errors) {
|
15 | if (value === undefined) {
|
16 | errors.push('Root value is undefined');
|
17 | return false;
|
18 | }
|
19 | return checkSchemaMatchRecursively(value, schema, '', errors);
|
20 | }
|
21 | exports.checkSchemaMatch = checkSchemaMatch;
|
22 |
|
23 | function checkSchemaMatchRecursively(value, schema, prefix, errors) {
|
24 | if (typeof schema === 'boolean' || typeof schema === 'string') {
|
25 | var schemeType = typeof schema;
|
26 | if (value === undefined && schemaRequiredValues.has(schema)) {
|
27 | errors.push("Value for \"" + prefix + "\" is required and must have type \"" + schemeType + "\"");
|
28 | return false;
|
29 | }
|
30 | var valueType = typeof value;
|
31 | if (value !== undefined && typeof schema !== valueType) {
|
32 | errors.push("Type of values for \"" + prefix + "\" is not the same, expected=" + schemeType + ", actual=" + valueType);
|
33 | return false;
|
34 | }
|
35 | return true;
|
36 | }
|
37 | if (value === undefined) {
|
38 | return true;
|
39 | }
|
40 | if (Array.isArray(schema)) {
|
41 | if (!Array.isArray(value)) {
|
42 | return false;
|
43 | }
|
44 | var result_1 = true;
|
45 | for (var i = 0; i < value.length; ++i) {
|
46 | if (!checkSchemaMatchRecursively(value[i], schema[0], prefix + "[" + i + "]", errors)) {
|
47 | result_1 = false;
|
48 | }
|
49 | }
|
50 | return result_1;
|
51 | }
|
52 | var result = true;
|
53 | for (var _i = 0, _a = Object.keys(value); _i < _a.length; _i++) {
|
54 | var valueKey = _a[_i];
|
55 | if (schema[valueKey] === undefined) {
|
56 | errors.push("Exceeded property \"" + valueKey + "\" found in " + (prefix.length === 0 ? 'the root' : prefix));
|
57 | result = false;
|
58 | }
|
59 | }
|
60 | for (var _b = 0, _c = Object.keys(schema); _b < _c.length; _b++) {
|
61 | var schemaKey = _c[_b];
|
62 | var isSubValueSchemeMatched = checkSchemaMatchRecursively(value[schemaKey], schema[schemaKey], prefix.length === 0 ? schemaKey : prefix + "." + schemaKey, errors);
|
63 | result = result && isSubValueSchemeMatched;
|
64 | }
|
65 | return result;
|
66 | }
|