@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.
Files changed (191) hide show
  1. package/{dist/dts → lib/dts/src}/Rule.d.ts +3 -3
  2. package/lib/dts/src/Rule.d.ts.map +1 -0
  3. package/lib/dts/src/Rule.js +336 -0
  4. package/lib/dts/src/Rule.js.map +1 -0
  5. package/{dist/dts → lib/dts/src}/ValidationError.d.ts +3 -3
  6. package/lib/dts/src/ValidationError.d.ts.map +1 -0
  7. package/lib/dts/src/ValidationError.js +18 -0
  8. package/lib/dts/src/ValidationError.js.map +1 -0
  9. package/{dist/dts → lib/dts/src}/index.d.ts +12 -12
  10. package/lib/dts/src/index.d.ts.map +1 -0
  11. package/lib/dts/src/index.js +7 -0
  12. package/lib/dts/src/index.js.map +1 -0
  13. package/{dist/dts → lib/dts/src}/inferFromSchema.d.ts +3 -3
  14. package/lib/dts/src/inferFromSchema.d.ts.map +1 -0
  15. package/lib/dts/src/inferFromSchema.js +14 -0
  16. package/lib/dts/src/inferFromSchema.js.map +1 -0
  17. package/{dist/dts → lib/dts/src}/inferFromSchemaType.d.ts +4 -4
  18. package/lib/dts/src/inferFromSchemaType.d.ts.map +1 -0
  19. package/lib/dts/src/inferFromSchemaType.js +33 -0
  20. package/lib/dts/src/inferFromSchemaType.js.map +1 -0
  21. package/{dist/dts → lib/dts/src}/util/convertToValidationMarker.d.ts +5 -5
  22. package/lib/dts/src/util/convertToValidationMarker.d.ts.map +1 -0
  23. package/lib/dts/src/util/convertToValidationMarker.js +51 -0
  24. package/lib/dts/src/util/convertToValidationMarker.js.map +1 -0
  25. package/{dist/dts → lib/dts/src}/util/deepEquals.d.ts +5 -5
  26. package/lib/dts/src/util/deepEquals.d.ts.map +1 -0
  27. package/lib/dts/src/util/deepEquals.js +65 -0
  28. package/lib/dts/src/util/deepEquals.js.map +1 -0
  29. package/{dist/dts → lib/dts/src}/util/escapeRegex.d.ts +2 -2
  30. package/lib/dts/src/util/escapeRegex.d.ts.map +1 -0
  31. package/lib/dts/src/util/escapeRegex.js +6 -0
  32. package/lib/dts/src/util/escapeRegex.js.map +1 -0
  33. package/{dist/dts → lib/dts/src}/util/normalizeValidationRules.d.ts +5 -5
  34. package/lib/dts/src/util/normalizeValidationRules.d.ts.map +1 -0
  35. package/lib/dts/src/util/normalizeValidationRules.js +104 -0
  36. package/lib/dts/src/util/normalizeValidationRules.js.map +1 -0
  37. package/{dist/dts → lib/dts/src}/util/normalizeValidationRules.test.d.ts +0 -0
  38. package/lib/dts/src/util/normalizeValidationRules.test.d.ts.map +1 -0
  39. package/lib/dts/src/util/normalizeValidationRules.test.js +150 -0
  40. package/lib/dts/src/util/normalizeValidationRules.test.js.map +1 -0
  41. package/{dist/dts → lib/dts/src}/util/pathToString.d.ts +2 -2
  42. package/lib/dts/src/util/pathToString.d.ts.map +1 -0
  43. package/lib/dts/src/util/pathToString.js +18 -0
  44. package/lib/dts/src/util/pathToString.js.map +1 -0
  45. package/{dist/dts → lib/dts/src}/util/typeString.d.ts +1 -1
  46. package/lib/dts/src/util/typeString.d.ts.map +1 -0
  47. package/lib/dts/src/util/typeString.js +23 -0
  48. package/lib/dts/src/util/typeString.js.map +1 -0
  49. package/{dist/dts → lib/dts/src}/util/typeString.test.d.ts +0 -0
  50. package/lib/dts/src/util/typeString.test.d.ts.map +1 -0
  51. package/lib/dts/src/util/typeString.test.js +24 -0
  52. package/lib/dts/src/util/typeString.test.js.map +1 -0
  53. package/{dist/dts → lib/dts/src}/validateDocument.d.ts +22 -21
  54. package/lib/dts/src/validateDocument.d.ts.map +1 -0
  55. package/lib/dts/src/validateDocument.js +142 -0
  56. package/lib/dts/src/validateDocument.js.map +1 -0
  57. package/{dist/dts → lib/dts/src}/validateDocument.test.d.ts +0 -0
  58. package/lib/dts/src/validateDocument.test.d.ts.map +1 -0
  59. package/lib/dts/src/validateDocument.test.js +703 -0
  60. package/lib/dts/src/validateDocument.test.js.map +1 -0
  61. package/{dist/dts → lib/dts/src}/validators/arrayValidator.d.ts +3 -3
  62. package/lib/dts/src/validators/arrayValidator.d.ts.map +1 -0
  63. package/lib/dts/src/validators/arrayValidator.js +79 -0
  64. package/lib/dts/src/validators/arrayValidator.js.map +1 -0
  65. package/{dist/dts → lib/dts/src}/validators/booleanValidator.d.ts +3 -3
  66. package/lib/dts/src/validators/booleanValidator.d.ts.map +1 -0
  67. package/lib/dts/src/validators/booleanValidator.js +12 -0
  68. package/lib/dts/src/validators/booleanValidator.js.map +1 -0
  69. package/{dist/dts → lib/dts/src}/validators/dateValidator.d.ts +4 -4
  70. package/lib/dts/src/validators/dateValidator.d.ts.map +1 -0
  71. package/lib/dts/src/validators/dateValidator.js +83 -0
  72. package/lib/dts/src/validators/dateValidator.js.map +1 -0
  73. package/{dist/dts → lib/dts/src}/validators/genericValidator.d.ts +3 -3
  74. package/lib/dts/src/validators/genericValidator.d.ts.map +1 -0
  75. package/lib/dts/src/validators/genericValidator.js +93 -0
  76. package/lib/dts/src/validators/genericValidator.js.map +1 -0
  77. package/{dist/dts → lib/dts/src}/validators/numberValidator.d.ts +3 -3
  78. package/lib/dts/src/validators/numberValidator.d.ts.map +1 -0
  79. package/lib/dts/src/validators/numberValidator.js +47 -0
  80. package/lib/dts/src/validators/numberValidator.js.map +1 -0
  81. package/{dist/dts → lib/dts/src}/validators/objectValidator.d.ts +3 -3
  82. package/lib/dts/src/validators/objectValidator.d.ts.map +1 -0
  83. package/lib/dts/src/validators/objectValidator.js +48 -0
  84. package/lib/dts/src/validators/objectValidator.js.map +1 -0
  85. package/{dist/dts → lib/dts/src}/validators/slugValidator.d.ts +8 -8
  86. package/lib/dts/src/validators/slugValidator.d.ts.map +1 -0
  87. package/lib/dts/src/validators/slugValidator.js +83 -0
  88. package/lib/dts/src/validators/slugValidator.js.map +1 -0
  89. package/{dist/dts → lib/dts/src}/validators/stringValidator.d.ts +3 -3
  90. package/lib/dts/src/validators/stringValidator.d.ts.map +1 -0
  91. package/lib/dts/src/validators/stringValidator.js +94 -0
  92. package/lib/dts/src/validators/stringValidator.js.map +1 -0
  93. package/lib/dts/test/array.test.d.ts +2 -0
  94. package/lib/dts/test/array.test.d.ts.map +1 -0
  95. package/lib/dts/test/array.test.js +55 -0
  96. package/lib/dts/test/array.test.js.map +1 -0
  97. package/lib/dts/test/children.test.d.ts +2 -0
  98. package/lib/dts/test/children.test.d.ts.map +1 -0
  99. package/lib/dts/test/children.test.js +70 -0
  100. package/lib/dts/test/children.test.js.map +1 -0
  101. package/lib/dts/test/createSchema.d.ts +6 -0
  102. package/lib/dts/test/createSchema.d.ts.map +1 -0
  103. package/lib/dts/test/createSchema.js +19 -0
  104. package/lib/dts/test/createSchema.js.map +1 -0
  105. package/lib/dts/test/generics.test.d.ts +2 -0
  106. package/lib/dts/test/generics.test.d.ts.map +1 -0
  107. package/lib/dts/test/generics.test.js +60 -0
  108. package/lib/dts/test/generics.test.js.map +1 -0
  109. package/lib/dts/test/infer.test.d.ts +2 -0
  110. package/lib/dts/test/infer.test.d.ts.map +1 -0
  111. package/lib/dts/test/infer.test.js +243 -0
  112. package/lib/dts/test/infer.test.js.map +1 -0
  113. package/lib/dts/test/mocks/mockSanityClient.d.ts +6 -0
  114. package/lib/dts/test/mocks/mockSanityClient.d.ts.map +1 -0
  115. package/lib/dts/test/mocks/mockSanityClient.js +8 -0
  116. package/lib/dts/test/mocks/mockSanityClient.js.map +1 -0
  117. package/lib/dts/test/nullExport.d.ts +3 -0
  118. package/lib/dts/test/nullExport.d.ts.map +1 -0
  119. package/lib/dts/test/nullExport.js +4 -0
  120. package/lib/dts/test/nullExport.js.map +1 -0
  121. package/lib/dts/test/numbers.test.d.ts +2 -0
  122. package/lib/dts/test/numbers.test.d.ts.map +1 -0
  123. package/lib/dts/test/numbers.test.js +57 -0
  124. package/lib/dts/test/numbers.test.js.map +1 -0
  125. package/lib/dts/test/strings.test.d.ts +2 -0
  126. package/lib/dts/test/strings.test.d.ts.map +1 -0
  127. package/lib/dts/test/strings.test.js +100 -0
  128. package/lib/dts/test/strings.test.js.map +1 -0
  129. package/lib/dts/tsconfig.lib.tsbuildinfo +1 -0
  130. package/lib/dts/tsconfig.tsbuildinfo +1 -0
  131. package/lib/index.cjs +1318 -0
  132. package/lib/index.cjs.map +1 -0
  133. package/lib/index.js +1308 -48
  134. package/lib/index.js.map +1 -0
  135. package/package.json +21 -11
  136. package/src/Rule.ts +6 -2
  137. package/src/inferFromSchema.ts +7 -1
  138. package/src/util/convertToValidationMarker.ts +5 -3
  139. package/src/validateDocument.test.ts +22 -23
  140. package/src/validateDocument.ts +3 -1
  141. package/src/validators/dateValidator.ts +4 -4
  142. package/src/validators/slugValidator.ts +3 -3
  143. package/src/validators/stringValidator.ts +2 -1
  144. package/dist/dts/Rule.d.ts.map +0 -1
  145. package/dist/dts/ValidationError.d.ts.map +0 -1
  146. package/dist/dts/getClient.d.ts +0 -3
  147. package/dist/dts/getClient.d.ts.map +0 -1
  148. package/dist/dts/index.d.ts.map +0 -1
  149. package/dist/dts/inferFromSchema.d.ts.map +0 -1
  150. package/dist/dts/inferFromSchemaType.d.ts.map +0 -1
  151. package/dist/dts/util/convertToValidationMarker.d.ts.map +0 -1
  152. package/dist/dts/util/deepEquals.d.ts.map +0 -1
  153. package/dist/dts/util/escapeRegex.d.ts.map +0 -1
  154. package/dist/dts/util/normalizeValidationRules.d.ts.map +0 -1
  155. package/dist/dts/util/normalizeValidationRules.test.d.ts.map +0 -1
  156. package/dist/dts/util/pathToString.d.ts.map +0 -1
  157. package/dist/dts/util/typeString.d.ts.map +0 -1
  158. package/dist/dts/util/typeString.test.d.ts.map +0 -1
  159. package/dist/dts/validateDocument.d.ts.map +0 -1
  160. package/dist/dts/validateDocument.test.d.ts.map +0 -1
  161. package/dist/dts/validators/arrayValidator.d.ts.map +0 -1
  162. package/dist/dts/validators/booleanValidator.d.ts.map +0 -1
  163. package/dist/dts/validators/dateValidator.d.ts.map +0 -1
  164. package/dist/dts/validators/genericValidator.d.ts.map +0 -1
  165. package/dist/dts/validators/numberValidator.d.ts.map +0 -1
  166. package/dist/dts/validators/objectValidator.d.ts.map +0 -1
  167. package/dist/dts/validators/slugValidator.d.ts.map +0 -1
  168. package/dist/dts/validators/stringValidator.d.ts.map +0 -1
  169. package/jest.config.js +0 -5
  170. package/lib/Rule.js +0 -491
  171. package/lib/ValidationError.js +0 -39
  172. package/lib/getClient.js +0 -20
  173. package/lib/inferFromSchema.js +0 -22
  174. package/lib/inferFromSchemaType.js +0 -86
  175. package/lib/util/convertToValidationMarker.js +0 -65
  176. package/lib/util/deepEquals.js +0 -87
  177. package/lib/util/escapeRegex.js +0 -14
  178. package/lib/util/normalizeValidationRules.js +0 -115
  179. package/lib/util/pathToString.js +0 -30
  180. package/lib/util/typeString.js +0 -29
  181. package/lib/validateDocument.js +0 -231
  182. package/lib/validators/arrayValidator.js +0 -123
  183. package/lib/validators/booleanValidator.js +0 -29
  184. package/lib/validators/dateValidator.js +0 -120
  185. package/lib/validators/genericValidator.js +0 -135
  186. package/lib/validators/numberValidator.js +0 -70
  187. package/lib/validators/objectValidator.js +0 -93
  188. package/lib/validators/slugValidator.js +0 -133
  189. package/lib/validators/stringValidator.js +0 -131
  190. package/src/getClient.ts +0 -13
  191. package/tsconfig.json +0 -10
