@sanity/validation 3.0.0-dev-preview.20 → 3.0.0-dev-preview.22
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/lib/dts/src/index.d.ts +36 -13
- package/lib/index.esm.js +1259 -0
- package/lib/index.esm.js.map +1 -0
- package/lib/index.js +1253 -1310
- package/lib/index.js.map +1 -1
- package/package.json +23 -18
- package/src/index.ts +3 -1
- package/src/util/requestIdleCallback.ts +31 -0
- package/src/validateDocument.test.ts +0 -80
- package/src/validateDocument.ts +84 -45
- package/src/validators/slugValidator.ts +16 -2
- package/lib/dts/src/Rule.d.ts +0 -4
- package/lib/dts/src/Rule.d.ts.map +0 -1
- package/lib/dts/src/Rule.js +0 -336
- package/lib/dts/src/Rule.js.map +0 -1
- package/lib/dts/src/ValidationError.d.ts +0 -4
- package/lib/dts/src/ValidationError.d.ts.map +0 -1
- package/lib/dts/src/ValidationError.js +0 -18
- package/lib/dts/src/ValidationError.js.map +0 -1
- package/lib/dts/src/index.d.ts.map +0 -1
- package/lib/dts/src/index.js +0 -7
- package/lib/dts/src/index.js.map +0 -1
- package/lib/dts/src/inferFromSchema.d.ts +0 -4
- package/lib/dts/src/inferFromSchema.d.ts.map +0 -1
- package/lib/dts/src/inferFromSchema.js +0 -14
- package/lib/dts/src/inferFromSchema.js.map +0 -1
- package/lib/dts/src/inferFromSchemaType.d.ts +0 -5
- package/lib/dts/src/inferFromSchemaType.d.ts.map +0 -1
- package/lib/dts/src/inferFromSchemaType.js +0 -33
- package/lib/dts/src/inferFromSchemaType.js.map +0 -1
- package/lib/dts/src/util/convertToValidationMarker.d.ts +0 -6
- package/lib/dts/src/util/convertToValidationMarker.d.ts.map +0 -1
- package/lib/dts/src/util/convertToValidationMarker.js +0 -51
- package/lib/dts/src/util/convertToValidationMarker.js.map +0 -1
- package/lib/dts/src/util/deepEquals.d.ts +0 -6
- package/lib/dts/src/util/deepEquals.d.ts.map +0 -1
- package/lib/dts/src/util/deepEquals.js +0 -65
- package/lib/dts/src/util/deepEquals.js.map +0 -1
- package/lib/dts/src/util/escapeRegex.d.ts +0 -3
- package/lib/dts/src/util/escapeRegex.d.ts.map +0 -1
- package/lib/dts/src/util/escapeRegex.js +0 -6
- package/lib/dts/src/util/escapeRegex.js.map +0 -1
- package/lib/dts/src/util/normalizeValidationRules.d.ts +0 -6
- package/lib/dts/src/util/normalizeValidationRules.d.ts.map +0 -1
- package/lib/dts/src/util/normalizeValidationRules.js +0 -104
- package/lib/dts/src/util/normalizeValidationRules.js.map +0 -1
- package/lib/dts/src/util/normalizeValidationRules.test.d.ts +0 -2
- package/lib/dts/src/util/normalizeValidationRules.test.d.ts.map +0 -1
- package/lib/dts/src/util/normalizeValidationRules.test.js +0 -150
- package/lib/dts/src/util/normalizeValidationRules.test.js.map +0 -1
- package/lib/dts/src/util/pathToString.d.ts +0 -3
- package/lib/dts/src/util/pathToString.d.ts.map +0 -1
- package/lib/dts/src/util/pathToString.js +0 -18
- package/lib/dts/src/util/pathToString.js.map +0 -1
- package/lib/dts/src/util/typeString.d.ts +0 -2
- package/lib/dts/src/util/typeString.d.ts.map +0 -1
- package/lib/dts/src/util/typeString.js +0 -23
- package/lib/dts/src/util/typeString.js.map +0 -1
- package/lib/dts/src/util/typeString.test.d.ts +0 -2
- package/lib/dts/src/util/typeString.test.d.ts.map +0 -1
- package/lib/dts/src/util/typeString.test.js +0 -24
- package/lib/dts/src/util/typeString.test.js.map +0 -1
- package/lib/dts/src/validateDocument.d.ts +0 -25
- package/lib/dts/src/validateDocument.d.ts.map +0 -1
- package/lib/dts/src/validateDocument.js +0 -165
- package/lib/dts/src/validateDocument.js.map +0 -1
- package/lib/dts/src/validateDocument.test.d.ts +0 -2
- package/lib/dts/src/validateDocument.test.d.ts.map +0 -1
- package/lib/dts/src/validateDocument.test.js +0 -717
- package/lib/dts/src/validateDocument.test.js.map +0 -1
- package/lib/dts/src/validators/arrayValidator.d.ts +0 -4
- package/lib/dts/src/validators/arrayValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/arrayValidator.js +0 -79
- package/lib/dts/src/validators/arrayValidator.js.map +0 -1
- package/lib/dts/src/validators/booleanValidator.d.ts +0 -4
- package/lib/dts/src/validators/booleanValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/booleanValidator.js +0 -12
- package/lib/dts/src/validators/booleanValidator.js.map +0 -1
- package/lib/dts/src/validators/dateValidator.d.ts +0 -5
- package/lib/dts/src/validators/dateValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/dateValidator.js +0 -83
- package/lib/dts/src/validators/dateValidator.js.map +0 -1
- package/lib/dts/src/validators/genericValidator.d.ts +0 -4
- package/lib/dts/src/validators/genericValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/genericValidator.js +0 -93
- package/lib/dts/src/validators/genericValidator.js.map +0 -1
- package/lib/dts/src/validators/numberValidator.d.ts +0 -4
- package/lib/dts/src/validators/numberValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/numberValidator.js +0 -47
- package/lib/dts/src/validators/numberValidator.js.map +0 -1
- package/lib/dts/src/validators/objectValidator.d.ts +0 -4
- package/lib/dts/src/validators/objectValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/objectValidator.js +0 -48
- package/lib/dts/src/validators/objectValidator.js.map +0 -1
- package/lib/dts/src/validators/slugValidator.d.ts +0 -9
- package/lib/dts/src/validators/slugValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/slugValidator.js +0 -83
- package/lib/dts/src/validators/slugValidator.js.map +0 -1
- package/lib/dts/src/validators/stringValidator.d.ts +0 -4
- package/lib/dts/src/validators/stringValidator.d.ts.map +0 -1
- package/lib/dts/src/validators/stringValidator.js +0 -94
- package/lib/dts/src/validators/stringValidator.js.map +0 -1
- package/lib/dts/test/array.test.d.ts +0 -2
- package/lib/dts/test/array.test.d.ts.map +0 -1
- package/lib/dts/test/array.test.js +0 -55
- package/lib/dts/test/array.test.js.map +0 -1
- package/lib/dts/test/children.test.d.ts +0 -2
- package/lib/dts/test/children.test.d.ts.map +0 -1
- package/lib/dts/test/children.test.js +0 -70
- package/lib/dts/test/children.test.js.map +0 -1
- package/lib/dts/test/createSchema.d.ts +0 -6
- package/lib/dts/test/createSchema.d.ts.map +0 -1
- package/lib/dts/test/createSchema.js +0 -19
- package/lib/dts/test/createSchema.js.map +0 -1
- package/lib/dts/test/generics.test.d.ts +0 -2
- package/lib/dts/test/generics.test.d.ts.map +0 -1
- package/lib/dts/test/generics.test.js +0 -60
- package/lib/dts/test/generics.test.js.map +0 -1
- package/lib/dts/test/infer.test.d.ts +0 -2
- package/lib/dts/test/infer.test.d.ts.map +0 -1
- package/lib/dts/test/infer.test.js +0 -244
- package/lib/dts/test/infer.test.js.map +0 -1
- package/lib/dts/test/mocks/mockSanityClient.d.ts +0 -6
- package/lib/dts/test/mocks/mockSanityClient.d.ts.map +0 -1
- package/lib/dts/test/mocks/mockSanityClient.js +0 -8
- package/lib/dts/test/mocks/mockSanityClient.js.map +0 -1
- package/lib/dts/test/nullExport.d.ts +0 -3
- package/lib/dts/test/nullExport.d.ts.map +0 -1
- package/lib/dts/test/nullExport.js +0 -4
- package/lib/dts/test/nullExport.js.map +0 -1
- package/lib/dts/test/numbers.test.d.ts +0 -2
- package/lib/dts/test/numbers.test.d.ts.map +0 -1
- package/lib/dts/test/numbers.test.js +0 -57
- package/lib/dts/test/numbers.test.js.map +0 -1
- package/lib/dts/test/strings.test.d.ts +0 -2
- package/lib/dts/test/strings.test.d.ts.map +0 -1
- package/lib/dts/test/strings.test.js +0 -100
- package/lib/dts/test/strings.test.js.map +0 -1
- package/lib/dts/tsconfig.lib.tsbuildinfo +0 -1
- package/lib/dts/tsconfig.tsbuildinfo +0 -1
- package/lib/index.cjs +0 -1341
- package/lib/index.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"escapeRegex.d.ts","sourceRoot":"","sources":["../../../../src/util/escapeRegex.ts"],"names":[],"mappings":"iCACwB,MAAM,KAAG,MAAM;AAAvC,wBAGC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"escapeRegex.js","sourceRoot":"","sources":["../../../../src/util/escapeRegex.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,eAAe,CAAC,MAAc,EAAU,EAAE;IACxC,8BAA8B;IAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAA;AAC9E,CAAC,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { SchemaType, Rule } from '@sanity/types';
|
|
2
|
-
/**
|
|
3
|
-
* Takes in `SchemaValidationValue` and returns an array of `Rule` instances.
|
|
4
|
-
*/
|
|
5
|
-
export default function normalizeValidationRules(typeDef: SchemaType | undefined): Rule[];
|
|
6
|
-
//# sourceMappingURL=normalizeValidationRules.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeValidationRules.d.ts","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAqB,MAAM,eAAe,CAAA;AA6ElE;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,EAAE,CAqCxF"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import RuleClass from '../Rule';
|
|
2
|
-
import { slugValidator } from '../validators/slugValidator';
|
|
3
|
-
const ruleConstraintTypes = {
|
|
4
|
-
array: true,
|
|
5
|
-
boolean: true,
|
|
6
|
-
date: true,
|
|
7
|
-
number: true,
|
|
8
|
-
object: true,
|
|
9
|
-
string: true,
|
|
10
|
-
};
|
|
11
|
-
const isRuleConstraint = (typeString) => typeString in ruleConstraintTypes;
|
|
12
|
-
function getTypeChain(type, visited) {
|
|
13
|
-
if (!type)
|
|
14
|
-
return [];
|
|
15
|
-
if (visited.has(type))
|
|
16
|
-
return [];
|
|
17
|
-
visited.add(type);
|
|
18
|
-
const next = type.type ? getTypeChain(type.type, visited) : [];
|
|
19
|
-
return [...next, type];
|
|
20
|
-
}
|
|
21
|
-
function baseRuleReducer(inputRule, type) {
|
|
22
|
-
let baseRule = inputRule;
|
|
23
|
-
if (isRuleConstraint(type.jsonType)) {
|
|
24
|
-
baseRule = baseRule.type(type.jsonType);
|
|
25
|
-
}
|
|
26
|
-
const typeOptionsList =
|
|
27
|
-
// if type.options is truthy
|
|
28
|
-
type?.options &&
|
|
29
|
-
// and type.options is an object (non-null from the previous)
|
|
30
|
-
typeof type.options === 'object' &&
|
|
31
|
-
// and if `list` is in options
|
|
32
|
-
'list' in type.options &&
|
|
33
|
-
// then finally access the list
|
|
34
|
-
type.options.list;
|
|
35
|
-
if (Array.isArray(typeOptionsList)) {
|
|
36
|
-
baseRule = baseRule.valid(typeOptionsList.map((option) => extractValueFromListOption(option, type)));
|
|
37
|
-
}
|
|
38
|
-
if (type.name === 'datetime')
|
|
39
|
-
return baseRule.type('Date');
|
|
40
|
-
if (type.name === 'date')
|
|
41
|
-
return baseRule.type('Date');
|
|
42
|
-
if (type.name === 'url')
|
|
43
|
-
return baseRule.uri();
|
|
44
|
-
if (type.name === 'slug')
|
|
45
|
-
return baseRule.custom(slugValidator);
|
|
46
|
-
if (type.name === 'reference')
|
|
47
|
-
return baseRule.reference();
|
|
48
|
-
if (type.name === 'email')
|
|
49
|
-
return baseRule.email();
|
|
50
|
-
return baseRule;
|
|
51
|
-
}
|
|
52
|
-
function hasValueField(typeDef) {
|
|
53
|
-
if (!typeDef)
|
|
54
|
-
return false;
|
|
55
|
-
if (!('fields' in typeDef) && typeDef.type)
|
|
56
|
-
return hasValueField(typeDef.type);
|
|
57
|
-
if (!('fields' in typeDef))
|
|
58
|
-
return false;
|
|
59
|
-
if (!Array.isArray(typeDef.fields))
|
|
60
|
-
return false;
|
|
61
|
-
return typeDef.fields.some((field) => field.name === 'value');
|
|
62
|
-
}
|
|
63
|
-
function extractValueFromListOption(option, typeDef) {
|
|
64
|
-
// If you define a `list` option with object items, where the item has a `value` field,
|
|
65
|
-
// we don't want to treat that as the value but rather the surrounding object
|
|
66
|
-
// This differs from the case where you have a title/value pair setup for a string/number, for instance
|
|
67
|
-
if (typeDef.jsonType === 'object' && hasValueField(typeDef))
|
|
68
|
-
return option;
|
|
69
|
-
return option.value === undefined
|
|
70
|
-
? option
|
|
71
|
-
: option.value;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Takes in `SchemaValidationValue` and returns an array of `Rule` instances.
|
|
75
|
-
*/
|
|
76
|
-
export default function normalizeValidationRules(typeDef) {
|
|
77
|
-
if (!typeDef) {
|
|
78
|
-
return [];
|
|
79
|
-
}
|
|
80
|
-
const validation = typeDef.validation;
|
|
81
|
-
if (Array.isArray(validation)) {
|
|
82
|
-
return validation.flatMap((i) => normalizeValidationRules({
|
|
83
|
-
...typeDef,
|
|
84
|
-
validation: i,
|
|
85
|
-
}));
|
|
86
|
-
}
|
|
87
|
-
if (validation instanceof RuleClass) {
|
|
88
|
-
return [validation];
|
|
89
|
-
}
|
|
90
|
-
const baseRule =
|
|
91
|
-
// using an object + Object.values to de-dupe the type chain by type name
|
|
92
|
-
Object.values(getTypeChain(typeDef, new Set()).reduce((acc, type) => {
|
|
93
|
-
acc[type.name] = type;
|
|
94
|
-
return acc;
|
|
95
|
-
}, {})).reduce(baseRuleReducer, new RuleClass(typeDef));
|
|
96
|
-
if (!validation) {
|
|
97
|
-
return [baseRule];
|
|
98
|
-
}
|
|
99
|
-
return normalizeValidationRules({
|
|
100
|
-
...typeDef,
|
|
101
|
-
validation: validation(baseRule),
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=normalizeValidationRules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeValidationRules.js","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeValidationRules.test.d.ts","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import RuleClass from '../Rule';
|
|
2
|
-
import normalizeValidationRules from './normalizeValidationRules';
|
|
3
|
-
describe('normalizeValidationRules', () => {
|
|
4
|
-
// see `infer.test.ts` for more related tests.
|
|
5
|
-
// note the Schema.compile runs this function indirectly via `inferFromSchema`
|
|
6
|
-
it('utilizes schema types to infer base rules', () => {
|
|
7
|
-
const coolNumberType = {
|
|
8
|
-
jsonType: 'number',
|
|
9
|
-
name: 'coolNumber',
|
|
10
|
-
};
|
|
11
|
-
const rules = normalizeValidationRules(coolNumberType);
|
|
12
|
-
expect(rules).toHaveLength(1);
|
|
13
|
-
const [rule] = rules;
|
|
14
|
-
expect(rule).toBeInstanceOf(RuleClass);
|
|
15
|
-
expect(rule._rules).toMatchObject([
|
|
16
|
-
{
|
|
17
|
-
constraint: 'Number',
|
|
18
|
-
flag: 'type',
|
|
19
|
-
},
|
|
20
|
-
]);
|
|
21
|
-
});
|
|
22
|
-
it('follows the type chain to determine the base rule', () => {
|
|
23
|
-
const sickDatetime = {
|
|
24
|
-
type: {
|
|
25
|
-
type: {
|
|
26
|
-
jsonType: 'string',
|
|
27
|
-
},
|
|
28
|
-
name: 'datetime',
|
|
29
|
-
},
|
|
30
|
-
name: 'sickDatetime',
|
|
31
|
-
};
|
|
32
|
-
const rules = normalizeValidationRules(sickDatetime);
|
|
33
|
-
expect(rules).toHaveLength(1);
|
|
34
|
-
const [rule] = rules;
|
|
35
|
-
// type chain is applied from inner to outer so the resulting type should be
|
|
36
|
-
// date instead of string
|
|
37
|
-
expect(rule._rules).toMatchObject([
|
|
38
|
-
{
|
|
39
|
-
constraint: 'Date',
|
|
40
|
-
flag: 'type',
|
|
41
|
-
},
|
|
42
|
-
]);
|
|
43
|
-
});
|
|
44
|
-
it('converts a validation function to a rule instance', () => {
|
|
45
|
-
const coolStringType = {
|
|
46
|
-
jsonType: 'string',
|
|
47
|
-
name: 'coolString',
|
|
48
|
-
validation: (rule) => rule.uppercase(),
|
|
49
|
-
};
|
|
50
|
-
const rules = normalizeValidationRules(coolStringType);
|
|
51
|
-
expect(rules).toHaveLength(1);
|
|
52
|
-
const [rule] = rules;
|
|
53
|
-
expect(rule).toBeInstanceOf(RuleClass);
|
|
54
|
-
expect(rule._rules).toMatchObject([
|
|
55
|
-
{
|
|
56
|
-
constraint: 'String',
|
|
57
|
-
flag: 'type',
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
constraint: 'uppercase',
|
|
61
|
-
flag: 'stringCasing',
|
|
62
|
-
},
|
|
63
|
-
]);
|
|
64
|
-
});
|
|
65
|
-
it('converts falsy values to an empty array', () => {
|
|
66
|
-
expect(normalizeValidationRules(undefined)).toEqual([]);
|
|
67
|
-
});
|
|
68
|
-
it('converts schema list options with titles to `rule.valid` constraints', () => {
|
|
69
|
-
const stringTypeWithOptions = {
|
|
70
|
-
jsonType: 'string',
|
|
71
|
-
name: 'stringTypeWithOptions',
|
|
72
|
-
options: {
|
|
73
|
-
list: [
|
|
74
|
-
{ title: 'Blue', value: 'blue' },
|
|
75
|
-
{ title: 'Red', value: 'red' },
|
|
76
|
-
],
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
const rules = normalizeValidationRules(stringTypeWithOptions);
|
|
80
|
-
expect(rules).toHaveLength(1);
|
|
81
|
-
const [rule] = rules;
|
|
82
|
-
expect(rule).toBeInstanceOf(RuleClass);
|
|
83
|
-
expect(rule._rules).toMatchObject([
|
|
84
|
-
{
|
|
85
|
-
constraint: 'String',
|
|
86
|
-
flag: 'type',
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
constraint: ['blue', 'red'],
|
|
90
|
-
flag: 'valid',
|
|
91
|
-
},
|
|
92
|
-
]);
|
|
93
|
-
});
|
|
94
|
-
it('converts schema list options with strings only to `rule.valid` constraints', () => {
|
|
95
|
-
const stringTypeWithOptions = {
|
|
96
|
-
jsonType: 'string',
|
|
97
|
-
name: 'stringTypeWithOptions',
|
|
98
|
-
options: {
|
|
99
|
-
list: ['blue', 'red'],
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
const rules = normalizeValidationRules(stringTypeWithOptions);
|
|
103
|
-
expect(rules).toHaveLength(1);
|
|
104
|
-
const [rule] = rules;
|
|
105
|
-
expect(rule).toBeInstanceOf(RuleClass);
|
|
106
|
-
expect(rule._rules).toMatchObject([
|
|
107
|
-
{
|
|
108
|
-
constraint: 'String',
|
|
109
|
-
flag: 'type',
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
constraint: ['blue', 'red'],
|
|
113
|
-
flag: 'valid',
|
|
114
|
-
},
|
|
115
|
-
]);
|
|
116
|
-
});
|
|
117
|
-
it('converts arrays of validation', () => {
|
|
118
|
-
const coolNumberType = {
|
|
119
|
-
jsonType: 'number',
|
|
120
|
-
name: 'coolNumber',
|
|
121
|
-
validation: [(rule) => rule.greaterThan(3), RuleClass.number().lessThan(5)],
|
|
122
|
-
};
|
|
123
|
-
const rules = normalizeValidationRules(coolNumberType);
|
|
124
|
-
expect(rules).toHaveLength(2);
|
|
125
|
-
const [first, second] = rules;
|
|
126
|
-
expect(first).toBeInstanceOf(RuleClass);
|
|
127
|
-
expect(first._rules).toMatchObject([
|
|
128
|
-
{
|
|
129
|
-
constraint: 'Number',
|
|
130
|
-
flag: 'type',
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
constraint: 3,
|
|
134
|
-
flag: 'greaterThan',
|
|
135
|
-
},
|
|
136
|
-
]);
|
|
137
|
-
expect(second).toBeInstanceOf(RuleClass);
|
|
138
|
-
expect(second._rules).toMatchObject([
|
|
139
|
-
{
|
|
140
|
-
constraint: 'Number',
|
|
141
|
-
flag: 'type',
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
constraint: 5,
|
|
145
|
-
flag: 'lessThan',
|
|
146
|
-
},
|
|
147
|
-
]);
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
//# sourceMappingURL=normalizeValidationRules.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeValidationRules.test.js","sourceRoot":"","sources":["../../../../src/util/normalizeValidationRules.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathToString.d.ts","sourceRoot":"","sources":["../../../../src/util/pathToString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAgB,MAAM,eAAe,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,IAAI,GAAE,IAAI,GAAG,SAAc,GAAG,MAAM,CAkBxE"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { isKeyedObject } from '@sanity/types';
|
|
2
|
-
export default function pathToString(path = []) {
|
|
3
|
-
return path.reduce((target, segment, i) => {
|
|
4
|
-
const segmentType = typeof segment;
|
|
5
|
-
if (segmentType === 'number') {
|
|
6
|
-
return `${target}[${segment}]`;
|
|
7
|
-
}
|
|
8
|
-
if (segmentType === 'string') {
|
|
9
|
-
const separator = i === 0 ? '' : '.';
|
|
10
|
-
return `${target}${separator}${segment}`;
|
|
11
|
-
}
|
|
12
|
-
if (isKeyedObject(segment)) {
|
|
13
|
-
return `${target}[_key=="${segment._key}"]`;
|
|
14
|
-
}
|
|
15
|
-
throw new Error(`Unsupported path segment "${segment}"`);
|
|
16
|
-
}, '');
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=pathToString.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pathToString.js","sourceRoot":"","sources":["../../../../src/util/pathToString.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,aAAa,EAAC,MAAM,eAAe,CAAA;AAEjD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,OAAyB,EAAE;IAC9D,OAAO,IAAI,CAAC,MAAM,CAAS,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QAChD,MAAM,WAAW,GAAG,OAAO,OAAO,CAAA;QAClC,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC5B,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,CAAA;SAC/B;QAED,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC5B,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;YACpC,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAAE,CAAA;SACzC;QAED,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,GAAG,MAAM,WAAW,OAAO,CAAC,IAAI,IAAI,CAAA;SAC5C;QAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAA;IAC1D,CAAC,EAAE,EAAE,CAAC,CAAA;AACR,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeString.d.ts","sourceRoot":"","sources":["../../../../src/util/typeString.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CASvD"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// this file was adapted from a previous dependency `type-of-is`
|
|
2
|
-
// https://github.com/stephenhandley/type-of-is/blob/7138a7e79f5af7c286bf8123f60843a91aaebf38/index.js
|
|
3
|
-
const _toString = {}.toString;
|
|
4
|
-
const builtIns = [Object, Function, Array, String, Boolean, Number, Date, RegExp, Error];
|
|
5
|
-
function isBuiltIn(_constructor) {
|
|
6
|
-
for (let i = 0; i < builtIns.length; i++) {
|
|
7
|
-
if (builtIns[i] === _constructor)
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
export default function typeString(obj) {
|
|
13
|
-
// [object Blah] -> Blah
|
|
14
|
-
const stringType = _toString.call(obj).slice(8, -1);
|
|
15
|
-
if (obj === null || obj === undefined)
|
|
16
|
-
return stringType.toLowerCase();
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
18
|
-
const constructorType = obj.constructor;
|
|
19
|
-
if (constructorType && !isBuiltIn(constructorType))
|
|
20
|
-
return constructorType.name;
|
|
21
|
-
return stringType;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=typeString.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeString.js","sourceRoot":"","sources":["../../../../src/util/typeString.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,sGAAsG;AACtG,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAA;AAE7B,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AAExF,SAAS,SAAS,CAAC,YAAqB;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY;YAAE,OAAO,IAAI,CAAA;KAC9C;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,GAAY;IAC7C,wBAAwB;IACxB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACnD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC,WAAW,EAAE,CAAA;IAEtE,wDAAwD;IACxD,MAAM,eAAe,GAAI,GAAc,CAAC,WAAW,CAAA;IACnD,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;QAAE,OAAO,eAAe,CAAC,IAAI,CAAA;IAC/E,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeString.test.d.ts","sourceRoot":"","sources":["../../../../src/util/typeString.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import typeString from './typeString';
|
|
2
|
-
describe('typeString', () => {
|
|
3
|
-
it('returns the a type string of built in types', () => {
|
|
4
|
-
expect(typeString({})).toBe('Object');
|
|
5
|
-
expect(typeString(function () {
|
|
6
|
-
// intentionally blank
|
|
7
|
-
})).toBe('Function');
|
|
8
|
-
expect(typeString(['hey'])).toBe('Array');
|
|
9
|
-
expect(typeString('some string')).toBe('String');
|
|
10
|
-
expect(typeString(false)).toBe('Boolean');
|
|
11
|
-
expect(typeString(5)).toBe('Number');
|
|
12
|
-
expect(typeString(new Date())).toBe('Date');
|
|
13
|
-
});
|
|
14
|
-
it('returns a type string string using the constructor', () => {
|
|
15
|
-
class ExampleClass {
|
|
16
|
-
}
|
|
17
|
-
expect(typeString(new ExampleClass())).toBe('ExampleClass');
|
|
18
|
-
});
|
|
19
|
-
it('returns a type string for null or undefined', () => {
|
|
20
|
-
expect(typeString(null)).toBe('null');
|
|
21
|
-
expect(typeString(undefined)).toBe('undefined');
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
//# sourceMappingURL=typeString.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeString.test.js","sourceRoot":"","sources":["../../../../src/util/typeString.test.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrC,MAAM,CACJ,UAAU,CAAC;YACT,sBAAsB;QACxB,CAAC,CAAC,CACH,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClB,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,YAAY;SAAG;QACrB,MAAM,CAAC,UAAU,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { SanityDocument, Schema, SchemaType, ValidationContext, ValidationMarker } from '@sanity/types';
|
|
2
|
-
import type { SanityClient } from '@sanity/client';
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export declare function resolveTypeForArrayItem(item: unknown, candidates: SchemaType[]): SchemaType | undefined;
|
|
7
|
-
export default function validateDocument(getClient: (options: {
|
|
8
|
-
apiVersion: string;
|
|
9
|
-
}) => SanityClient, doc: SanityDocument, schema: Schema, context?: Pick<ValidationContext, 'getDocumentExists'>): Promise<ValidationMarker[]>;
|
|
10
|
-
/**
|
|
11
|
-
* this is used make optional properties required by replacing optionals with
|
|
12
|
-
* `T[P] | undefined`. this is used to prevent errors in `validateItem` where
|
|
13
|
-
* an option from a previous invocation would be incorrectly passed down.
|
|
14
|
-
*
|
|
15
|
-
* https://medium.com/terria/typescript-transforming-optional-properties-to-required-properties-that-may-be-undefined-7482cb4e1585
|
|
16
|
-
*/
|
|
17
|
-
declare type ExplicitUndefined<T> = {
|
|
18
|
-
[P in keyof Required<T>]: Pick<T, P> extends Required<Pick<T, P>> ? T[P] : T[P] | undefined;
|
|
19
|
-
};
|
|
20
|
-
declare type ValidateItemOptions = {
|
|
21
|
-
value: unknown;
|
|
22
|
-
} & ExplicitUndefined<ValidationContext>;
|
|
23
|
-
export declare function validateItem({ value, type, path, parent, ...restOfContext }: ValidateItemOptions): Promise<ValidationMarker[]>;
|
|
24
|
-
export {};
|
|
25
|
-
//# sourceMappingURL=validateDocument.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateDocument.d.ts","sourceRoot":"","sources":["../../../src/validateDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,MAAM,EACN,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAMjB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAWhD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,UAAU,EAAE,UAAU,EAAE,GACvB,UAAU,GAAG,SAAS,CAiBxB;AAED,wBAA8B,gBAAgB,CAC5C,SAAS,EAAE,CAAC,OAAO,EAAE;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,KAAK,YAAY,EAC1D,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,GACrD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAuD7B;AAED;;;;;;GAMG;AACH,aAAK,iBAAiB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAC5F,CAAA;AAED,aAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;CACf,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;AAExC,wBAAsB,YAAY,CAAC,EACjC,KAAK,EACL,IAAI,EACJ,IAAS,EACT,MAAM,EACN,GAAG,aAAa,EACjB,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4HnD"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { isKeyedObject, isTypedObject, isBlock, isBlockSchemaType, isSpanSchemaType, } from '@sanity/types';
|
|
2
|
-
import { uniqBy } from 'lodash';
|
|
3
|
-
import typeString from './util/typeString';
|
|
4
|
-
import ValidationErrorClass from './ValidationError';
|
|
5
|
-
import normalizeValidationRules from './util/normalizeValidationRules';
|
|
6
|
-
const isRecord = (maybeRecord) => typeof maybeRecord === 'object' && maybeRecord !== null && !Array.isArray(maybeRecord);
|
|
7
|
-
const isNonNullable = (value) => value !== null && value !== undefined;
|
|
8
|
-
/**
|
|
9
|
-
* @internal
|
|
10
|
-
*/
|
|
11
|
-
export function resolveTypeForArrayItem(item, candidates) {
|
|
12
|
-
// if there is only one type available, assume that it's the correct one
|
|
13
|
-
if (candidates.length === 1)
|
|
14
|
-
return candidates[0];
|
|
15
|
-
const itemType = isTypedObject(item) && item._type;
|
|
16
|
-
const primitive = item === undefined || item === null || (!itemType && typeString(item).toLowerCase());
|
|
17
|
-
if (primitive && primitive !== 'object') {
|
|
18
|
-
return candidates.find((candidate) => candidate.jsonType === primitive);
|
|
19
|
-
}
|
|
20
|
-
return (candidates.find((candidate) => candidate.type?.name === itemType) ||
|
|
21
|
-
candidates.find((candidate) => candidate.name === itemType) ||
|
|
22
|
-
candidates.find((candidate) => candidate.name === 'object' && primitive === 'object'));
|
|
23
|
-
}
|
|
24
|
-
export default async function validateDocument(getClient, doc, schema, context) {
|
|
25
|
-
const documentType = schema.get(doc._type);
|
|
26
|
-
if (!documentType) {
|
|
27
|
-
console.warn('Schema type for object type "%s" not found, skipping validation', doc._type);
|
|
28
|
-
return [];
|
|
29
|
-
}
|
|
30
|
-
const client = getClient({ apiVersion: '2021-06-07' });
|
|
31
|
-
const validationOptions = {
|
|
32
|
-
client,
|
|
33
|
-
getClient,
|
|
34
|
-
schema,
|
|
35
|
-
parent: undefined,
|
|
36
|
-
value: doc,
|
|
37
|
-
path: [],
|
|
38
|
-
document: doc,
|
|
39
|
-
type: documentType,
|
|
40
|
-
getDocumentExists: context?.getDocumentExists,
|
|
41
|
-
};
|
|
42
|
-
// <TEMPORARY UGLY HACK TO PRINT DEPRECATION WARNINGS ON USE>
|
|
43
|
-
/* eslint-disable no-proto */
|
|
44
|
-
const wrappedClient = client;
|
|
45
|
-
validationOptions.client = [
|
|
46
|
-
...Object.keys(client),
|
|
47
|
-
...Object.keys(wrappedClient.__proto__),
|
|
48
|
-
].reduce((acc, key) => {
|
|
49
|
-
const original = Object.hasOwnProperty.call(client, key)
|
|
50
|
-
? wrappedClient[key]
|
|
51
|
-
: wrappedClient.__proto__[key];
|
|
52
|
-
return Object.defineProperty(acc, key, {
|
|
53
|
-
get() {
|
|
54
|
-
console.warn('`configContext.client` is deprecated and will be removed in the next release! Use `context.getClient({apiVersion: "2021-06-07"})` instead');
|
|
55
|
-
return original;
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}, {});
|
|
59
|
-
/* eslint-enable no-proto */
|
|
60
|
-
// </TEMPORARY UGLY HACK TO PRINT DEPRECATION WARNINGS ON USE>
|
|
61
|
-
try {
|
|
62
|
-
return await validateItem(validationOptions);
|
|
63
|
-
}
|
|
64
|
-
catch (err) {
|
|
65
|
-
console.error(err);
|
|
66
|
-
return [
|
|
67
|
-
{
|
|
68
|
-
level: 'error',
|
|
69
|
-
path: [],
|
|
70
|
-
item: new ValidationErrorClass(err?.message),
|
|
71
|
-
},
|
|
72
|
-
];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
export async function validateItem({ value, type, path = [], parent, ...restOfContext }) {
|
|
76
|
-
const rules = normalizeValidationRules(type);
|
|
77
|
-
// run validation for the current value
|
|
78
|
-
const selfChecks = rules.map((rule) => rule.validate(value, {
|
|
79
|
-
...restOfContext,
|
|
80
|
-
parent,
|
|
81
|
-
path,
|
|
82
|
-
type,
|
|
83
|
-
}));
|
|
84
|
-
// run validation for nested values (conditionally)
|
|
85
|
-
let nestedChecks = [];
|
|
86
|
-
const selfIsRequired = rules.some((rule) => rule.isRequired());
|
|
87
|
-
const shouldRunNestedObjectValidation =
|
|
88
|
-
// run nested validation for objects
|
|
89
|
-
type?.jsonType === 'object' &&
|
|
90
|
-
// if the value is truthy
|
|
91
|
-
(!!value || // or
|
|
92
|
-
// (the value is null or undefined) and the top-level value is required
|
|
93
|
-
((value === null || value === undefined) && selfIsRequired));
|
|
94
|
-
if (shouldRunNestedObjectValidation) {
|
|
95
|
-
const fieldTypes = type.fields.reduce((acc, field) => {
|
|
96
|
-
acc[field.name] = field.type;
|
|
97
|
-
return acc;
|
|
98
|
-
}, {});
|
|
99
|
-
// Validation for rules set at the object level with `Rule.fields({/* ... */})`
|
|
100
|
-
nestedChecks = nestedChecks.concat(rules
|
|
101
|
-
.map((rule) => rule._fieldRules)
|
|
102
|
-
.filter(isNonNullable)
|
|
103
|
-
.flatMap((fieldResults) => Object.entries(fieldResults))
|
|
104
|
-
.flatMap(([name, validation]) => {
|
|
105
|
-
const fieldType = fieldTypes[name];
|
|
106
|
-
return normalizeValidationRules({ ...fieldType, validation }).map((subRule) => {
|
|
107
|
-
const nestedValue = isRecord(value) ? value[name] : undefined;
|
|
108
|
-
return subRule.validate(nestedValue, {
|
|
109
|
-
...restOfContext,
|
|
110
|
-
parent: value,
|
|
111
|
-
path: path.concat(name),
|
|
112
|
-
type: fieldType,
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
}));
|
|
116
|
-
// Validation from each field's schema `validation: Rule => {/* ... */}` function
|
|
117
|
-
nestedChecks = nestedChecks.concat(type.fields.map((field) => validateItem({
|
|
118
|
-
...restOfContext,
|
|
119
|
-
parent: value,
|
|
120
|
-
value: isRecord(value) ? value[field.name] : undefined,
|
|
121
|
-
path: path.concat(field.name),
|
|
122
|
-
type: field.type,
|
|
123
|
-
})));
|
|
124
|
-
}
|
|
125
|
-
// note: unlike objects, arrays should not run nested validation for undefined
|
|
126
|
-
// values because we won't have a valid path to put a marker (i.e. missing the
|
|
127
|
-
// key or index in the path) and the downstream form builder won't have a
|
|
128
|
-
// valid target component
|
|
129
|
-
const shouldRunNestedValidationForArrays = type?.jsonType === 'array' && Array.isArray(value);
|
|
130
|
-
if (shouldRunNestedValidationForArrays) {
|
|
131
|
-
nestedChecks = nestedChecks.concat(value.map((item) => validateItem({
|
|
132
|
-
...restOfContext,
|
|
133
|
-
parent: value,
|
|
134
|
-
value: item,
|
|
135
|
-
path: path.concat(isKeyedObject(item) ? { _key: item._key } : value.indexOf(item)),
|
|
136
|
-
type: resolveTypeForArrayItem(item, type.of),
|
|
137
|
-
})));
|
|
138
|
-
}
|
|
139
|
-
// markDefs also do no run nested validation if the parent object is undefined
|
|
140
|
-
// for a similar reason to arrays
|
|
141
|
-
const shouldRunNestedValidationForMarkDefs = isBlock(value) && value.markDefs.length && isBlockSchemaType(type);
|
|
142
|
-
if (shouldRunNestedValidationForMarkDefs) {
|
|
143
|
-
const [spanChildrenField] = type.fields;
|
|
144
|
-
const spanType = spanChildrenField.type.of.find(isSpanSchemaType);
|
|
145
|
-
const annotations = (spanType?.annotations || []).reduce((map, annotationType) => {
|
|
146
|
-
map.set(annotationType.name, annotationType);
|
|
147
|
-
return map;
|
|
148
|
-
}, new Map());
|
|
149
|
-
nestedChecks = nestedChecks.concat(value.markDefs.map((markDef) => validateItem({
|
|
150
|
-
...restOfContext,
|
|
151
|
-
parent: value,
|
|
152
|
-
value: markDef,
|
|
153
|
-
path: path.concat(['markDefs', { _key: markDef._key }]),
|
|
154
|
-
type: annotations.get(markDef._type),
|
|
155
|
-
})));
|
|
156
|
-
}
|
|
157
|
-
const results = (await Promise.all([...selfChecks, ...nestedChecks])).flat();
|
|
158
|
-
// run `uniqBy` if `_fieldRules` are present because they can
|
|
159
|
-
// cause repeat markers
|
|
160
|
-
if (rules.some((rule) => rule._fieldRules)) {
|
|
161
|
-
return uniqBy(results, (rule) => JSON.stringify(rule));
|
|
162
|
-
}
|
|
163
|
-
return results;
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=validateDocument.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateDocument.js","sourceRoot":"","sources":["../../../src/validateDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,aAAa,EACb,aAAa,EACb,OAAO,EACP,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAA;AAE7B,OAAO,UAAU,MAAM,mBAAmB,CAAA;AAC1C,OAAO,oBAAoB,MAAM,mBAAmB,CAAA;AACpD,OAAO,wBAAwB,MAAM,iCAAiC,CAAA;AAEtE,MAAM,QAAQ,GAAG,CAAC,WAAoB,EAA0C,EAAE,CAChF,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;AAExF,MAAM,aAAa,GAAG,CAAI,KAAQ,EAA2B,EAAE,CAC7D,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;AAEvC;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAa,EACb,UAAwB;IAExB,wEAAwE;IACxE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;IAEjD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAA;IAClD,MAAM,SAAS,GACb,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IAEtF,IAAI,SAAS,IAAI,SAAS,KAAK,QAAQ,EAAE;QACvC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAA;KACxE;IAED,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC;QACjE,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3D,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ,CAAC,CACtF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,gBAAgB,CAC5C,SAA0D,EAC1D,GAAmB,EACnB,MAAc,EACd,OAAsD;IAEtD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,CAAC,IAAI,CAAC,iEAAiE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1F,OAAO,EAAE,CAAA;KACV;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,EAAC,UAAU,EAAE,YAAY,EAAC,CAAC,CAAA;IACpD,MAAM,iBAAiB,GAAwB;QAC7C,MAAM;QACN,SAAS;QACT,MAAM;QACN,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,YAAY;QAClB,iBAAiB,EAAE,OAAO,EAAE,iBAAiB;KAC9C,CAAA;IAED,6DAA6D;IAC7D,6BAA6B;IAC7B,MAAM,aAAa,GAAG,MAAa,CAAA;IACnC,iBAAiB,CAAC,MAAM,GAAG;QACzB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACtB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;KACxC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YACtD,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC;YACpB,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAEhC,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE;YACrC,GAAG;gBACD,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAA;gBACD,OAAO,QAAQ,CAAA;YACjB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,EAAE,EAAE,CAAwB,CAAA;IAC7B,4BAA4B;IAC5B,8DAA8D;IAE9D,IAAI;QACF,OAAO,MAAM,YAAY,CAAC,iBAAiB,CAAC,CAAA;KAC7C;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClB,OAAO;YACL;gBACE,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,IAAI,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC;aAC7C;SACF,CAAA;KACF;AACH,CAAC;AAiBD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EACjC,KAAK,EACL,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,MAAM,EACN,GAAG,aAAa,EACI;IACpB,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAE5C,uCAAuC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACpC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;QACnB,GAAG,aAAa;QAChB,MAAM;QACN,IAAI;QACJ,IAAI;KACL,CAAC,CACH,CAAA;IAED,mDAAmD;IACnD,IAAI,YAAY,GAAuC,EAAE,CAAA;IAEzD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC9D,MAAM,+BAA+B;IACnC,oCAAoC;IACpC,IAAI,EAAE,QAAQ,KAAK,QAAQ;QAC3B,yBAAyB;QACzB,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK;YACf,uEAAuE;YACvE,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,IAAI,cAAc,CAAC,CAAC,CAAA;IAEhE,IAAI,+BAA+B,EAAE;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAA6B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC/E,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;YAC5B,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,+EAA+E;QAC/E,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,KAAK;aACF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;aAC/B,MAAM,CAAC,aAAa,CAAC;aACrB,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;aACvD,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YAClC,OAAO,wBAAwB,CAAC,EAAC,GAAG,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC1E,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAC7D,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACnC,GAAG,aAAa;oBAChB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACvB,IAAI,EAAE,SAAS;iBAChB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CACL,CAAA;QAED,iFAAiF;QACjF,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC;YACX,GAAG,aAAa;YAChB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACtD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CACH,CACF,CAAA;KACF;IAED,8EAA8E;IAC9E,8EAA8E;IAC9E,yEAAyE;IACzE,yBAAyB;IACzB,MAAM,kCAAkC,GAAG,IAAI,EAAE,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,IAAI,kCAAkC,EAAE;QACtC,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,YAAY,CAAC;YACX,GAAG,aAAa;YAChB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChF,IAAI,EAAE,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;SAC7C,CAAC,CACH,CACF,CAAA;KACF;IAED,8EAA8E;IAC9E,iCAAiC;IACjC,MAAM,oCAAoC,GACxC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAEpE,IAAI,oCAAoC,EAAE;QACxC,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QACvC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAEjE,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;YACtB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;YAC5C,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,IAAI,GAAG,EAAE,CACV,CAAA;QAED,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7B,YAAY,CAAC;YACX,GAAG,aAAa;YAChB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAC,CAAC,CAAC;YACrD,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;SACrC,CAAC,CACH,CACF,CAAA;KACF;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE5E,6DAA6D;IAC7D,uBAAuB;IACvB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAC1C,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;KACvD;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validateDocument.test.d.ts","sourceRoot":"","sources":["../../../src/validateDocument.test.ts"],"names":[],"mappings":""}
|