@@ -1,4 +1,4 @@
1
- import { RuleClass } from '@sanity/types';
2
- declare const Rule: RuleClass;
3
- export default Rule;
1
+ import { RuleClass } from '@sanity/types';
2
+ declare const Rule: RuleClass;
3
+ export default Rule;
4
4
  //# sourceMappingURL=Rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rule.d.ts","sourceRoot":"","sources":["../../../src/Rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAUV,MAAM,eAAe,CAAA;AA0DtB,QAAA,MAAM,IAAI,EAAE,SAsWX,CAAA;AAED,eAAe,IAAI,CAAA"}
@@ -0,0 +1,336 @@
1
+ var _a;
2
+ import { cloneDeep, get } from 'lodash';
3
+ import ValidationErrorClass from './ValidationError';
4
+ import escapeRegex from './util/escapeRegex';
5
+ import { convertToValidationMarker } from './util/convertToValidationMarker';
6
+ import pathToString from './util/pathToString';
7
+ import genericValidator from './validators/genericValidator';
8
+ import booleanValidator from './validators/booleanValidator';
9
+ import numberValidator from './validators/numberValidator';
10
+ import stringValidator from './validators/stringValidator';
11
+ import arrayValidator from './validators/arrayValidator';
12
+ import objectValidator from './validators/objectValidator';
13
+ import dateValidator from './validators/dateValidator';
14
+ const typeValidators = {
15
+ Boolean: booleanValidator,
16
+ Number: numberValidator,
17
+ String: stringValidator,
18
+ Array: arrayValidator,
19
+ Object: objectValidator,
20
+ Date: dateValidator,
21
+ };
22
+ const getBaseType = (type) => {
23
+ return type && type.type ? getBaseType(type.type) : type;
24
+ };
25
+ const isFieldRef = (constraint) => {
26
+ if (typeof constraint !== 'object' || !constraint)
27
+ return false;
28
+ return constraint.type === Rule.FIELD_REF;
29
+ };
30
+ const EMPTY_ARRAY = [];
31
+ const FIELD_REF = Symbol('FIELD_REF');
32
+ const ruleConstraintTypes = [
33
+ 'Array',
34
+ 'Boolean',
35
+ 'Date',
36
+ 'Number',
37
+ 'Object',
38
+ 'String',
39
+ ];
40
+ // Note: `RuleClass` and `Rule` are split to fit the current `@sanity/types`
41
+ // setup. Classes are a bit weird in the `@sanity/types` package because classes
42
+ // create an actual javascript class while simultaneously creating a type
43
+ // definition.
44
+ //
45
+ // This implicitly creates two types:
46
+ // 1. the instance type — `Rule` and
47
+ // 2. the static/class type - `RuleClass`
48
+ //
49
+ // The `RuleClass` type contains the static methods and the `Rule` instance
50
+ // contains the instance methods.
51
+ //
52
+ // This package exports the RuleClass as a value without implicitly exporting
53
+ // an instance definition. This should help reminder downstream users to import
54
+ // from the `@sanity/types` package.
55
+ const Rule = (_a = class Rule {
56
+ constructor(typeDef) {
57
+ this._type = undefined;
58
+ this._level = undefined;
59
+ this._required = undefined;
60
+ this._typeDef = undefined;
61
+ this._message = undefined;
62
+ this._rules = [];
63
+ this._fieldRules = undefined;
64
+ // Alias to static method, since we often have access to an _instance_ of a rule but not the actual Rule class
65
+ this.valueOfField = Rule.valueOfField.bind(Rule);
66
+ this._typeDef = typeDef;
67
+ this.reset();
68
+ }
69
+ _mergeRequired(next) {
70
+ if (this._required === 'required' || next._required === 'required')
71
+ return 'required';
72
+ if (this._required === 'optional' || next._required === 'optional')
73
+ return 'optional';
74
+ return undefined;
75
+ }
76
+ error(message) {
77
+ const rule = this.clone();
78
+ rule._level = 'error';
79
+ rule._message = message || undefined;
80
+ return rule;
81
+ }
82
+ warning(message) {
83
+ const rule = this.clone();
84
+ rule._level = 'warning';
85
+ rule._message = message || undefined;
86
+ return rule;
87
+ }
88
+ info(message) {
89
+ const rule = this.clone();
90
+ rule._level = 'info';
91
+ rule._message = message || undefined;
92
+ return rule;
93
+ }
94
+ reset() {
95
+ this._type = this._type || undefined;
96
+ this._rules = (this._rules || []).filter((rule) => rule.flag === 'type');
97
+ this._message = undefined;
98
+ this._required = undefined;
99
+ this._level = 'error';
100
+ this._fieldRules = undefined;
101
+ return this;
102
+ }
103
+ isRequired() {
104
+ return this._required === 'required';
105
+ }
106
+ clone() {
107
+ const rule = new Rule();
108
+ rule._type = this._type;
109
+ rule._message = this._message;
110
+ rule._required = this._required;
111
+ rule._rules = cloneDeep(this._rules);
112
+ rule._level = this._level;
113
+ rule._fieldRules = this._fieldRules;
114
+ rule._typeDef = this._typeDef;
115
+ return rule;
116
+ }
117
+ cloneWithRules(rules) {
118
+ const rule = this.clone();
119
+ const newRules = new Set();
120
+ rules.forEach((curr) => {
121
+ if (curr.flag === 'type') {
122
+ rule._type = curr.constraint;
123
+ }
124
+ newRules.add(curr.flag);
125
+ });
126
+ rule._rules = rule._rules
127
+ .filter((curr) => {
128
+ const disallowDuplicate = ['type', 'uri', 'email'].includes(curr.flag);
129
+ const isDuplicate = newRules.has(curr.flag);
130
+ return !(disallowDuplicate && isDuplicate);
131
+ })
132
+ .concat(rules);
133
+ return rule;
134
+ }
135
+ merge(rule) {
136
+ if (this._type && rule._type && this._type !== rule._type) {
137
+ throw new Error('merge() failed: conflicting types');
138
+ }
139
+ const newRule = this.cloneWithRules(rule._rules);
140
+ newRule._type = this._type || rule._type;
141
+ newRule._message = this._message || rule._message;
142
+ newRule._required = this._mergeRequired(rule);
143
+ newRule._level = this._level === 'error' ? rule._level : this._level;
144
+ return newRule;
145
+ }
146
+ // Validation flag setters
147
+ type(targetType) {
148
+ const type = `${targetType.slice(0, 1).toUpperCase()}${targetType.slice(1)}`;
149
+ if (!ruleConstraintTypes.includes(type)) {
150
+ throw new Error(`Unknown type "${targetType}"`);
151
+ }
152
+ const rule = this.cloneWithRules([{ flag: 'type', constraint: type }]);
153
+ rule._type = type;
154
+ return rule;
155
+ }
156
+ all(children) {
157
+ return this.cloneWithRules([{ flag: 'all', constraint: children }]);
158
+ }
159
+ either(children) {
160
+ return this.cloneWithRules([{ flag: 'either', constraint: children }]);
161
+ }
162
+ // Shared rules
163
+ optional() {
164
+ const rule = this.cloneWithRules([{ flag: 'presence', constraint: 'optional' }]);
165
+ rule._required = 'optional';
166
+ return rule;
167
+ }
168
+ required() {
169
+ const rule = this.cloneWithRules([{ flag: 'presence', constraint: 'required' }]);
170
+ rule._required = 'required';
171
+ return rule;
172
+ }
173
+ custom(fn) {
174
+ return this.cloneWithRules([{ flag: 'custom', constraint: fn }]);
175
+ }
176
+ /**
177
+ * @deprecated use `Rule.custom` instead
178
+ */
179
+ block(fn) {
180
+ return this.cloneWithRules([{ flag: 'custom', constraint: fn }]);
181
+ }
182
+ min(len) {
183
+ return this.cloneWithRules([{ flag: 'min', constraint: len }]);
184
+ }
185
+ max(len) {
186
+ return this.cloneWithRules([{ flag: 'max', constraint: len }]);
187
+ }
188
+ length(len) {
189
+ return this.cloneWithRules([{ flag: 'length', constraint: len }]);
190
+ }
191
+ valid(value) {
192
+ const values = Array.isArray(value) ? value : [value];
193
+ return this.cloneWithRules([{ flag: 'valid', constraint: values }]);
194
+ }
195
+ // Numbers only
196
+ integer() {
197
+ return this.cloneWithRules([{ flag: 'integer' }]);
198
+ }
199
+ precision(limit) {
200
+ return this.cloneWithRules([{ flag: 'precision', constraint: limit }]);
201
+ }
202
+ positive() {
203
+ return this.cloneWithRules([{ flag: 'min', constraint: 0 }]);
204
+ }
205
+ negative() {
206
+ return this.cloneWithRules([{ flag: 'lessThan', constraint: 0 }]);
207
+ }
208
+ greaterThan(num) {
209
+ return this.cloneWithRules([{ flag: 'greaterThan', constraint: num }]);
210
+ }
211
+ lessThan(num) {
212
+ return this.cloneWithRules([{ flag: 'lessThan', constraint: num }]);
213
+ }
214
+ // String only
215
+ uppercase() {
216
+ return this.cloneWithRules([{ flag: 'stringCasing', constraint: 'uppercase' }]);
217
+ }
218
+ lowercase() {
219
+ return this.cloneWithRules([{ flag: 'stringCasing', constraint: 'lowercase' }]);
220
+ }
221
+ regex(pattern, a, b) {
222
+ const name = typeof a === 'string' ? a : a?.name ?? b?.name;
223
+ const invert = typeof a === 'string' ? false : a?.invert ?? b?.invert;
224
+ const constraint = {
225
+ pattern,
226
+ name,
227
+ invert: invert || false,
228
+ };
229
+ return this.cloneWithRules([{ flag: 'regex', constraint }]);
230
+ }
231
+ email() {
232
+ return this.cloneWithRules([{ flag: 'email' }]);
233
+ }
234
+ uri(opts) {
235
+ const optsScheme = opts?.scheme || ['http', 'https'];
236
+ const schemes = Array.isArray(optsScheme) ? optsScheme : [optsScheme];
237
+ if (!schemes.length) {
238
+ throw new Error('scheme must have at least 1 scheme specified');
239
+ }
240
+ const constraint = {
241
+ options: {
242
+ scheme: schemes.map((scheme) => {
243
+ if (!(scheme instanceof RegExp) && typeof scheme !== 'string') {
244
+ throw new Error('scheme must be a RegExp or a String');
245
+ }
246
+ return typeof scheme === 'string' ? new RegExp(`^${escapeRegex(scheme)}$`) : scheme;
247
+ }),
248
+ allowRelative: opts?.allowRelative || false,
249
+ relativeOnly: opts?.relativeOnly || false,
250
+ allowCredentials: opts?.allowCredentials || false,
251
+ },
252
+ };
253
+ return this.cloneWithRules([{ flag: 'uri', constraint }]);
254
+ }
255
+ // Array only
256
+ unique() {
257
+ return this.cloneWithRules([{ flag: 'unique' }]);
258
+ }
259
+ // Objects only
260
+ reference() {
261
+ return this.cloneWithRules([{ flag: 'reference' }]);
262
+ }
263
+ fields(rules) {
264
+ if (this._type !== 'Object') {
265
+ throw new Error('fields() can only be called on an object type');
266
+ }
267
+ const rule = this.cloneWithRules([]);
268
+ rule._fieldRules = rules;
269
+ return rule;
270
+ }
271
+ assetRequired() {
272
+ const base = getBaseType(this._typeDef);
273
+ let assetType;
274
+ if (base && ['image', 'file'].includes(base.name)) {
275
+ assetType = base.name === 'image' ? 'Image' : 'File';
276
+ }
277
+ else {
278
+ assetType = 'Asset';
279
+ }
280
+ return this.cloneWithRules([{ flag: 'assetRequired', constraint: { assetType } }]);
281
+ }
282
+ async validate(value, context) {
283
+ if (!context) {
284
+ throw new Error('missing context');
285
+ }
286
+ const valueIsEmpty = value === null || value === undefined;
287
+ // Short-circuit on optional, empty fields
288
+ if (valueIsEmpty && this._required === 'optional') {
289
+ return EMPTY_ARRAY;
290
+ }
291
+ const rules =
292
+ // Run only the _custom_ functions if the rule is not set to required or optional
293
+ this._required === undefined && valueIsEmpty
294
+ ? this._rules.filter((curr) => curr.flag === 'custom')
295
+ : this._rules;
296
+ const validators = (this._type && typeValidators[this._type]) || genericValidator;
297
+ const results = await Promise.all(rules.map(async (curr) => {
298
+ if (curr.flag === undefined) {
299
+ throw new Error('Invalid rule, did not contain "flag"-property');
300
+ }
301
+ const validator = validators[curr.flag];
302
+ if (!validator) {
303
+ const forType = this._type ? `type "${this._type}"` : 'rule without declared type';
304
+ throw new Error(`Validator for flag "${curr.flag}" not found for ${forType}`);
305
+ }
306
+ let specConstraint = 'constraint' in curr ? curr.constraint : null;
307
+ if (isFieldRef(specConstraint)) {
308
+ specConstraint = get(context.parent, specConstraint.path);
309
+ }
310
+ let result;
311
+ try {
312
+ result = await validator(specConstraint, value, this._message, context);
313
+ }
314
+ catch (err) {
315
+ const errorFromException = new ValidationErrorClass(`${pathToString(context.path)}: Exception occurred while validating value: ${err.message}`);
316
+ return convertToValidationMarker(errorFromException, 'error', context);
317
+ }
318
+ return convertToValidationMarker(result, this._level, context);
319
+ }));
320
+ return results.flat();
321
+ }
322
+ },
323
+ _a.FIELD_REF = FIELD_REF,
324
+ _a.array = (def) => new _a(def).type('Array'),
325
+ _a.object = (def) => new _a(def).type('Object'),
326
+ _a.string = (def) => new _a(def).type('String'),
327
+ _a.number = (def) => new _a(def).type('Number'),
328
+ _a.boolean = (def) => new _a(def).type('Boolean'),
329
+ _a.dateTime = (def) => new _a(def).type('Date'),
330
+ _a.valueOfField = (path) => ({
331
+ type: FIELD_REF,
332
+ path,
333
+ }),
334
+ _a);
335
+ export default Rule;
336
+ //# sourceMappingURL=Rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rule.js","sourceRoot":"","sources":["../../../src/Rule.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ValidationErrorClass } from '@sanity/types';
2
- declare const ValidationError: ValidationErrorClass;
3
- export default ValidationError;
1
+ import { ValidationErrorClass } from '@sanity/types';
2
+ declare const ValidationError: ValidationErrorClass;
3
+ export default ValidationError;
4
4
  //# sourceMappingURL=ValidationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../../../src/ValidationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,oBAAoB,EACrB,MAAM,eAAe,CAAA;AAGtB,QAAA,MAAM,eAAe,EAAE,oBAoBtB,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -0,0 +1,18 @@
1
+ // Follows the same pattern as Rule and RuleClass. @see Rule
2
+ const ValidationError = class ValidationError {
3
+ constructor(message, options = {}) {
4
+ this.message = message;
5
+ this.paths = options.paths || [];
6
+ this.children = options.children;
7
+ this.operation = options.operation;
8
+ }
9
+ cloneWithMessage(msg) {
10
+ return new ValidationError(msg, {
11
+ paths: this.paths,
12
+ children: this.children,
13
+ operation: this.operation,
14
+ });
15
+ }
16
+ };
17
+ export default ValidationError;
18
+ //# sourceMappingURL=ValidationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../../src/ValidationError.ts"],"names":[],"mappings":"AAQA,4DAA4D;AAC5D,MAAM,eAAe,GAAyB,MAAM,eAAe;IAMjE,YAAY,OAAe,EAAE,UAAkC,EAAE;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACpC,CAAC;IAED,gBAAgB,CAAC,GAAW;QAC1B,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1,13 +1,13 @@
1
- import RuleClass from './Rule';
2
- import validateDocument from './validateDocument';
3
- import inferFromSchema from './inferFromSchema';
4
- import inferFromSchemaType from './inferFromSchemaType';
5
- declare const _default: {
6
- Rule: import("@sanity/types/dist/dts").RuleClass;
7
- validateDocument: typeof validateDocument;
8
- inferFromSchema: typeof inferFromSchema;
9
- inferFromSchemaType: typeof inferFromSchemaType;
10
- };
11
- export default _default;
12
- export { RuleClass as Rule, validateDocument, inferFromSchema, inferFromSchemaType };
1
+ import RuleClass from './Rule';
2
+ import validateDocument from './validateDocument';
3
+ import inferFromSchema from './inferFromSchema';
4
+ import inferFromSchemaType from './inferFromSchemaType';
5
+ declare const _default: {
6
+ Rule: import("@sanity/types").RuleClass;
7
+ validateDocument: typeof validateDocument;
8
+ inferFromSchema: typeof inferFromSchema;
9
+ inferFromSchemaType: typeof inferFromSchemaType;
10
+ };
11
+ export default _default;
12
+ export { RuleClass as Rule, validateDocument, inferFromSchema, inferFromSchemaType };
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,QAAQ,CAAA;AAC9B,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;;;;;;;AAEvD,wBAAwF;AACxF,OAAO,EAAC,SAAS,IAAI,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import RuleClass from './Rule';
2
+ import validateDocument from './validateDocument';
3
+ import inferFromSchema from './inferFromSchema';
4
+ import inferFromSchemaType from './inferFromSchemaType';
5
+ export default { Rule: RuleClass, validateDocument, inferFromSchema, inferFromSchemaType };
6
+ export { RuleClass as Rule, validateDocument, inferFromSchema, inferFromSchemaType };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,QAAQ,CAAA;AAC9B,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;AACjD,OAAO,eAAe,MAAM,mBAAmB,CAAA;AAC/C,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,eAAe,EAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAC,CAAA;AACxF,OAAO,EAAC,SAAS,IAAI,IAAI,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Schema } from '@sanity/types';
2
- declare function inferFromSchema(schema: Schema): Schema;
3
- export default inferFromSchema;
1
+ import { Schema } from '@sanity/types';
2
+ declare function inferFromSchema(schema: Schema): Schema;
3
+ export default inferFromSchema;
4
4
  //# sourceMappingURL=inferFromSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFromSchema.d.ts","sourceRoot":"","sources":["../../../src/inferFromSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAA;AAIpC,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY/C;AAED,eAAe,eAAe,CAAA"}
@@ -0,0 +1,14 @@
1
+ import inferFromSchemaType from './inferFromSchemaType';
2
+ // Note: Mutates schema. Refactor when @sanity/schema supports middlewares
3
+ function inferFromSchema(schema) {
4
+ const typeNames = schema.getTypeNames();
5
+ typeNames.forEach((typeName) => {
6
+ const schemaType = schema.get(typeName);
7
+ if (schemaType) {
8
+ inferFromSchemaType(schemaType);
9
+ }
10
+ });
11
+ return schema;
12
+ }
13
+ export default inferFromSchema;
14
+ //# sourceMappingURL=inferFromSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFromSchema.js","sourceRoot":"","sources":["../../../src/inferFromSchema.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,uBAAuB,CAAA;AAEvD,0EAA0E;AAC1E,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;IAEvC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEvC,IAAI,UAAU,EAAE;YACd,mBAAmB,CAAC,UAAU,CAAC,CAAA;SAChC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED,eAAe,eAAe,CAAA"}
@@ -1,5 +1,5 @@
1
- import { Schema, SchemaType } from '@sanity/types';
2
- declare function inferFromSchemaType(typeDef: SchemaType, _schema: Schema, _visited?: Set<SchemaType>): SchemaType;
3
- declare function inferFromSchemaType(typeDef: SchemaType): SchemaType;
4
- export default inferFromSchemaType;
1
+ import { Schema, SchemaType } from '@sanity/types';
2
+ declare function inferFromSchemaType(typeDef: SchemaType, _schema: Schema, _visited?: Set<SchemaType>): SchemaType;
3
+ declare function inferFromSchemaType(typeDef: SchemaType): SchemaType;
4
+ export default inferFromSchemaType;
5
5
  //# sourceMappingURL=inferFromSchemaType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFromSchemaType.d.ts","sourceRoot":"","sources":["../../../src/inferFromSchemaType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,eAAe,CAAA;AAoChD,iBAAS,mBAAmB,CAC1B,OAAO,EAAE,UAAU,EAEnB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,GACzB,UAAU,CAAA;AAEb,iBAAS,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAAA;AAM7D,eAAe,mBAAmB,CAAA"}
@@ -0,0 +1,33 @@
1
+ import normalizeValidationRules from './util/normalizeValidationRules';
2
+ function traverse(typeDef, visited) {
3
+ if (visited.has(typeDef)) {
4
+ return;
5
+ }
6
+ visited.add(typeDef);
7
+ typeDef.validation = normalizeValidationRules(typeDef);
8
+ if ('fields' in typeDef) {
9
+ for (const field of typeDef.fields) {
10
+ traverse(field.type, visited);
11
+ }
12
+ }
13
+ if ('of' in typeDef) {
14
+ for (const candidate of typeDef.of) {
15
+ traverse(candidate, visited);
16
+ }
17
+ }
18
+ // eslint-disable-next-line no-warning-comments
19
+ // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet
20
+ if (typeDef.annotations) {
21
+ // eslint-disable-next-line no-warning-comments
22
+ // @ts-expect-error TODO (eventually): `annotations` does not exist on the SchemaType yet
23
+ for (const annotation of typeDef.annotations) {
24
+ traverse(annotation, visited);
25
+ }
26
+ }
27
+ }
28
+ function inferFromSchemaType(typeDef) {
29
+ traverse(typeDef, new Set());
30
+ return typeDef;
31
+ }
32
+ export default inferFromSchemaType;
33
+ //# sourceMappingURL=inferFromSchemaType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferFromSchemaType.js","sourceRoot":"","sources":["../../../src/inferFromSchemaType.ts"],"names":[],"mappings":"AACA,OAAO,wBAAwB,MAAM,iCAAiC,CAAA;AAEtE,SAAS,QAAQ,CAAC,OAAmB,EAAE,OAAwB;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QACxB,OAAM;KACP;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpB,OAAO,CAAC,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAEtD,IAAI,QAAQ,IAAI,OAAO,EAAE;QACvB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;YAClC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;SAC9B;KACF;IAED,IAAI,IAAI,IAAI,OAAO,EAAE;QACnB,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,EAAE,EAAE;YAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;SAC7B;KACF;IAED,+CAA+C;IAC/C,yFAAyF;IACzF,IAAI,OAAO,CAAC,WAAW,EAAE;QACvB,+CAA+C;QAC/C,yFAAyF;QACzF,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE;YAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;SAC9B;KACF;AACH,CAAC;AAWD,SAAS,mBAAmB,CAAC,OAAmB;IAC9C,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IAC5B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,6 +1,6 @@
1
- import { ValidationMarker, ValidationError, ValidationContext } from '@sanity/types';
2
- declare type ValidationErrorLike = Pick<ValidationError, 'message'> & Partial<ValidationError>;
3
- export declare function isNonNullable<T>(t: T): t is NonNullable<T>;
4
- export default function convertToValidationMarker(validatorResult: true | true[] | string | string[] | ValidationError | ValidationError[] | ValidationErrorLike | ValidationErrorLike[], level: 'error' | 'warning' | 'info' | undefined, context: ValidationContext): ValidationMarker[];
5
- export {};
1
+ import { ValidationMarker, ValidationError, ValidationContext } from '@sanity/types';
2
+ declare type ValidationErrorLike = Pick<ValidationError, 'message'> & Partial<ValidationError>;
3
+ export declare function isNonNullable<T>(t: T): t is NonNullable<T>;
4
+ export declare function convertToValidationMarker(validatorResult: true | true[] | string | string[] | ValidationError | ValidationError[] | ValidationErrorLike | ValidationErrorLike[], level: 'error' | 'warning' | 'info' | undefined, context: ValidationContext): ValidationMarker[];
5
+ export {};
6
6
  //# sourceMappingURL=convertToValidationMarker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertToValidationMarker.d.ts","sourceRoot":"","sources":["../../../../src/util/convertToValidationMarker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAC,MAAM,eAAe,CAAA;AAIlF,aAAK,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;AAEtF,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAE1D;AAED,wBAAgB,yBAAyB,CACvC,eAAe,EACX,IAAI,GACJ,IAAI,EAAE,GACN,MAAM,GACN,MAAM,EAAE,GACR,eAAe,GACf,eAAe,EAAE,GACjB,mBAAmB,GACnB,mBAAmB,EAAE,EACzB,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC/C,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,EAAE,CA6DpB"}
@@ -0,0 +1,51 @@
1
+ import ValidationErrorClass from '../ValidationError';
2
+ import pathToString from '../util/pathToString';
3
+ export function isNonNullable(t) {
4
+ return t !== null || t !== undefined;
5
+ }
6
+ export function convertToValidationMarker(validatorResult, level, context) {
7
+ if (!context) {
8
+ throw new Error('missing context');
9
+ }
10
+ if (validatorResult === true)
11
+ return [];
12
+ if (Array.isArray(validatorResult)) {
13
+ return validatorResult
14
+ .flatMap((child) => convertToValidationMarker(child, level, context))
15
+ .filter(isNonNullable);
16
+ }
17
+ if (typeof validatorResult === 'string') {
18
+ return convertToValidationMarker(new ValidationErrorClass(validatorResult), level, context);
19
+ }
20
+ if (!(validatorResult instanceof ValidationErrorClass)) {
21
+ // in order to accept the `ValidationErrorLike`, it at least needs to have
22
+ // a `message` in the object
23
+ if (typeof validatorResult?.message !== 'string') {
24
+ throw new Error(`${pathToString(context.path)}: Validator must return 'true' if valid or an error message as a string on errors`);
25
+ }
26
+ // this is the occurs when an object is returned that wasn't created with the
27
+ // `ValidationErrorClass`. in this case, we want to convert it to a class
28
+ return convertToValidationMarker(new ValidationErrorClass(validatorResult.message, validatorResult), level, context);
29
+ }
30
+ const results = [];
31
+ // the validator result does not include any item-level relative paths,
32
+ // then just return the top-level path with the validation result
33
+ if (!validatorResult.paths?.length) {
34
+ return [
35
+ {
36
+ level: level || 'error',
37
+ item: validatorResult,
38
+ path: context.path || [],
39
+ },
40
+ ];
41
+ }
42
+ // if the validator result did include item-level relative paths, then for
43
+ // each item-level relative path, create a validation marker that concatenates
44
+ // the relative path with the path from the validation context
45
+ return results.concat(validatorResult.paths.map((path) => ({
46
+ path: (context.path || []).concat(path),
47
+ level: level || 'error',
48
+ item: validatorResult,
49
+ })));
50
+ }
51
+ //# sourceMappingURL=convertToValidationMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convertToValidationMarker.js","sourceRoot":"","sources":["../../../../src/util/convertToValidationMarker.ts"],"names":[],"mappings":"AACA,OAAO,oBAAoB,MAAM,oBAAoB,CAAA;AACrD,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAI/C,MAAM,UAAU,aAAa,CAAI,CAAI;IACnC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,eAQyB,EACzB,KAA+C,EAC/C,OAA0B;IAE1B,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;KACnC;IAED,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,EAAE,CAAA;IAEvC,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;QAClC,OAAO,eAAe;aACnB,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;aACpE,MAAM,CAAC,aAAa,CAAC,CAAA;KACzB;IAED,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE;QACvC,OAAO,yBAAyB,CAAC,IAAI,oBAAoB,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;KAC5F;IAED,IAAI,CAAC,CAAC,eAAe,YAAY,oBAAoB,CAAC,EAAE;QACtD,0EAA0E;QAC1E,4BAA4B;QAC5B,IAAI,OAAO,eAAe,EAAE,OAAO,KAAK,QAAQ,EAAE;YAChD,MAAM,IAAI,KAAK,CACb,GAAG,YAAY,CACb,OAAO,CAAC,IAAI,CACb,mFAAmF,CACrF,CAAA;SACF;QAED,6EAA6E;QAC7E,yEAAyE;QACzE,OAAO,yBAAyB,CAC9B,IAAI,oBAAoB,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,EAClE,KAAK,EACL,OAAO,CACR,CAAA;KACF;IAED,MAAM,OAAO,GAAuB,EAAE,CAAA;IAEtC,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE;QAClC,OAAO;YACL;gBACE,KAAK,EAAE,KAAK,IAAI,OAAO;gBACvB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;aACzB;SACF,CAAA;KACF;IAED,0EAA0E;IAC1E,8EAA8E;IAC9E,8DAA8D;IAC9D,OAAO,OAAO,CAAC,MAAM,CACnB,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACvC,KAAK,EAAE,KAAK,IAAI,OAAO;QACvB,IAAI,EAAE,eAAe;KACtB,CAAC,CAAC,CACJ,CAAA;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
- /**
2
- * Modified version of fast-deep-equal (https://github.com/epoberezkin/fast-deep-equal)
3
- * MIT-licensed, copyright (c) 2017 Evgeny Poberezkin
4
- **/
5
- export default function deepEquals(a: unknown, b: unknown): boolean;
1
+ /**
2
+ * Modified version of fast-deep-equal (https://github.com/epoberezkin/fast-deep-equal)
3
+ * MIT-licensed, copyright (c) 2017 Evgeny Poberezkin
4
+ **/
5
+ export default function deepEquals(a: unknown, b: unknown): boolean;
6
6
  //# sourceMappingURL=deepEquals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepEquals.d.ts","sourceRoot":"","sources":["../../../../src/util/deepEquals.ts"],"names":[],"mappings":"AAAA;;;IAGI;AAOJ,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAkElE"}